cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sanj...@apache.org
Subject git commit: updated refs/heads/master to b1fa378
Date Tue, 11 Aug 2015 07:05:17 GMT
Repository: cloudstack
Updated Branches:
  refs/heads/master 8b0266d12 -> b1fa37861


CLOUDSTACK-8720: Handle corner case in remove nic from vm Please see the bug for more details

Incorporating comments from pavanb018

This closes #671


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b1fa3786
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b1fa3786
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b1fa3786

Branch: refs/heads/master
Commit: b1fa37861232116654ba8ddf36ab5826543b8c07
Parents: 8b0266d
Author: sanjeev <sanjeev@apache.org>
Authored: Fri Aug 7 18:09:09 2015 +0530
Committer: sanjeev <sanjeev@apache.org>
Committed: Tue Aug 11 12:33:46 2015 +0530

----------------------------------------------------------------------
 .../component/test_add_remove_network.py        | 118 ++++++++++++++++++-
 1 file changed, 115 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b1fa3786/test/integration/component/test_add_remove_network.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_add_remove_network.py b/test/integration/component/test_add_remove_network.py
index fb80530..55d0b0e 100644
--- a/test/integration/component/test_add_remove_network.py
+++ b/test/integration/component/test_add_remove_network.py
@@ -37,7 +37,10 @@ from marvin.lib.base import (
                                         NetworkOffering,
                                         Network,
                                         VpcOffering,
-                                        VPC
+                                        VPC,
+                                        PublicIPAddress,
+                                        FireWallRule,
+                                        NATRule
                                         )
 from marvin.lib.common import (get_domain,
                                         get_zone,
@@ -46,7 +49,8 @@ from marvin.lib.common import (get_domain,
                                         list_events,
                                         list_zones,
                                         get_free_vlan,
-                                        update_resource_limit
+                                        update_resource_limit,
+                                        list_nat_rules
                                         )
 
 from marvin.lib.utils import (validateList,
@@ -167,6 +171,11 @@ class Services:
                                             "displaytext": "TestVPC add remove network",
                                             "cidr": '10.0.0.1/24'
                                          },
+            "natrule":                   {
+                                            "privateport": 22,
+                                            "publicport": 22,
+                                            "protocol": "TCP"
+                                         },
                         }
 
 @ddt
@@ -811,7 +820,7 @@ class TestRemoveNetworkFromVirtualMachine(cloudstackTestCase):
         self.assertTrue(len(self.nics) == 1, "nics list should contain the nic of added isolated
network,\
                         the number of nics for the network should be 1, instead they are
%s" %
                         len(self.nics))
-        return
+        return self.nics
 
     @attr(tags = ["advanced", "dvs"])
     def test_07_remove_nic_running_vm(self):
@@ -909,6 +918,109 @@ class TestRemoveNetworkFromVirtualMachine(cloudstackTestCase):
             self.debug("Operation failed with exception: %s" % e.exception)
         return
 
+    @attr(tags = ["advanced"], required_hardware="true")
+    def test_29_remove_nic_CS22503(self):
+        """Test to verify remove nic from vm if the nic ip is same as another vm ip in another
network"""
+
+        # 1. Deploy vm v1 with networks n1 and n2
+        # 2. Check the ip address of nic in n2 say ip1
+        # 3. Deployed vm v2 in another network say n3 with same IP address as ip1 using
+        # 'deployVirtualMachine' api with 'ipaddress' as one of the parameters.
+        # 4. Acquire public IP in n3 network.
+        # 5. Configure PF on the acquired IP and assign it to vm v2
+        # 6. Try to remove nic  n2 from v1. Should be successfull
+        # There was a bug due to both vms has same ip address, so not allowing to remove
nic
+
+        vm1 = self.virtual_machine
+        nic2 = self.addNetworkToVm(self.isolated_network, vm1)
+        #get the ip address of the nic added in 2nd network
+        vm1_ip = nic2[0].ipaddress
+        self.assertIsNotNone(vm1_ip, "New nic did not get the ip address")
+        #Create network n3
+        self.network3 = Network.create(
+            self.api_client,
+            self.services["isolated_network"],
+            self.account.name,
+            self.account.domainid,
+            networkofferingid=self.isolated_network_offering.id
+        )
+        self.cleanup.append(self.network3)
+        self.vm2 = VirtualMachine.create(
+            self.api_client,
+            self.services["virtual_machine"],
+            accountid=self.account.name,
+            domainid=self.account.domainid,
+            serviceofferingid=self.service_offering.id,
+            networkids=[self.network3.id],
+            ipaddress=vm1_ip,
+            mode=self.zone.networktype
+        )
+        self.cleanup.append(self.vm2)
+        vm2 = VirtualMachine.list(
+            self.api_client,
+            id=self.vm2.id
+        )
+        self.assertEqual(validateList(vm2)[0], PASS, "list vms returned invalid response")
+        self.assertIsNotNone(vm2[0].nic[0].ipaddress, "vm2 didn't get the ip address")
+        self.assertEqual(
+            vm1_ip,
+            vm2[0].nic[0].ipaddress,
+            "vm2 did not get the ip address passed while deploying vm"
+        )
+        ip_address = PublicIPAddress.create(
+            self.apiclient,
+            self.account.name,
+            self.zone.id,
+            self.account.domainid,
+            self.services["virtual_machine"],
+            self.network3.id
+        )
+        self.cleanup.append(ip_address)
+        self.cleanup = self.cleanup[::-1]
+        # Open up firewall port for SSH
+        FireWallRule.create(
+            self.apiclient,
+            ipaddressid=ip_address.ipaddress.id,
+            protocol=self.services["natrule"]["protocol"],
+            cidrlist=['0.0.0.0/0'],
+            startport=self.services["natrule"]["publicport"],
+            endport=self.services["natrule"]["publicport"]
+        )
+        # Create NAT rule
+        nat_rule = NATRule.create(
+            self.apiclient,
+            self.vm2,
+            self.services["natrule"],
+            ip_address.ipaddress.id
+        )
+        list_nat_rule_response = list_nat_rules(
+            self.apiclient,
+            id=nat_rule.id
+        )
+        self.assertEqual(
+            validateList(list_nat_rule_response)[0],
+            PASS,
+            "Check list response returns a valid list"
+        )
+        self.assertEqual(
+            list_nat_rule_response[0].id,
+            nat_rule.id,
+            "Check Correct Port forwarding Rule is returned"
+        )
+        #Try to remove nic 2 from vm1
+        try:
+            vm1.remove_nic(self.apiclient, self.nics[0].id)
+            vm1_res = VirtualMachine.list(self.apiclient, id=vm1.id)
+            self.assertEqual(validateList(vm1_res)[0], PASS, "invalid listvm response")
+            self.assertEqual(
+                len(vm1_res[0].nic),
+                1,
+                "VM has more than one nic even after removing the 2nd nic"
+            )
+        except Exception as e:
+            self.fail("Failed to delete the nic from vm")
+        return
+
 class TestUpdateVirtualMachineNIC(cloudstackTestCase):
 
     @classmethod


Mime
View raw message