diff --git a/core/src/main/java/com/cloud/storage/resource/StorageSubsystemCommandHandlerBase.java b/core/src/main/java/com/cloud/storage/resource/StorageSubsystemCommandHandlerBase.java index 1a66034ce77..7044490c720 100644 --- a/core/src/main/java/com/cloud/storage/resource/StorageSubsystemCommandHandlerBase.java +++ b/core/src/main/java/com/cloud/storage/resource/StorageSubsystemCommandHandlerBase.java @@ -44,6 +44,7 @@ import com.cloud.agent.api.to.DataTO; import com.cloud.agent.api.to.DiskTO; import com.cloud.storage.DataStoreRole; import com.cloud.storage.Volume; +import com.google.gson.Gson; public class StorageSubsystemCommandHandlerBase implements StorageSubsystemCommandHandler { private static final Logger s_logger = Logger.getLogger(StorageSubsystemCommandHandlerBase.class); @@ -55,6 +56,7 @@ public class StorageSubsystemCommandHandlerBase implements StorageSubsystemComma @Override public Answer handleStorageCommands(StorageSubSystemCommand command) { + logCommand(command); if (command instanceof CopyCommand) { return this.execute((CopyCommand)command); } else if (command instanceof CreateObjectCommand) { @@ -170,4 +172,12 @@ public class StorageSubsystemCommandHandlerBase implements StorageSubsystemComma return processor.dettachVolume(cmd); } } + + private void logCommand(Command cmd) { + try { + s_logger.debug(String.format("Executing command %s: [%s].", cmd.getClass().getSimpleName(), new Gson().toJson(cmd))); + } catch (Exception e) { + s_logger.debug(String.format("Executing command %s.", cmd.getClass().getSimpleName())); + } + } } diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareHostService.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareHostService.java index ea97a6e8d54..d9ee3c5f5ca 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareHostService.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareHostService.java @@ -29,4 +29,6 @@ public interface VmwareHostService { VmwareHypervisorHost getHyperHost(VmwareContext context, Command cmd); String getWorkerName(VmwareContext context, Command cmd, int workerSequence, DatastoreMO dsMo) throws Exception; + + String createLogMessageException(Throwable e, Command command); } diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java index 1451a60e622..cad4e263482 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java @@ -21,7 +21,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStreamWriter; -import java.rmi.RemoteException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -85,7 +84,6 @@ import com.cloud.storage.Volume; import com.cloud.storage.template.OVAProcessor; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; -import com.cloud.utils.StringUtils; import com.cloud.utils.Ternary; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.Script; @@ -96,6 +94,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { private String _nfsVersion; + @Override public boolean execute(VmwareHostService hostService, CreateEntityDownloadURLCommand cmd) { DataTO data = cmd.getData(); @@ -296,13 +295,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { return new PrimaryStorageDownloadAnswer(templateUuidName, 0); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - String msg = "Unable to execute PrimaryStorageDownloadCommand due to exception"; - s_logger.error(msg, e); - return new PrimaryStorageDownloadAnswer(msg); + return new PrimaryStorageDownloadAnswer(hostService.createLogMessageException(e, cmd)); } } @@ -380,22 +373,14 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { try { if (workerVm != null) { - // detach volume and destroy worker vm workerVm.detachAllDisksAndDestroy(); } } catch (Throwable e) { - s_logger.warn("Failed to destroy worker VM: " + workerVMName); + s_logger.warn(String.format("Failed to destroy worker VM [%s] due to: [%s].", workerVMName, e.getMessage()), e); } } } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - - details = "BackupSnapshotCommand exception: " + StringUtils.getExceptionStackInfo(e); - return new BackupSnapshotAnswer(cmd, false, details, snapshotBackupUuid, true); + return new BackupSnapshotAnswer(cmd, false, hostService.createLogMessageException(e, cmd), snapshotBackupUuid, true); } return new BackupSnapshotAnswer(cmd, success, details, snapshotBackupUuid, true); @@ -433,14 +418,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { return new CreatePrivateTemplateAnswer(cmd, true, null, result.first(), result.third(), result.second(), cmd.getUniqueName(), ImageFormat.OVA); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - - details = "CreatePrivateTemplateFromVolumeCommand exception: " + StringUtils.getExceptionStackInfo(e); - return new CreatePrivateTemplateAnswer(cmd, false, details); + return new CreatePrivateTemplateAnswer(cmd, false, hostService.createLogMessageException(e, cmd)); } } @@ -461,14 +439,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { return new CreatePrivateTemplateAnswer(cmd, true, null, result.first(), result.third(), result.second(), uniqeName, ImageFormat.OVA); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - - details = "CreatePrivateTemplateFromSnapshotCommand exception: " + StringUtils.getExceptionStackInfo(e); - return new CreatePrivateTemplateAnswer(cmd, false, details); + return new CreatePrivateTemplateAnswer(cmd, false, hostService.createLogMessageException(e, cmd)); } } @@ -504,13 +475,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { } return new CopyVolumeAnswer(cmd, true, null, result.first(), result.second()); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - String msg = "Unable to execute CopyVolumeCommand due to exception"; - s_logger.error(msg, e); - return new CopyVolumeAnswer(cmd, false, "CopyVolumeCommand failed due to exception: " + StringUtils.getExceptionStackInfo(e), null, null); + return new CopyVolumeAnswer(cmd, false, hostService.createLogMessageException(e, cmd), null, null); } } @@ -543,12 +508,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { success = true; } } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - details = "CreateVolumeFromSnapshotCommand exception: " + StringUtils.getExceptionStackInfo(e); + details = hostService.createLogMessageException(e, cmd); } return new CreateVolumeFromSnapshotAnswer(cmd, success, details, newVolumeName); @@ -946,8 +906,12 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { Script command = new Script(false, "mkdir", _timeout, s_logger); command.add("-p"); command.add(exportPath); - if (command.execute() != null) { - throw new Exception("unable to prepare snapshot backup directory"); + + String result = command.execute(); + if (result != null) { + String errorMessage = String.format("Unable to prepare snapshot backup directory: [%s] due to [%s].", exportPath, result); + s_logger.error(errorMessage); + throw new Exception(errorMessage); } } } @@ -968,7 +932,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { vmMo.cloneFromCurrentSnapshot(workerVmName, 0, 4, volumeDeviceInfo.second(), VmwareHelper.getDiskDeviceDatastore(volumeDeviceInfo.first()), vmxFormattedVirtualHardwareVersion); clonedVm = vmMo.getRunningHost().findVmOnHyperHost(workerVmName); if (clonedVm == null) { - String msg = "Unable to create dummy VM to export volume. volume path: " + volumePath; + String msg = String.format("Unable to create dummy VM to export volume. volume path: [%s].", volumePath); s_logger.error(msg); throw new Exception(msg); } @@ -1033,7 +997,6 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { vmMo.removeSnapshot(exportName, false); } if (workerVm != null) { - //detach volume and destroy worker vm workerVm.detachAllDisksAndDestroy(); } } diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java index 0dfb465b122..cce875ea6bc 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -16,7 +16,6 @@ // under the License. package com.cloud.hypervisor.vmware.resource; -import static com.cloud.utils.HumanReadableJson.getHumanReadableBytesJson; import static com.cloud.utils.NumbersUtil.toHumanReadableSize; import java.io.File; @@ -364,6 +363,7 @@ import com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec; public class VmwareResource implements StoragePoolResource, ServerResource, VmwareHostService, VirtualRouterDeployer { private static final Logger s_logger = Logger.getLogger(VmwareResource.class); public static final String VMDK_EXTENSION = ".vmdk"; + private static final String EXECUTING_RESOURCE_COMMAND = "Executing resource command %s: [%s]."; private static final Random RANDOM = new Random(System.nanoTime()); @@ -452,10 +452,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa @Override public Answer executeRequest(Command cmd) { - - if (s_logger.isTraceEnabled()) - s_logger.trace("Begin executeRequest(), cmd: " + cmd.getClass().getSimpleName()); - + logCommand(cmd); Answer answer = null; NDC.push(getCommandLogTitle(cmd)); try { @@ -1006,10 +1003,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(CheckNetworkCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CheckNetworkCommand " + _gson.toJson(cmd)); - } - // TODO setup portgroup for private network needs to be done here now return new CheckNetworkAnswer(cmd, true, "Network Setup check by names is done"); } @@ -1018,9 +1011,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa if (cmd.isForVpc()) { return VPCNetworkUsage(cmd); } - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource NetworkUsageCommand " + _gson.toJson(cmd)); - } + if (cmd.getOption() != null && cmd.getOption().equals("create")) { String result = networkUsage(cmd.getPrivateIP(), "create", null); NetworkUsageAnswer answer = new NetworkUsageAnswer(cmd, result, 0L, 0L); @@ -1263,10 +1254,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private PlugNicAnswer execute(PlugNicCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource PlugNicCommand " + _gson.toJson(cmd)); - } - getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME); VmwareContext context = getServiceContext(); try { @@ -1347,10 +1334,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private ReplugNicAnswer execute(ReplugNicCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ReplugNicCommand " + _gson.toJson(cmd)); - } - getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME); VmwareContext context = getServiceContext(); try { @@ -1427,10 +1410,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private UnPlugNicAnswer execute(UnPlugNicCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource UnPlugNicCommand " + _gson.toJson(cmd)); - } - VmwareContext context = getServiceContext(); try { VmwareHypervisorHost hyperHost = getHyperHost(context); @@ -1671,14 +1650,15 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa s_logger.debug("Ping command port, " + privateIp + ":" + cmdPort); } + String errorMessage = "Can not ping System VM [%s], due to: [%s]."; try { String result = connect(cmd.getName(), privateIp, cmdPort); if (result != null) { - s_logger.error("Can not ping System vm " + vmName + "due to:" + result); - return new CheckSshAnswer(cmd, "Can not ping System vm " + vmName + "due to:" + result); + s_logger.error(String.format(errorMessage, vmName, result)); + return new CheckSshAnswer(cmd, String.format(errorMessage, vmName, result)); } } catch (Exception e) { - s_logger.error("Can not ping System vm " + vmName + "due to exception"); + s_logger.error(String.format(errorMessage, vmName, e.getMessage()), e); return new CheckSshAnswer(cmd, e); } @@ -1731,7 +1711,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected ScaleVmAnswer execute(ScaleVmCommand cmd) { - VmwareContext context = getServiceContext(); VirtualMachineTO vmSpec = cmd.getVirtualMachine(); try { @@ -1771,8 +1750,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa throw new Exception("Unable to execute ScaleVmCommand"); } } catch (Exception e) { - s_logger.error("Unexpected exception: ", e); - return new ScaleVmAnswer(cmd, false, "Unable to execute ScaleVmCommand due to " + e.toString()); + s_logger.error(String.format("ScaleVmCommand failed due to: [%s].", VmwareHelper.getExceptionMessage(e)), e); + return new ScaleVmAnswer(cmd, false, String.format("Unable to execute ScaleVmCommand due to: [%s].", e.toString())); } return new ScaleVmAnswer(cmd, true, null); } @@ -1835,10 +1814,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected StartAnswer execute(StartCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource StartCommand: " + getHumanReadableBytesJson(_gson.toJson(cmd))); - } - VirtualMachineTO vmSpec = cmd.getVirtualMachine(); boolean vmAlreadyExistsInVcenter = false; @@ -1984,7 +1959,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } } - boolean vmFolderExists = dsRootVolumeIsOn.folderExists(String.format("[%s]", dsRootVolumeIsOn.getName()), vmNameOnVcenter); String vmxFileFullPath = dsRootVolumeIsOn.searchFileInSubFolders(vmNameOnVcenter + ".vmx", false, VmwareManager.s_vmwareSearchExcludeFolder.value()); + boolean vmFolderExists = dsRootVolumeIsOn.folderExists(String.format("[%s]", dsRootVolumeIsOn.getName()), vmNameOnVcenter); + String vmxFileFullPath = dsRootVolumeIsOn.searchFileInSubFolders(vmNameOnVcenter + ".vmx", false, VmwareManager.s_vmwareSearchExcludeFolder.value()); if (vmFolderExists && vmxFileFullPath != null) { // VM can be registered only if .vmx is present. registerVm(vmNameOnVcenter, dsRootVolumeIsOn); vmMo = hyperHost.findVmOnHyperHost(vmInternalCSName); @@ -2502,33 +2478,23 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return startAnswer; } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "StartCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.warn(msg, e); - StartAnswer startAnswer = new StartAnswer(cmd, msg); + StartAnswer startAnswer = new StartAnswer(cmd, createLogMessageException(e, cmd)); if (vmAlreadyExistsInVcenter) { startAnswer.setContextParam("stopRetry", "true"); } - // Since VM start failed, if there was an existing VM in a different cluster that was unregistered, register it back. if (existingVmName != null && existingVmFileInfo != null) { - s_logger.debug("Since VM start failed, registering back an existing VM: " + existingVmName + " that was unregistered"); + s_logger.debug(String.format("Since VM start failed, registering back an existing VM: [%s] that was unregistered.", existingVmName)); try { DatastoreFile fileInDatastore = new DatastoreFile(existingVmFileInfo.getVmPathName()); DatastoreMO existingVmDsMo = new DatastoreMO(dcMo.getContext(), dcMo.findDatastore(fileInDatastore.getDatastoreName())); registerVm(existingVmName, existingVmDsMo); } catch (Exception ex) { - String message = "Failed to register an existing VM: " + existingVmName + " due to " + VmwareHelper.getExceptionMessage(ex); - s_logger.warn(message, ex); + String message = String.format("Failed to register an existing VM: [%s] due to [%s].", existingVmName, VmwareHelper.getExceptionMessage(ex)); + s_logger.error(message, ex); } } - return startAnswer; - } finally { } } @@ -3935,10 +3901,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(ReadyCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ReadyCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareHypervisorHost hyperHost = getHyperHost(context); @@ -3954,10 +3916,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(GetHostStatsCommand cmd) { - if (s_logger.isTraceEnabled()) { - s_logger.trace("Executing resource GetHostStatsCommand: " + _gson.toJson(cmd)); - } - VmwareContext context = getServiceContext(); VmwareHypervisorHost hyperHost = getHyperHost(context); @@ -3966,17 +3924,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa try { HostStatsEntry entry = getHyperHostStats(hyperHost); if (entry != null) { + s_logger.debug(String.format("Host stats response from hypervisor is: [%s].", _gson.toJson(entry))); entry.setHostId(cmd.getHostId()); answer = new GetHostStatsAnswer(cmd, entry); } } catch (Exception e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "Unable to execute GetHostStatsCommand due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); + s_logger.error(createLogMessageException(e, cmd), e); } if (s_logger.isTraceEnabled()) { @@ -3987,10 +3940,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(GetVmStatsCommand cmd) { - if (s_logger.isTraceEnabled()) { - s_logger.trace("Executing resource GetVmStatsCommand: " + _gson.toJson(cmd)); - } - HashMap vmStatsMap = null; try { @@ -4008,24 +3957,15 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } } - if (vmNames != null) { + if (CollectionUtils.isNotEmpty(vmNames)) { vmStatsMap = getVmStats(vmNames); } } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - s_logger.error("Unable to execute GetVmStatsCommand due to : " + VmwareHelper.getExceptionMessage(e), e); + createLogMessageException(e, cmd); } - Answer answer = new GetVmStatsAnswer(cmd, vmStatsMap); - - if (s_logger.isTraceEnabled()) { - s_logger.trace("Report GetVmStatsAnswer: " + _gson.toJson(answer)); - } - return answer; + s_logger.debug(String.format("VM Stats Map is: [%s].", _gson.toJson(vmStatsMap))); + return new GetVmStatsAnswer(cmd, vmStatsMap); } protected Answer execute(GetVmDiskStatsCommand cmd) { @@ -4138,15 +4078,17 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } diskStats.add(new VmDiskStatsEntry(vmName, VmwareHelper.getDiskDeviceFileName(disk), writeReq, readReq, writeBytes, readBytes)); } - if (diskStats.size() > 0) { + if (CollectionUtils.isNotEmpty(diskStats)) { vmStatsMap.put(vmName, diskStats); } } - if (vmStatsMap.size() > 0) { + + s_logger.debug(String.format("VM Disks Maps is: [%s].", _gson.toJson(vmStatsMap))); + if (MapUtils.isNotEmpty(vmStatsMap)) { return new GetVmDiskStatsAnswer(cmd, "", cmd.getHostName(), vmStatsMap); } } catch (Exception e) { - s_logger.error("Unable to execute GetVmDiskStatsCommand due to " + VmwareHelper.getExceptionMessage(e), e); + s_logger.error(String.format("Unable to execute GetVmDiskStatsCommand due to [%s].", VmwareHelper.getExceptionMessage(e)), e); } return new GetVmDiskStatsAnswer(cmd, null, null, null); } @@ -4192,40 +4134,28 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } } } + s_logger.debug(String.format("Volume Stats Entry is: [%s].", _gson.toJson(statEntry))); return new GetVolumeStatsAnswer(cmd, "", statEntry); } catch (Exception e) { - s_logger.info("VOLSTAT GetVolumeStatsCommand failed " + e.getMessage()); + s_logger.error(String.format("VOLSTAT GetVolumeStatsCommand failed due to [%s].", VmwareHelper.getExceptionMessage(e)), e); } return new GetVolumeStatsAnswer(cmd, "", null); } protected Answer execute(CheckHealthCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CheckHealthCommand: " + _gson.toJson(cmd)); - } - try { VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); if (hyperHost.isHyperHostConnected()) { return new CheckHealthAnswer(cmd, true); } } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - s_logger.error("Unable to execute CheckHealthCommand due to " + VmwareHelper.getExceptionMessage(e), e); + createLogMessageException(e, cmd); } return new CheckHealthAnswer(cmd, false); } protected Answer execute(StopCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource StopCommand: " + _gson.toJson(cmd)); - } - // In the stop command, we're passed in the name of the VM as seen by cloudstack, // i.e., i-x-y. This is the internal VM name. VmwareContext context = getServiceContext(); @@ -4270,28 +4200,16 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } finally { } } else { - String msg = "VM " + cmd.getVmName() + " is no longer on the expected host in vSphere"; s_logger.info(msg); return new StopAnswer(cmd, msg, true); } } catch (Exception e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "StopCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg); - return new StopAnswer(cmd, msg, false); + return new StopAnswer(cmd, createLogMessageException(e, cmd), false); } } protected Answer execute(RebootRouterCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource RebootRouterCommand: " + _gson.toJson(cmd)); - } - RebootAnswer answer = (RebootAnswer) execute((RebootCommand) cmd); if (answer.getResult()) { @@ -4307,10 +4225,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(RebootCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource RebootCommand: " + getHumanReadableBytesJson(_gson.toJson(cmd))); - } - boolean toolsInstallerMounted = false; VirtualMachineMO vmMo = null; VmwareContext context = getServiceContext(); @@ -4349,21 +4263,14 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return new RebootAnswer(cmd, msg, false); } } catch (Exception e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "RebootCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg); - return new RebootAnswer(cmd, msg, false); + return new RebootAnswer(cmd, createLogMessageException(e, cmd), false); } finally { if (toolsInstallerMounted) { try { vmMo.mountToolsInstaller(); - s_logger.debug("Successfully re-mounted vmware tools installer for :[" + cmd.getVmName() + "]"); + s_logger.debug(String.format("Successfully re-mounted vmware tools installer for :[%s].", cmd.getVmName())); } catch (Exception e) { - s_logger.warn("Unabled to re-mount vmware tools installer for :[" + cmd.getVmName() + "]"); + s_logger.error(String.format("Unabled to re-mount vmware tools installer for: [%s].", cmd.getVmName()), e); } } } @@ -4397,10 +4304,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(CheckVirtualMachineCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CheckVirtualMachineCommand: " + _gson.toJson(cmd)); - } - final String vmName = cmd.getVmName(); PowerState powerState = PowerState.PowerUnknown; Integer vncPort = null; @@ -4419,26 +4322,13 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - s_logger.error("Unexpected exception: " + VmwareHelper.getExceptionMessage(e), e); - + createLogMessageException(e, cmd); return new CheckVirtualMachineAnswer(cmd, powerState, vncPort); } } protected Answer execute(PrepareForMigrationCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource PrepareForMigrationCommand: " + getHumanReadableBytesJson(_gson.toJson(cmd))); - } - VirtualMachineTO vm = cmd.getVirtualMachine(); - if (s_logger.isDebugEnabled()) { - s_logger.debug("Preparing host for migrating " + vm); - } - final String vmName = vm.getName(); try { VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); @@ -4485,25 +4375,11 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } return new PrepareForMigrationAnswer(cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "Unexpected exception " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new PrepareForMigrationAnswer(cmd, msg); + return new PrepareForMigrationAnswer(cmd, createLogMessageException(e, cmd)); } } protected Answer execute(MigrateVmToPoolCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info(String.format("Executing MigrateVmToPoolCommand %s", cmd.getVmName())); - if (s_logger.isDebugEnabled()) { - s_logger.debug("MigrateVmToPoolCommand: " + _gson.toJson(cmd)); - } - } - final String vmName = cmd.getVmName(); VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); @@ -4643,10 +4519,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(MigrateCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource MigrateCommand: " + getHumanReadableBytesJson(_gson.toJson(cmd))); - } - final String vmName = cmd.getVmName(); try { VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); @@ -4673,22 +4545,11 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return new MigrateAnswer(cmd, true, "migration succeeded", null); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "MigrationCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.warn(msg, e); - return new MigrateAnswer(cmd, false, msg, null); + return new MigrateAnswer(cmd, false, createLogMessageException(e, cmd), null); } } protected Answer execute(MigrateWithStorageCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource MigrateWithStorageCommand: " + getHumanReadableBytesJson(_gson.toJson(cmd))); - } - final VirtualMachineTO vmTo = cmd.getVirtualMachine(); final List> volToFiler = cmd.getVolumeToFilerAsList(); final String targetHost = cmd.getTargetHost(); @@ -4868,10 +4729,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa StorageFilerTO poolTo = cmd.getPool(); VolumeObjectTO volumeObjectTO = (VolumeObjectTO)cmd.getSrcData(); - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource MigrateVolumeCommand: " + _gson.toJson(cmd)); - } - String vmName = cmd.getAttachedVmName(); VirtualMachineMO vmMo = null; @@ -5069,10 +4926,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(ModifyStoragePoolCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ModifyStoragePoolCommand: " + _gson.toJson(cmd)); - } - try { VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); StorageFilerTO pool = cmd.getPool(); @@ -5149,24 +5002,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return answer; } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - - invalidateServiceContext(); - } - - String msg = "ModifyStoragePoolCommand failed due to " + VmwareHelper.getExceptionMessage(e); - - s_logger.error(msg, e); - - return new Answer(cmd, false, msg); + return new Answer(cmd, false, createLogMessageException(e, cmd)); } } protected Answer execute(GetStoragePoolCapabilitiesCommand cmd) { - try { - VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); HostMO host = (HostMO) hyperHost; @@ -5193,18 +5034,9 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return answer; } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - - invalidateServiceContext(); - } - - String msg = "GetStoragePoolCapabilitiesCommand failed due to " + VmwareHelper.getExceptionMessage(e); - - s_logger.error(msg, e); GetStoragePoolCapabilitiesAnswer answer = new GetStoragePoolCapabilitiesAnswer(cmd); answer.setResult(false); - answer.setDetails(msg); + answer.setDetails(createLogMessageException(e, cmd)); return answer; } } @@ -5232,10 +5064,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(DeleteStoragePoolCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource DeleteStoragePoolCommand: " + _gson.toJson(cmd)); - } - try { if (cmd.getRemoveDatastore()) { _storageProcessor.handleDatastoreAndVmdkDetach(cmd, cmd.getDetails().get(DeleteStoragePoolCommand.DATASTORE_NAME), @@ -5260,7 +5088,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } StorageFilerTO pool = cmd.getPool(); - String msg = "DeleteStoragePoolCommand (pool: " + pool.getHost() + ", path: " + pool.getPath() + ") failed due to " + VmwareHelper.getExceptionMessage(e); + String msg = String.format("DeleteStoragePoolCommand (pool: [%s], path: [%s]) failed due to [%s].", pool.getHost(), pool.getPath(), VmwareHelper.getExceptionMessage(e)); + s_logger.error(msg, e); return new Answer(cmd, false, msg); } @@ -5275,10 +5104,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected AttachIsoAnswer execute(AttachIsoCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource AttachIsoCommand: " + _gson.toJson(cmd)); - } - try { VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext()); VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(cmd.getVmName()); @@ -5346,15 +5171,9 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa invalidateServiceContext(); } - if (cmd.isAttach()) { - String msg = "AttachIsoCommand(attach) failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new AttachIsoAnswer(cmd, false, msg); - } else { - String msg = "AttachIsoCommand(detach) failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.warn(msg, e); - return new AttachIsoAnswer(cmd, false, msg); - } + String message = String.format("AttachIsoCommand(%s) failed due to [%s].", cmd.isAttach()? "attach" : "detach", VmwareHelper.getExceptionMessage(e)); + s_logger.error(message, e); + return new AttachIsoAnswer(cmd, false, message); } } @@ -5394,10 +5213,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(ValidateSnapshotCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ValidateSnapshotCommand: " + _gson.toJson(cmd)); - } - // the command is no longer available String expectedSnapshotBackupUuid = null; String actualSnapshotBackupUuid = null; @@ -5407,10 +5222,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(ManageSnapshotCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ManageSnapshotCommand: " + _gson.toJson(cmd)); - } - long snapshotId = cmd.getSnapshotId(); /* @@ -5439,24 +5250,13 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(BackupSnapshotCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource BackupSnapshotCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME); return mgr.getStorageManager().execute(this, cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String details = "BackupSnapshotCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(details, e); - return new BackupSnapshotAnswer(cmd, false, details, null, true); + return new BackupSnapshotAnswer(cmd, false, createLogMessageException(e, cmd), null, true); } } @@ -5467,7 +5267,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return mgr.getStorageManager().execute(this, cmd); } catch (Exception e) { - e.printStackTrace(); + createLogMessageException(e, cmd); return new CreateVMSnapshotAnswer(cmd, false, ""); } } @@ -5479,7 +5279,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return mgr.getStorageManager().execute(this, cmd); } catch (Exception e) { - e.printStackTrace(); + createLogMessageException(e, cmd); return new DeleteVMSnapshotAnswer(cmd, false, ""); } } @@ -5490,16 +5290,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME); return mgr.getStorageManager().execute(this, cmd); } catch (Exception e) { - e.printStackTrace(); + createLogMessageException(e, cmd); return new RevertToVMSnapshotAnswer(cmd, false, ""); } } protected Answer execute(CreateVolumeFromSnapshotCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CreateVolumeFromSnapshotCommand: " + _gson.toJson(cmd)); - } - String details = null; boolean success = false; String newVolumeName = UUID.randomUUID().toString(); @@ -5509,23 +5305,13 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME); return mgr.getStorageManager().execute(this, cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - details = "CreateVolumeFromSnapshotCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(details, e); + details = createLogMessageException(e, cmd); } return new CreateVolumeFromSnapshotAnswer(cmd, success, details, newVolumeName); } protected Answer execute(CreatePrivateTemplateFromVolumeCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CreatePrivateTemplateFromVolumeCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME); @@ -5533,14 +5319,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return mgr.getStorageManager().execute(this, cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String details = "CreatePrivateTemplateFromVolumeCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(details, e); - return new CreatePrivateTemplateAnswer(cmd, false, details); + return new CreatePrivateTemplateAnswer(cmd, false, createLogMessageException(e, cmd)); } } @@ -5549,31 +5328,16 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(CreatePrivateTemplateFromSnapshotCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CreatePrivateTemplateFromSnapshotCommand: " + _gson.toJson(cmd)); - } - try { VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME); return mgr.getStorageManager().execute(this, cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String details = "CreatePrivateTemplateFromSnapshotCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(details, e); - return new CreatePrivateTemplateAnswer(cmd, false, details); + return new CreatePrivateTemplateAnswer(cmd, false, createLogMessageException(e, cmd)); } } protected Answer execute(GetStorageStatsCommand cmd) { - if (s_logger.isTraceEnabled()) { - s_logger.trace("Executing resource GetStorageStatsCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareHypervisorHost hyperHost = getHyperHost(context); @@ -5596,10 +5360,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa long used = capacity - free; - if (s_logger.isDebugEnabled()) { - s_logger.debug("Datastore summary info, storageId: " + cmd.getStorageId() + ", localPath: " + cmd.getLocalPath() + ", poolType: " + cmd.getPooltype() - + ", capacity: " + toHumanReadableSize(capacity) + ", free: " + toHumanReadableSize(free) + ", used: " + toHumanReadableSize(used)); - } + s_logger.debug(String.format("Datastore summary info: [storageId: %s, ], localPath: %s, poolType: %s, capacity: %s, free: %s, used: %s].", cmd.getStorageId(), + cmd.getLocalPath(), cmd.getPooltype(), toHumanReadableSize(capacity), toHumanReadableSize(free), toHumanReadableSize(used))); if (capacity <= 0) { s_logger.warn("Something is wrong with vSphere NFS datastore, rebooting ESX(ESXi) host should help"); @@ -5607,8 +5369,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return new GetStorageStatsAnswer(cmd, capacity, used); } else { - String msg = "Could not find datastore for GetStorageStatsCommand storageId : " + cmd.getStorageId() + ", localPath: " + cmd.getLocalPath() + ", poolType: " - + cmd.getPooltype(); + String msg = String.format("Could not find datastore for GetStorageStatsCommand: [storageId: %s, localPath: %s, poolType: %s].", + cmd.getStorageId(), cmd.getLocalPath(), cmd.getPooltype()); s_logger.error(msg); return new GetStorageStatsAnswer(cmd, msg); @@ -5619,18 +5381,13 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa invalidateServiceContext(); } - String msg = "Unable to execute GetStorageStatsCommand(storageId : " + cmd.getStorageId() + ", localPath: " + cmd.getLocalPath() + ", poolType: " + cmd.getPooltype() - + ") due to " + VmwareHelper.getExceptionMessage(e); + String msg = String.format("Unable to execute GetStorageStatsCommand(storageId : [%s], localPath: [%s], poolType: [%s]) due to [%s]", cmd.getStorageId(), cmd.getLocalPath(), cmd.getPooltype(), VmwareHelper.getExceptionMessage(e)); s_logger.error(msg, e); return new GetStorageStatsAnswer(cmd, msg); } } protected Answer execute(GetVncPortCommand cmd) { - if (s_logger.isTraceEnabled()) { - s_logger.trace("Executing resource GetVncPortCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareHypervisorHost hyperHost = getHyperHost(context); @@ -5657,38 +5414,19 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } return new GetVncPortAnswer(cmd, portInfo.first(), portInfo.second()); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "GetVncPortCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new GetVncPortAnswer(cmd, msg); + return new GetVncPortAnswer(cmd, createLogMessageException(e, cmd)); } } protected Answer execute(SetupCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource SetupCommand: " + _gson.toJson(cmd)); - } - return new SetupAnswer(cmd, false); } protected Answer execute(MaintainCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource MaintainCommand: " + _gson.toJson(cmd)); - } - return new MaintainAnswer(cmd, "Put host in maintaince"); } protected Answer execute(PingTestCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource PingTestCommand: " + _gson.toJson(cmd)); - } - String controlIp = cmd.getRouterIp(); if (controlIp != null) { String args = " -c 1 -n -q " + cmd.getPrivateIp(); @@ -5729,27 +5467,15 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(CheckOnHostCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CheckOnHostCommand: " + _gson.toJson(cmd)); - } - return new CheckOnHostAnswer(cmd, null, "Not Implmeneted"); } protected Answer execute(ModifySshKeysCommand cmd) { - //do not log the command contents for this command. do NOT log the ssh keys - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ModifySshKeysCommand."); - } - + s_logger.debug(String.format("Executing resource command %s.", cmd.getClass().getSimpleName())); return new Answer(cmd); } protected Answer execute(GetVmIpAddressCommand cmd) { - if (s_logger.isTraceEnabled()) { - s_logger.trace("Executing resource command GetVmIpAddressCommand: " + _gson.toJson(cmd)); - } - String details = "Unable to find IP Address of VM. "; String vmName = cmd.getVmName(); boolean result = false; @@ -5783,11 +5509,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa s_logger.info(details); } } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - details += "Encountered exception : " + VmwareHelper.getExceptionMessage(e); + createLogMessageException(e, cmd); + details = String.format("%s. Encountered exception: [%s].", details, VmwareHelper.getExceptionMessage(e)); s_logger.error(details); } @@ -5800,23 +5523,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa @Override public PrimaryStorageDownloadAnswer execute(PrimaryStorageDownloadCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource PrimaryStorageDownloadCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME); return (PrimaryStorageDownloadAnswer) mgr.getStorageManager().execute(this, cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "PrimaryStorageDownloadCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new PrimaryStorageDownloadAnswer(msg); + return new PrimaryStorageDownloadAnswer(createLogMessageException(e, cmd)); } } @@ -5829,10 +5541,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } protected Answer execute(UnregisterVMCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource UnregisterVMCommand: " + _gson.toJson(cmd)); - } - VmwareContext context = getServiceContext(); VmwareHypervisorHost hyperHost = getHyperHost(context); try { @@ -5859,14 +5567,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return new Answer(cmd, true, msg); } } catch (Exception e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "UnregisterVMCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg); - return new Answer(cmd, false, msg); + return new Answer(cmd, false, createLogMessageException(e, cmd)); } } @@ -5880,8 +5581,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa * @return */ protected Answer execute(UnregisterNicCommand cmd) { - s_logger.info("Executing resource UnregisterNicCommand: " + _gson.toJson(cmd)); - if (_guestTrafficInfo == null) { return new Answer(cmd, false, "No Guest Traffic Info found, unable to determine where to clean up"); } @@ -5912,14 +5611,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } return new Answer(cmd, true, "Unregistered resources for NIC " + cmd.getNicUuid()); } catch (Exception e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "UnregisterVMCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg); - return new Answer(cmd, false, msg); + return new Answer(cmd, false, createLogMessageException(e, cmd)); } } @@ -5975,23 +5667,12 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa @Override public CopyVolumeAnswer execute(CopyVolumeCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource CopyVolumeCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = getServiceContext(); VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME); return (CopyVolumeAnswer) mgr.getStorageManager().execute(this, cmd); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(); - } - - String msg = "CopyVolumeCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new CopyVolumeAnswer(cmd, false, msg, null, null); + return new CopyVolumeAnswer(cmd, false, createLogMessageException(e, cmd), null, null); } } @@ -6681,7 +6362,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa for (final Long value : values) { sum += value; } - double avg = sum / values.size(); + double avg = sum / (values.size() * 1f); if (series.getId().getCounterId() == rxPerfCounterInfo.getKey()) { networkReadKBs = avg; } @@ -7105,10 +6786,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa @Override public Answer execute(DestroyCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource DestroyCommand to evict template from storage pool: " + getHumanReadableBytesJson(_gson.toJson(cmd))); - } - try { VmwareContext context = getServiceContext(null); VmwareHypervisorHost hyperHost = getHyperHost(context, null); @@ -7132,14 +6809,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa return new Answer(cmd, true, "Success"); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - invalidateServiceContext(null); - } - - String msg = "DestroyCommand failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new Answer(cmd, false, msg); + return new Answer(cmd, false, createLogMessageException(e, cmd)); } } @@ -7458,10 +7128,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private Answer execute(GetUnmanagedInstancesCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource GetUnmanagedInstancesCommand " + _gson.toJson(cmd)); - } - VmwareContext context = getServiceContext(); HashMap unmanagedInstances = new HashMap<>(); try { @@ -7498,18 +7164,18 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private Answer execute(PrepareUnmanageVMInstanceCommand cmd) { - s_logger.debug("Verify VMware instance: " + cmd.getInstanceName() + " is available before unmanaging VM"); VmwareContext context = getServiceContext(); VmwareHypervisorHost hyperHost = getHyperHost(context); String instanceName = cmd.getInstanceName(); try { + s_logger.debug(String.format("Verify if VMware instance: [%s] is available before unmanaging VM.", cmd.getInstanceName())); + ManagedObjectReference dcMor = hyperHost.getHyperHostDatacenter(); DatacenterMO dataCenterMo = new DatacenterMO(getServiceContext(), dcMor); VirtualMachineMO vm = dataCenterMo.findVm(instanceName); if (vm == null) { - return new PrepareUnmanageVMInstanceAnswer(cmd, false, "Cannot find VM with name " + instanceName + - " in datacenter " + dataCenterMo.getName()); + return new PrepareUnmanageVMInstanceAnswer(cmd, false, String.format("Cannot find VM with name [%s] in datacenter [%s].", instanceName, dataCenterMo.getName())); } } catch (Exception e) { s_logger.error("Error trying to verify if VM to unmanage exists", e); @@ -7795,9 +7461,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } private Answer execute(ValidateVcenterDetailsCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource ValidateVcenterDetailsCommand " + _gson.toJson(cmd)); - } String vCenterServerAddress = cmd.getvCenterServerAddress(); VmwareContext context = getServiceContext(); @@ -7837,4 +7500,25 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa } return windowInterval; } + + @Override + public String createLogMessageException(Throwable e, Command command) { + if (e instanceof RemoteException) { + s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context."); + invalidateServiceContext(); + } + + String message = String.format("%s failed due to [%s].", command.getClass().getSimpleName(), VmwareHelper.getExceptionMessage(e)); + s_logger.error(message, e); + + return message; + } + + private void logCommand(Command cmd) { + try { + s_logger.debug(String.format(EXECUTING_RESOURCE_COMMAND, cmd.getClass().getSimpleName(), _gson.toJson(cmd))); + } catch (Exception e) { + s_logger.error(String.format("Failed to log command %s due to: [%s].", cmd.getClass().getSimpleName(), e.getMessage()), e); + } + } } \ No newline at end of file diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java index 936ca15a4a5..44bcbf31e1a 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java @@ -47,6 +47,7 @@ import com.cloud.hypervisor.vmware.mo.VmwareHostType; import com.cloud.hypervisor.vmware.mo.VmwareHypervisorHost; import com.cloud.hypervisor.vmware.mo.VmwareHypervisorHostNetworkSummary; import com.cloud.hypervisor.vmware.util.VmwareContext; +import com.cloud.hypervisor.vmware.util.VmwareHelper; import com.cloud.serializer.GsonHelper; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -96,9 +97,7 @@ public class VmwareSecondaryStorageResourceHandler implements SecondaryStorageRe try { Answer answer; NDC.push(getCommandLogTitle(cmd)); - - if (s_logger.isDebugEnabled()) - s_logger.debug("Executing " + _gson.toJson(cmd)); + logCommand(cmd); if (cmd instanceof PrimaryStorageDownloadCommand) { answer = execute((PrimaryStorageDownloadCommand)cmd); @@ -145,6 +144,14 @@ public class VmwareSecondaryStorageResourceHandler implements SecondaryStorageRe } } + private void logCommand(Command cmd) { + try { + s_logger.debug(String.format("Executing command: [%s].", _gson.toJson(cmd))); + } catch (Exception e) { + s_logger.debug(String.format("Executing command: [%s].", cmd.getClass().getSimpleName())); + } + } + protected Answer execute(CreateEntityDownloadURLCommand cmd) { boolean success = _storageMgr.execute(this, cmd); if (success) { @@ -311,4 +318,12 @@ public class VmwareSecondaryStorageResourceHandler implements SecondaryStorageRe public String getMountPoint(String storageUrl, String nfsVersion) { return _resource.getRootDir(storageUrl, nfsVersion); } + + @Override + public String createLogMessageException(Throwable e, Command command) { + String message = String.format("%s failed due to [%s].", command.getClass().getSimpleName(), VmwareHelper.getExceptionMessage(e)); + s_logger.error(message, e); + + return message; + } } diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java index c0aaf0ef751..dab7a74da1c 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java @@ -302,7 +302,7 @@ public class VmwareStorageProcessor implements StorageProcessor { return answer; } catch (Exception ex) { - s_logger.debug(ex.getMessage()); + s_logger.error(String.format("Command %s failed due to: [%s].", cmd.getClass().getSimpleName(), ex.getMessage()), ex); throw new CloudRuntimeException(ex.getMessage()); } @@ -313,8 +313,8 @@ public class VmwareStorageProcessor implements StorageProcessor { if (extents != null) { for (HostUnresolvedVmfsExtent extent : extents) { - s_logger.debug("extent devicePath=" + extent.getDevicePath() + ", ordinal=" + extent.getOrdinal() - + ", reason=" + extent.getReason() + ", isHeadExtent=" + extent.isIsHeadExtent()); + s_logger.debug(String.format("HostUnresolvedVmfsExtent details: [devicePath: %s, ordinal: %s, reason: %s, isHeadExtent: %s].", extent.getDevicePath(), + extent.getOrdinal(), extent.getReason(), extent.isIsHeadExtent())); String extentDevicePath = extent.getDevicePath(); @@ -380,6 +380,7 @@ public class VmwareStorageProcessor implements StorageProcessor { * Returns the (potentially new) name of the VMDK file. */ private String cleanUpDatastore(Command cmd, HostDatastoreSystemMO hostDatastoreSystem, DatastoreMO dsMo, Map details) throws Exception { + s_logger.debug(String.format("Executing clean up in DataStore: [%s].", dsMo.getName())); boolean expandDatastore = Boolean.parseBoolean(details.get(DiskTO.EXPAND_DATASTORE)); // A volume on the storage system holding a template uses a minimum hypervisor snapshot reserve value. @@ -488,11 +489,10 @@ public class VmwareStorageProcessor implements StorageProcessor { private Pair copyTemplateFromSecondaryToPrimary(VmwareHypervisorHost hyperHost, DatastoreMO datastoreMo, String secondaryStorageUrl, String templatePathAtSecondaryStorage, String templateName, String templateUuid, boolean createSnapshot, String nfsVersion, String configuration) throws Exception { - s_logger.info("Executing copyTemplateFromSecondaryToPrimary. secondaryStorage: " + secondaryStorageUrl + ", templatePathAtSecondaryStorage: " + - templatePathAtSecondaryStorage + ", templateName: " + templateName + ", configuration: " + configuration); - String secondaryMountPoint = mountService.getMountPoint(secondaryStorageUrl, nfsVersion); - s_logger.info("Secondary storage mount point: " + secondaryMountPoint); + + s_logger.info(String.format("Init copy of template [name: %s, path in secondary storage: %s, configuration: %s] in secondary storage [url: %s, mount point: %s] to primary storage.", + templateName, templatePathAtSecondaryStorage, configuration, secondaryStorageUrl, secondaryMountPoint)); String srcOVAFileName = VmwareStorageLayoutHelper.getTemplateOnSecStorageFilePath(secondaryMountPoint, templatePathAtSecondaryStorage, templateName, @@ -525,9 +525,7 @@ public class VmwareStorageProcessor implements StorageProcessor { } VmConfigInfo vAppConfig; - if (s_logger.isDebugEnabled()) { - s_logger.debug(String.format("Deploying OVF template %s with configuration %s", templateName, configuration)); - } + s_logger.debug(String.format("Deploying OVF template %s with configuration %s.", templateName, configuration)); hyperHost.importVmFromOVF(srcFileName, templateUuid, datastoreMo, "thin", configuration); VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(templateUuid); if (vmMo == null) { @@ -720,15 +718,7 @@ public class VmwareStorageProcessor implements StorageProcessor { return new CopyCmdAnswer(newTemplate); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - String msg = "Unable to copy template to primary storage due to exception:" + VmwareHelper.getExceptionMessage(e); - - s_logger.error(msg, e); - - return new CopyCmdAnswer(msg); + return new CopyCmdAnswer(hostService.createLogMessageException(e, cmd)); } finally { if (dsMo != null && managedStoragePoolName != null) { @@ -818,7 +808,7 @@ public class VmwareStorageProcessor implements StorageProcessor { VirtualMachineMO existingVm = dcMo.findVm(vmName); if (volume.getDeviceId().equals(0L)) { if (existingVm != null) { - s_logger.info("Found existing VM " + vmName + " before cloning from template, destroying it"); + s_logger.info(String.format("Found existing VM wth name [%s] before cloning from template, destroying it", vmName)); existingVm.detachAllDisksAndDestroy(); } s_logger.info("ROOT Volume from deploy-as-is template, cloning template"); @@ -890,14 +880,7 @@ public class VmwareStorageProcessor implements StorageProcessor { } return new CopyCmdAnswer(newVol); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - hostService.invalidateServiceContext(null); - } - - String msg = "clone volume from base image failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new CopyCmdAnswer(e.toString()); + return new CopyCmdAnswer(hostService.createLogMessageException(e, cmd)); } } @@ -1074,13 +1057,7 @@ public class VmwareStorageProcessor implements StorageProcessor { newVolume.setPath(result.second()); return new CopyCmdAnswer(newVolume); } catch (Throwable t) { - if (t instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - String msg = "Unable to execute CopyVolumeCommand due to exception"; - s_logger.error(msg, t); - return new CopyCmdAnswer("copy volume secondary to primary failed due to exception: " + VmwareHelper.getExceptionMessage(t)); + return new CopyCmdAnswer(hostService.createLogMessageException(t, cmd)); } } @@ -1135,7 +1112,6 @@ public class VmwareStorageProcessor implements StorageProcessor { vmMo.removeSnapshot(exportName, false); } if (workerVm != null) { - //detach volume and destroy worker vm workerVm.detachAllDisksAndDestroy(); } } @@ -1162,13 +1138,7 @@ public class VmwareStorageProcessor implements StorageProcessor { newVolume.setPath(result.first() + File.separator + result.second()); return new CopyCmdAnswer(newVolume); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - String msg = "Unable to execute CopyVolumeCommand due to exception"; - s_logger.error(msg, e); - return new CopyCmdAnswer("copy volume from primary to secondary failed due to exception: " + VmwareHelper.getExceptionMessage(e)); + return new CopyCmdAnswer(hostService.createLogMessageException(e, cmd)); } } @@ -1345,14 +1315,7 @@ public class VmwareStorageProcessor implements StorageProcessor { return new CopyCmdAnswer(newTemplate); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - - details = "create template from volume exception: " + VmwareHelper.getExceptionMessage(e); - return new CopyCmdAnswer(details); + return new CopyCmdAnswer(hostService.createLogMessageException(e, cmd)); } finally { try { if (volume.getVmName() == null && workerVmMo != null) { @@ -1780,15 +1743,7 @@ public class VmwareStorageProcessor implements StorageProcessor { return new CopyCmdAnswer(newTemplate); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpected exception ", e); - - details = "create template from snapshot exception: " + VmwareHelper.getExceptionMessage(e); - - return new CopyCmdAnswer(details); + return new CopyCmdAnswer(hostService.createLogMessageException(e, cmd)); } } @@ -1804,8 +1759,11 @@ public class VmwareStorageProcessor implements StorageProcessor { Script command = new Script(false, "mkdir", _timeout, s_logger); command.add("-p"); command.add(exportPath); - if (command.execute() != null) { - throw new Exception("unable to prepare snapshot backup directory"); + String result = command.execute(); + if (result != null) { + String errorMessage = String.format("Unable to prepare snapshot backup directory: [%s] due to [%s].", exportPath, result); + s_logger.error(errorMessage); + throw new Exception(errorMessage); } } } @@ -1835,8 +1793,8 @@ public class VmwareStorageProcessor implements StorageProcessor { } vmMo = clonedVm; } - vmMo.exportVm(exportPath, exportName, false, false); + vmMo.exportVm(exportPath, exportName, false, false); return new Pair<>(diskDevice, disks); } finally { if (clonedVm != null) { @@ -1921,6 +1879,7 @@ public class VmwareStorageProcessor implements StorageProcessor { hasOwnerVm = true; } + s_logger.debug(String.format("Executing backup snapshot with UUID [%s] to secondary storage.", snapshotUuid)); backupResult = backupSnapshotToSecondaryStorage(context, vmMo, hyperHost, destSnapshot.getPath(), srcSnapshot.getVolume().getPath(), snapshotUuid, secondaryStorageUrl, prevSnapshotUuid, prevBackupUuid, hostService.getWorkerName(context, cmd, 1, null), _nfsVersion); @@ -2009,24 +1968,16 @@ public class VmwareStorageProcessor implements StorageProcessor { try { if (workerVm != null) { - // detach volume and destroy worker vm workerVm.detachAllDisksAndDestroy(); } } catch (Throwable e) { - s_logger.warn("Failed to destroy worker VM: " + workerVMName); + s_logger.warn(String.format("Failed to destroy worker VM [%s] due to: [%s]", workerVMName, e.getMessage()), e); } } return answer; } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - - details = "backup snapshot exception: " + VmwareHelper.getExceptionMessage(e); - return new CopyCmdAnswer(details); + return new CopyCmdAnswer(hostService.createLogMessageException(e, cmd)); } } @@ -2226,23 +2177,9 @@ public class VmwareStorageProcessor implements StorageProcessor { return answer; } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - - hostService.invalidateServiceContext(null); - } - - String msg = ""; - - if (isAttach) { - msg += "Failed to attach volume: "; - } - else { - msg += "Failed to detach volume: "; - } - - s_logger.error(msg + e.getMessage(), e); - + String msg = String.format("Failed to %s volume!", isAttach? "attach" : "detach"); + s_logger.error(msg, e); + hostService.createLogMessageException(e, cmd); // Sending empty error message - too many duplicate errors in UI return new AttachAnswer(""); } @@ -2468,17 +2405,9 @@ public class VmwareStorageProcessor implements StorageProcessor { hostService.invalidateServiceContext(null); } - if (isAttach) { - String msg = "AttachIsoCommand(attach) failed due to " + VmwareHelper.getExceptionMessage(e); - msg = msg + " Also check if your guest os is a supported version"; - s_logger.error(msg, e); - return new AttachAnswer(msg); - } else { - String msg = "AttachIsoCommand(detach) failed due to " + VmwareHelper.getExceptionMessage(e); - msg = msg + " Also check if your guest os is a supported version"; - s_logger.warn(msg, e); - return new AttachAnswer(msg); - } + String message = String.format("AttachIsoCommand(%s) failed due to: [%s]. Also check if your guest os is a supported version", isAttach? "attach" : "detach", VmwareHelper.getExceptionMessage(e)); + s_logger.error(message, e); + return new AttachAnswer(message); } } @@ -2558,14 +2487,7 @@ public class VmwareStorageProcessor implements StorageProcessor { } return new CreateObjectAnswer(newVol); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - hostService.invalidateServiceContext(null); - } - - String msg = "create volume failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new CreateObjectAnswer(e.toString()); + return new CreateObjectAnswer(hostService.createLogMessageException(e, cmd)); } } @@ -2588,10 +2510,6 @@ public class VmwareStorageProcessor implements StorageProcessor { @Override public Answer deleteVolume(DeleteCommand cmd) { - if (s_logger.isInfoEnabled()) { - s_logger.info("Executing resource DeleteCommand: " + _gson.toJson(cmd)); - } - try { VmwareContext context = hostService.getServiceContext(null); VmwareHypervisorHost hyperHost = hostService.getHyperHost(context, null); @@ -2735,14 +2653,7 @@ public class VmwareStorageProcessor implements StorageProcessor { return new Answer(cmd, true, "Success"); } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - hostService.invalidateServiceContext(null); - } - - String msg = "delete volume failed due to " + VmwareHelper.getExceptionMessage(e); - s_logger.error(msg, e); - return new Answer(cmd, false, msg); + return new Answer(cmd, false, hostService.createLogMessageException(e, cmd)); } } @@ -3816,12 +3727,8 @@ public class VmwareStorageProcessor implements StorageProcessor { newVol.setPath(newVolumeName); return new CopyCmdAnswer(newVol); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - - s_logger.error("Unexpecpted exception ", e); - details = "create volume from snapshot exception: " + VmwareHelper.getExceptionMessage(e); + hostService.createLogMessageException(e, cmd); + details = String.format("Failed to create volume from snapshot due to exception: [%s]", VmwareHelper.getExceptionMessage(e)); } return new CopyCmdAnswer(details); } @@ -3907,11 +3814,8 @@ public class VmwareStorageProcessor implements StorageProcessor { else return new Answer(cmd, isDatastoreStoragePolicyComplaint, null); } catch (Throwable e) { - if (e instanceof RemoteException) { - hostService.invalidateServiceContext(context); - } - String details = String.format("Exception while checking if datastore %s is storage policy %s complaince : %s", primaryStorageNameLabel, storagePolicyId, VmwareHelper.getExceptionMessage(e)); - s_logger.error(details, e); + hostService.createLogMessageException(e, cmd); + String details = String.format("Exception while checking if datastore [%s] is storage policy [%s] complaince due to: [%s]", primaryStorageNameLabel, storagePolicyId, VmwareHelper.getExceptionMessage(e)); return new Answer(cmd, false, details); } } @@ -4023,13 +3927,7 @@ public class VmwareStorageProcessor implements StorageProcessor { return answer; } catch (Throwable e) { - if (e instanceof RemoteException) { - s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context"); - - hostService.invalidateServiceContext(null); - } - - return new SyncVolumePathAnswer("Failed to process SyncVolumePathCommand due to " + e.getMessage()); + return new SyncVolumePathAnswer(hostService.createLogMessageException(e, cmd)); } } } diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java index 5a08aa7e2f0..be564cf56ba 100644 --- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java +++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java @@ -127,6 +127,7 @@ import com.vmware.vim25.VirtualSCSISharing; public class VirtualMachineMO extends BaseMO { private static final Logger s_logger = Logger.getLogger(VirtualMachineMO.class); private static final ExecutorService MonitorServiceExecutor = Executors.newCachedThreadPool(new NamedThreadFactory("VM-Question-Monitor")); + private static final Gson GSON = new Gson(); public static final String ANSWER_YES = "0"; public static final String ANSWER_NO = "1"; @@ -1402,7 +1403,7 @@ public class VirtualMachineMO extends BaseMO { if(s_logger.isTraceEnabled()) s_logger.trace("vCenter API trace - attachDisk(). target MOR: " + _mor.getValue() + ", vmdkDatastorePath: " - + new Gson().toJson(vmdkDatastorePathChain) + ", datastore: " + morDs.getValue()); + + GSON.toJson(vmdkDatastorePathChain) + ", datastore: " + morDs.getValue()); int controllerKey = 0; int unitNumber = 0; @@ -1800,7 +1801,7 @@ public class VirtualMachineMO extends BaseMO { Pair result = new Pair(descriptor, content); if (s_logger.isTraceEnabled()) { s_logger.trace("vCenter API trace - getVmdkFileInfo() done"); - s_logger.trace("VMDK file descriptor: " + new Gson().toJson(result.first())); + s_logger.trace("VMDK file descriptor: " + GSON.toJson(result.first())); } return result; }