From 1b716960fc77d2f9cb37f0f11ff4c171a6b559cc Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Thu, 16 Jun 2022 13:34:13 +0530 Subject: [PATCH 1/3] api: Add vpc name and uuid to VMs list response (nics) and nics response (#6461) --- .../cloudstack/api/response/NicResponse.java | 24 +++++++++++++++++++ .../java/com/cloud/api/ApiResponseHelper.java | 11 +++++++++ .../api/query/dao/UserVmJoinDaoImpl.java | 10 ++++++++ 3 files changed, 45 insertions(+) diff --git a/api/src/main/java/org/apache/cloudstack/api/response/NicResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/NicResponse.java index 72a2bbcabfd..4521a82aebf 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/NicResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/NicResponse.java @@ -210,6 +210,14 @@ public class NicResponse extends BaseResponse { this.extraDhcpOptions = extraDhcpOptions; } + @SerializedName(ApiConstants.VPC_ID) + @Param(description = "Id of the vpc to which the nic belongs") + private String vpcId; + + @SerializedName(ApiConstants.VPC_NAME) + @Param(description = "name of the vpc to which the nic belongs") + private String vpcName; + @Override public int hashCode() { final int prime = 31; @@ -364,4 +372,20 @@ public class NicResponse extends BaseResponse { public void setIpAddresses(List ipAddresses) { this.ipAddresses = ipAddresses; } + + public String getVpcId() { + return vpcId; + } + + public void setVpcId(String vpcId) { + this.vpcId = vpcId; + } + + public String getVpcName() { + return vpcName; + } + + public void setVpcName(String vpcName) { + this.vpcName = vpcName; + } } diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java index 2afe1d7d38f..fe0b9a5c0eb 100644 --- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java +++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java @@ -37,6 +37,8 @@ import java.util.stream.Collectors; import javax.inject.Inject; +import com.cloud.api.query.dao.UserVmJoinDao; +import com.cloud.network.vpc.VpcVO; import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.affinity.AffinityGroup; @@ -442,6 +444,8 @@ public class ApiResponseHelper implements ResponseGenerator { NetworkOfferingDao networkOfferingDao; @Inject Ipv6Service ipv6Service; + @Inject + UserVmJoinDao userVmJoinDao; @Override public UserResponse createUserResponse(User user) { @@ -4318,6 +4322,13 @@ public class ApiResponseHelper implements ResponseGenerator { response.setNsxLogicalSwitchPort(((NicVO)result).getNsxLogicalSwitchPortUuid()); } } + + UserVmJoinVO userVm = userVmJoinDao.findById(vm.getId()); + if (userVm != null && userVm.getVpcUuid() != null) { + response.setVpcId(userVm.getVpcUuid()); + VpcVO vpc = _entityMgr.findByUuidIncludingRemoved(VpcVO.class, userVm.getVpcUuid()); + response.setVpcName(vpc.getName()); + } return response; } diff --git a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java index 76e6a68c95f..978d5c0b19c 100644 --- a/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/UserVmJoinDaoImpl.java @@ -28,6 +28,8 @@ import java.util.stream.Collectors; import javax.inject.Inject; +import com.cloud.network.vpc.VpcVO; +import com.cloud.network.vpc.dao.VpcDao; import com.cloud.storage.DiskOfferingVO; import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.annotation.AnnotationService; @@ -88,6 +90,8 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation VmDetailSearch; @@ -291,6 +295,12 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation secondaryIps = ApiDBUtils.findNicSecondaryIps(userVm.getNicId()); From 5b9b117301d5fe0d6e7dac817d9f6d968a69f0de Mon Sep 17 00:00:00 2001 From: utchoang Date: Thu, 16 Jun 2022 13:24:30 +0700 Subject: [PATCH 2/3] add a default value for customColumns --- ui/src/store/modules/user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/src/store/modules/user.js b/ui/src/store/modules/user.js index 3a5233aa13b..cf4e420df03 100644 --- a/ui/src/store/modules/user.js +++ b/ui/src/store/modules/user.js @@ -58,7 +58,8 @@ const user = { darkMode: false, defaultListViewPageSize: 20, countNotify: 0, - logoutFlag: false + logoutFlag: false, + customColumns: {} }, mutations: { From 98bc4415da2eeb875dbac66d538257c808060f50 Mon Sep 17 00:00:00 2001 From: utchoang Date: Thu, 16 Jun 2022 16:29:28 +0700 Subject: [PATCH 3/3] Revert "some component tests fixes (#5442)" This reverts commit bfe16977211fa441edd2fc9084512149eca4e9c4. --- .../broken/test_vpc_vm_life_cycle.py | 2 +- test/integration/component/test_host_ha.py | 49 +++++++++++++------ .../component/test_rootvolume_resize.py | 6 +-- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/test/integration/broken/test_vpc_vm_life_cycle.py b/test/integration/broken/test_vpc_vm_life_cycle.py index 9290835c2e6..c1868d009f9 100644 --- a/test/integration/broken/test_vpc_vm_life_cycle.py +++ b/test/integration/broken/test_vpc_vm_life_cycle.py @@ -19,7 +19,7 @@ from nose.plugins.attrib import attr from component.test_vpc_vm_life_cycle import Services -class TestVMLifeCycleSharedNwVPC(cloudstackTestCase): +class TestVMLifeCycleSharedNwVPC(cloudstackTesTODOtCase): @classmethod def setUpClass(cls): diff --git a/test/integration/component/test_host_ha.py b/test/integration/component/test_host_ha.py index e6dd20bfe6b..d32e708b081 100644 --- a/test/integration/component/test_host_ha.py +++ b/test/integration/component/test_host_ha.py @@ -17,19 +17,22 @@ """ BVT tests for Hosts Maintenance """ +# Import Local Modules +from marvin.codes import FAILED from marvin.cloudstackTestCase import * +from marvin.cloudstackAPI import * from marvin.lib.utils import * from marvin.lib.base import * from marvin.lib.common import * from nose.plugins.attrib import attr +from time import sleep + _multiprocess_shared_ = False class TestHostHA(cloudstackTestCase): - hostCountMsg = "Host HA can be tested with at least two hosts, only %s found" - def setUp(self): self.logger = logging.getLogger('TestHM') self.stream_handler = logging.StreamHandler() @@ -83,8 +86,17 @@ class TestHostHA(cloudstackTestCase): "timeout": 10, } + def tearDown(self): - super(TestHostHA, self).tearDown() + try: + # Clean up, terminate the created templates + cleanup_resources(self.apiclient, self.cleanup) + + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + + return + def createVMs(self, hostId, number, local): @@ -307,9 +319,11 @@ class TestHostHA(cloudstackTestCase): for host in listHost: self.logger.debug('Hypervisor = {}'.format(host.id)) - if len(listHost) < 2: - self.logger.debug(self.hostCountMsg % len(listHost)) - raise unittest.SkipTest(self.hostCountMsg % len(listHost)) + + if len(listHost) != 2: + self.logger.debug("Host HA can be tested with two host only %s, found" % len(listHost)) + raise unittest.SkipTest("Host HA can be tested with two host only %s, found" % len(listHost)) + no_of_vms = self.noOfVMsOnHost(listHost[0].id) @@ -317,6 +331,7 @@ class TestHostHA(cloudstackTestCase): self.logger.debug("Number of VMS on hosts = %s" % no_of_vms) + if no_of_vms < 5: self.logger.debug("test_01: Create VMs as there are not enough vms to check host ha") no_vm_req = 5 - no_of_vms @@ -381,9 +396,10 @@ class TestHostHA(cloudstackTestCase): for host in listHost: self.logger.debug('Hypervisor = {}'.format(host.id)) - if len(listHost) < 2: - self.logger.debug(self.hostCountMsg % len(listHost)) - raise unittest.SkipTest(self.hostCountMsg % len(listHost)) + + if len(listHost) != 2: + self.logger.debug("Host HA can be tested with two host only %s, found" % len(listHost)) + raise unittest.SkipTest("Host HA can be tested with two host only %s, found" % len(listHost)) no_of_vms = self.noOfVMsOnHost(listHost[0].id) @@ -457,9 +473,10 @@ class TestHostHA(cloudstackTestCase): for host in listHost: self.logger.debug('Hypervisor = {}'.format(host.id)) - if len(listHost) < 2: - self.logger.debug(self.hostCountMsg % len(listHost)) - raise unittest.SkipTest(self.hostCountMsg % len(listHost)) + + if len(listHost) != 2: + self.logger.debug("Host HA can be tested with two host only %s, found" % len(listHost)) + raise unittest.SkipTest("Host HA can be tested with two host only %s, found" % len(listHost)) no_of_vms = self.noOfVMsOnHost(listHost[0].id) @@ -531,9 +548,10 @@ class TestHostHA(cloudstackTestCase): for host in listHost: self.logger.debug('Hypervisor = {}'.format(host.id)) - if len(listHost) < 2: - self.logger.debug(self.hostCountMsg % len(listHost)) - raise unittest.SkipTest(self.hostCountMsg % len(listHost)) + + if len(listHost) != 2: + self.logger.debug("Host HA can be tested with two host only %s, found" % len(listHost)) + raise unittest.SkipTest("Host HA can be tested with two host only %s, found" % len(listHost)) no_of_vms = self.noOfVMsOnHost(listHost[0].id) @@ -541,6 +559,7 @@ class TestHostHA(cloudstackTestCase): self.logger.debug("Number of VMS on hosts = %s" % no_of_vms) + if no_of_vms < 5: self.logger.debug("test_01: Create VMs as there are not enough vms to check host ha") no_vm_req = 5 - no_of_vms diff --git a/test/integration/component/test_rootvolume_resize.py b/test/integration/component/test_rootvolume_resize.py index 7e58d1e3f42..1b1a6fe6db1 100644 --- a/test/integration/component/test_rootvolume_resize.py +++ b/test/integration/component/test_rootvolume_resize.py @@ -773,7 +773,7 @@ class TestResizeVolume(cloudstackTestCase): return @attr(tags=["advanced"], required_hardware="true") - def test_05_vmdeployment_with_size(self): + def test_5_vmdeployment_with_size(self): """Test vm deployment with new rootdisk size parameter # Validate the following @@ -855,7 +855,7 @@ class TestResizeVolume(cloudstackTestCase): @attr(tags=["advanced"], required_hardware="true") - def test_06_resized_rootvolume_with_lessvalue(self): + def test_6_resized_rootvolume_with_lessvalue(self): """Test resize root volume with less than original volume size # Validate the following @@ -939,7 +939,7 @@ class TestResizeVolume(cloudstackTestCase): # @attr(tags=["advanced"], required_hrdware="true") @attr(tags=["TODO"], required_hrdware="true") - def test_07_usage_events_after_rootvolume_resized_(self): + def test_7_usage_events_after_rootvolume_resized_(self): """Test check usage events after root volume resize # Validate the following