From cc856277deb3b7270cd5681afeb72ef1121aeea7 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Thu, 16 Dec 2021 06:54:11 +0100 Subject: [PATCH 1/3] UI: fix create Isolated/L2 network form (#5779) --- ui/src/role/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/role/index.js b/ui/src/role/index.js index 2052e3e0577..3385eacb806 100644 --- a/ui/src/role/index.js +++ b/ui/src/role/index.js @@ -22,5 +22,5 @@ export function isAdmin () { } export function isAdminOrDomainAdmin () { - return ['Admin', 'DomainAdmin'].includes(this.$store.getters.userInfo.roletype) + return ['Admin', 'DomainAdmin'].includes(store.getters.userInfo.roletype) } From 79d924f3eeeaa7d876c12faaa5aa7703d490e14f Mon Sep 17 00:00:00 2001 From: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com> Date: Thu, 16 Dec 2021 11:51:38 -0300 Subject: [PATCH 2/3] Insert correct template size when live migrating VM with volumes (#5758) Co-authored-by: GutoVeronezi --- .../KvmNonManagedStorageDataMotionStrategy.java | 13 ++++++------- .../KvmNonManagedStorageSystemDataMotionTest.java | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java index 237be6c1eff..3046cd4da93 100644 --- a/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java +++ b/engine/storage/datamotion/src/main/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageDataMotionStrategy.java @@ -214,7 +214,7 @@ public class KvmNonManagedStorageDataMotionStrategy extends StorageSystemDataMot Answer copyCommandAnswer = sendCopyCommand(destHost, sourceTemplate, destTemplate, destDataStore); if (copyCommandAnswer != null && copyCommandAnswer.getResult()) { - updateTemplateReferenceIfSuccessfulCopy(srcVolumeInfo, srcStoragePool, destTemplateInfo, destDataStore); + updateTemplateReferenceIfSuccessfulCopy(srcVolumeInfo.getTemplateId(), destTemplateInfo.getUuid(), destDataStore.getId(), destTemplate.getSize()); } return; } @@ -225,15 +225,14 @@ public class KvmNonManagedStorageDataMotionStrategy extends StorageSystemDataMot /** * Update the template reference on table "template_spool_ref" (VMTemplateStoragePoolVO). */ - protected void updateTemplateReferenceIfSuccessfulCopy(VolumeInfo srcVolumeInfo, StoragePool srcStoragePool, TemplateInfo destTemplateInfo, DataStore destDataStore) { - VMTemplateStoragePoolVO srcVolumeTemplateStoragePoolVO = vmTemplatePoolDao.findByPoolTemplate(srcStoragePool.getId(), srcVolumeInfo.getTemplateId(), null); - VMTemplateStoragePoolVO destVolumeTemplateStoragePoolVO = new VMTemplateStoragePoolVO(destDataStore.getId(), srcVolumeInfo.getTemplateId(), null); + protected void updateTemplateReferenceIfSuccessfulCopy(long templateId, String destTemplateInfoUuid, long destDataStoreId, long templateSize) { + VMTemplateStoragePoolVO destVolumeTemplateStoragePoolVO = new VMTemplateStoragePoolVO(destDataStoreId, templateId, null); destVolumeTemplateStoragePoolVO.setDownloadPercent(100); destVolumeTemplateStoragePoolVO.setDownloadState(VMTemplateStorageResourceAssoc.Status.DOWNLOADED); destVolumeTemplateStoragePoolVO.setState(ObjectInDataStoreStateMachine.State.Ready); - destVolumeTemplateStoragePoolVO.setTemplateSize(srcVolumeTemplateStoragePoolVO.getTemplateSize()); - destVolumeTemplateStoragePoolVO.setLocalDownloadPath(destTemplateInfo.getUuid()); - destVolumeTemplateStoragePoolVO.setInstallPath(destTemplateInfo.getUuid()); + destVolumeTemplateStoragePoolVO.setTemplateSize(templateSize); + destVolumeTemplateStoragePoolVO.setLocalDownloadPath(destTemplateInfoUuid); + destVolumeTemplateStoragePoolVO.setInstallPath(destTemplateInfoUuid); vmTemplatePoolDao.persist(destVolumeTemplateStoragePoolVO); } diff --git a/engine/storage/datamotion/src/test/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageSystemDataMotionTest.java b/engine/storage/datamotion/src/test/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageSystemDataMotionTest.java index 601f6bbd104..07a6a1c0c1b 100644 --- a/engine/storage/datamotion/src/test/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageSystemDataMotionTest.java +++ b/engine/storage/datamotion/src/test/java/org/apache/cloudstack/storage/motion/KvmNonManagedStorageSystemDataMotionTest.java @@ -375,8 +375,8 @@ public class KvmNonManagedStorageSystemDataMotionTest { Mockito.when(templateDataFactory.getTemplate(Mockito.anyLong(), Mockito.eq(sourceTemplateDataStore))).thenReturn(sourceTemplateInfo); Mockito.when(templateDataFactory.getTemplate(Mockito.anyLong(), Mockito.eq(destDataStore))).thenReturn(sourceTemplateInfo); kvmNonManagedStorageDataMotionStrategy.copyTemplateToTargetFilesystemStorageIfNeeded(srcVolumeInfo, srcStoragePool, destDataStore, destStoragePool, destHost); - Mockito.lenient().doNothing().when(kvmNonManagedStorageDataMotionStrategy).updateTemplateReferenceIfSuccessfulCopy(Mockito.any(VolumeInfo.class), Mockito.any(StoragePool.class), - Mockito.any(TemplateInfo.class), Mockito.any(DataStore.class)); + Mockito.lenient().doNothing().when(kvmNonManagedStorageDataMotionStrategy).updateTemplateReferenceIfSuccessfulCopy(Mockito.anyLong(), Mockito.anyString(), + Mockito.anyLong(), Mockito.anyLong()); InOrder verifyInOrder = Mockito.inOrder(vmTemplatePoolDao, dataStoreManagerImpl, templateDataFactory, kvmNonManagedStorageDataMotionStrategy); verifyInOrder.verify(vmTemplatePoolDao, Mockito.times(1)).findByPoolTemplate(Mockito.anyLong(), Mockito.anyLong(), nullable(String.class)); From 29c7518613bd333552fdd2e49a1740ce6b2c49a1 Mon Sep 17 00:00:00 2001 From: Hoang Nguyen Date: Mon, 20 Dec 2021 14:05:32 +0700 Subject: [PATCH 3/3] UI: Fixes error when delete domain (#5710) * fixes error when delete domain with polljob response not have jobstatus * fix listdomain not refresh after deleted --- ui/src/views/iam/DomainActionForm.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui/src/views/iam/DomainActionForm.vue b/ui/src/views/iam/DomainActionForm.vue index b9796867106..1696d525810 100644 --- a/ui/src/views/iam/DomainActionForm.vue +++ b/ui/src/views/iam/DomainActionForm.vue @@ -248,8 +248,7 @@ export default { description: this.resource.name, successMethod: result => { if (this.action.api === 'deleteDomain') { - this.$set(this.resource, 'isDel', true) - this.parentUpdActionData(this.resource) + this.parentFetchData() } if (this.action.response) { const description = this.action.response(result.jobresult)