diff --git a/server/src/main/java/org/apache/cloudstack/vm/ImportVmTasksManagerImpl.java b/server/src/main/java/org/apache/cloudstack/vm/ImportVmTasksManagerImpl.java index 7294ec051eaf..b06311731141 100644 --- a/server/src/main/java/org/apache/cloudstack/vm/ImportVmTasksManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/vm/ImportVmTasksManagerImpl.java @@ -80,7 +80,8 @@ public ListResponse listImportVMTasks(ListImportVMTasksCmd Long pageSizeVal = cmd.getPageSizeVal(); ImportVmTask.TaskState state = getStateFromFilter(cmd.getTasksFilter()); - Pair, Integer> result = importVMTaskDao.listImportVMTasks(zoneId, accountId, vcenter, convertHostId, state, startIndex, pageSizeVal); + Pair, Integer> result = importVMTaskDao.listImportVMTasks(zoneId, accountId, vcenter, + convertHostId, state, startIndex, pageSizeVal); List tasks = result.first(); List responses = new ArrayList<>(); @@ -99,15 +100,17 @@ private ImportVmTask.TaskState getStateFromFilter(String tasksFilter) { try { return ImportVmTask.TaskState.getValue(tasksFilter); } catch (IllegalArgumentException e) { - throw new ServerApiException(ApiErrorCode.PARAM_ERROR, String.format("Invalid value for task state: %s", tasksFilter)); + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, + String.format("Invalid value for task state: %s", tasksFilter)); } } @Override - public ImportVmTask createImportVMTaskRecord(DataCenter zone, Account owner, long userId, String displayName, String vcenter, String datacenterName, String sourceVMName, Host convertHost, Host importHost) { + public ImportVmTask createImportVMTaskRecord(DataCenter zone, Account owner, long userId, String displayName, + String vcenter, String datacenterName, String sourceVMName, Host convertHost, Host importHost) { logger.debug("Creating import VM task entry for VM: {} for account {} on zone {} " + - "from the vCenter: {} / datacenter: {} / source VM: {}", - sourceVMName, owner.getAccountName(), zone.getName(), displayName, vcenter, datacenterName); + "from the vCenter: {} / datacenter: {} / source VM: {}", + displayName, owner.getAccountName(), zone.getName(), vcenter, datacenterName, sourceVMName); ImportVMTaskVO importVMTaskVO = new ImportVMTaskVO(zone.getId(), owner.getAccountId(), userId, displayName, vcenter, datacenterName, sourceVMName, convertHost.getId(), importHost.getId()); importVMTaskVO.setState(ImportVmTask.TaskState.Running); @@ -115,21 +118,26 @@ public ImportVmTask createImportVMTaskRecord(DataCenter zone, Account owner, lon } private String getStepDescription(ImportVMTaskVO importVMTaskVO, Host convertHost, Host importHost, - ImportVMTaskVO.Step step, Date updatedDate) { + ImportVMTaskVO.Step step, Date updatedDate) { String sourceVMName = importVMTaskVO.getSourceVMName(); String vcenter = importVMTaskVO.getVcenter(); String datacenter = importVMTaskVO.getDatacenter(); StringBuilder stringBuilder = new StringBuilder(); if (Completed == step) { - stringBuilder.append("Completed at ").append(DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), updatedDate)); + stringBuilder.append("Completed at ") + .append(DateUtil.getDateDisplayString(TimeZone.getTimeZone("GMT"), updatedDate)); } else { if (CloningInstance == step) { - stringBuilder.append(String.format("Cloning source instance: %s on vCenter: %s / datacenter: %s", sourceVMName, vcenter, datacenter)); + stringBuilder.append(String.format("Cloning source instance: %s on vCenter: %s / datacenter: %s", + sourceVMName, vcenter, datacenter)); } else if (ConvertingInstance == step) { - stringBuilder.append(String.format("Converting the cloned VMware instance to a KVM instance on the host: %s", convertHost.getName())); + stringBuilder + .append(String.format("Converting the cloned VMware instance to a KVM instance on the host: %s", + convertHost.getName())); } else if (Importing == step) { - stringBuilder.append(String.format("Importing the converted KVM instance on the host: %s", importHost.getName())); + stringBuilder.append( + String.format("Importing the converted KVM instance on the host: %s", importHost.getName())); } else if (Prepare == step) { stringBuilder.append("Preparing to convert Vmware instance"); } @@ -139,12 +147,13 @@ private String getStepDescription(ImportVMTaskVO importVMTaskVO, Host convertHos @Override public void updateImportVMTaskStep(ImportVmTask importVMTask, DataCenter zone, Account owner, Host convertHost, - Host importHost, Long vmId, ImportVmTask.Step step) { + Host importHost, Long vmId, ImportVmTask.Step step) { ImportVMTaskVO importVMTaskVO = (ImportVMTaskVO) importVMTask; logger.debug("Updating import VM task entry for VM: {} for account {} on zone {} " + - "from the vCenter: {} / datacenter: {} / source VM: {} to step: {}", - importVMTaskVO.getSourceVMName(), owner.getAccountName(), zone.getName(), importVMTaskVO.getDisplayName(), - importVMTaskVO.getVcenter(), importVMTaskVO.getDatacenter(), step); + "from the vCenter: {} / datacenter: {} / source VM: {} to step: {}", + importVMTaskVO.getDisplayName(), owner.getAccountName(), zone.getName(), + importVMTaskVO.getVcenter(), importVMTaskVO.getDatacenter(), + importVMTaskVO.getSourceVMName(), step); Date updatedDate = DateUtil.now(); String description = getStepDescription(importVMTaskVO, convertHost, importHost, step, updatedDate); importVMTaskVO.setStep(step); @@ -161,6 +170,12 @@ public void updateImportVMTaskStep(ImportVmTask importVMTask, DataCenter zone, A @Override public void updateImportVMTaskErrorState(ImportVmTask importVMTask, ImportVmTask.TaskState state, String errorMsg) { + if (importVMTask == null) { + logger.warn( + "Skipping import VM task error state update because importVMTask is null; state: {}, errorMsg: {}", + state, errorMsg); + return; + } ImportVMTaskVO importVMTaskVO = (ImportVMTaskVO) importVMTask; Date updatedDate = DateUtil.now(); importVMTaskVO.setUpdated(updatedDate);