You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ra...@apache.org on 2016/11/16 05:35:54 UTC
[5/7] git commit: updated refs/heads/master to 3638965
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a97d54f3/test/integration/plugins/nuagevsp/test_nuage_internal_dns.py
----------------------------------------------------------------------
diff --git a/test/integration/plugins/nuagevsp/test_nuage_internal_dns.py b/test/integration/plugins/nuagevsp/test_nuage_internal_dns.py
new file mode 100644
index 0000000..9e03ba0
--- /dev/null
+++ b/test/integration/plugins/nuagevsp/test_nuage_internal_dns.py
@@ -0,0 +1,523 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+""" Component tests for Internal DNS functionality with Nuage VSP SDN plugin
+"""
+# Import Local Modules
+from nuageTestCase import nuageTestCase
+from marvin.cloudstackAPI import updateZone
+from marvin.lib.base import Account, Network
+# Import System Modules
+from nose.plugins.attrib import attr
+
+
+class TestNuageInternalDns(nuageTestCase):
+ DNS = "06"
+ HOSTNAME = "0c"
+ DOMAINNAME = "0f"
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestNuageInternalDns, cls).setUpClass()
+ cls.dnsdata = cls.test_data["nuagevsp"]
+ return
+
+ def setUp(self):
+ self.apiclient = self.testClient.getApiClient()
+ self.account = Account.create(
+ self.apiclient,
+ self.test_data["account"],
+ admin=True,
+ domainid=self.domain.id
+ )
+ self.test_data["virtual_machine"]["displayname"] = "vm1"
+ self.test_data["virtual_machine"]["name"] = "vm1"
+
+ self.cleanup = [self.account]
+ return
+
+ # Creates and verifies the firewall rule
+ def create_and_verify_fw(self, vm, public_ip, network):
+ self.debug("Create and verify firewall rule")
+ self.create_StaticNatRule_For_VM(vm, public_ip, network)
+
+ # VSD verification
+ self.verify_vsd_floating_ip(network, vm, public_ip.ipaddress)
+
+ fw_rule = self.create_FirewallRule(
+ public_ip, self.test_data["ingress_rule"])
+ self.verify_vsd_firewall_rule(fw_rule)
+
+ def verify_vsd_dhcp_option(self, dhcp_type, value, subnet_or_vm_interface,
+ is_vm_interface=False):
+ self.debug("Verifying the creation and value of DHCP option type - %s "
+ "in VSD" % dhcp_type)
+ found_dhcp_type = False
+ if is_vm_interface:
+ dhcp_options = self.vsd.get_vm_interface_dhcpoptions(
+ filter=self.get_externalID_filter(subnet_or_vm_interface.id))
+ else:
+ dhcp_options = self.vsd.get_subnet_dhcpoptions(
+ filter=self.get_externalID_filter(subnet_or_vm_interface.id))
+ for dhcp_option in dhcp_options:
+ self.debug("dhcptype option is %s:" % dhcp_option.actual_type)
+ self.debug("dhcptype expected value is option is %s:" % dhcp_type)
+ if dhcp_option.type == dhcp_type:
+ found_dhcp_type = True
+ if isinstance(dhcp_option.actual_values, list):
+ self.debug("dhcptype actual value is %s:" %
+ dhcp_option.actual_values)
+ if value in dhcp_option.actual_values:
+ self.debug("Excepted DHCP option value found in VSD")
+ else:
+ self.fail("Excepted DHCP option value not found in "
+ "VSD")
+ else:
+ self.assertEqual(dhcp_options.actual_values, value,
+ "Expected DHCP option value is not same "
+ "in both CloudStack and VSD"
+ )
+ if not found_dhcp_type:
+ self.fail("Expected DHCP option type and value not found in the "
+ "VSD")
+ self.debug("Successfully verified the creation and value of DHCP "
+ "option type - %s in VSD" % dhcp_type)
+
+ @attr(tags=["advanced", "nuagevsp"], required_hardware="false")
+ def test_01_Isolated_Network_with_zone(self):
+ """ Verify InternalDns on Isolated Network
+ """
+
+ # Validate the following
+ # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS
+ # network offering.
+ # 2. Deploy vm1 in network1.
+ # 3. Verify dhcp option 06 and 0f for subnet
+ # 4. Verify dhcp option 06,15 and 0f for vm Interface.
+
+ # update Network Domain at zone level
+ cmd = updateZone.updateZoneCmd()
+ cmd.id = self.zone.id
+ cmd.domain = "isolated.com"
+ self.apiclient.updateZone(cmd)
+ self.debug("Creating and enabling Nuage Vsp Isolated Network "
+ "offering...")
+ network_offering = self.create_NetworkOffering(
+ self.dnsdata["isolated_network_offering"])
+ self.validate_NetworkOffering(network_offering, state="Enabled")
+
+ network_1 = self.create_Network(network_offering)
+ vm_1 = self.create_VM(network_1)
+
+ # VSD verification
+ self.verify_vsd_network(self.domain.id, network_1)
+ self.verify_vsd_vm(vm_1)
+
+ # Internal DNS check point on VSD
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "isolated.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "isolated.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ @attr(tags=["advanced", "nuagevsp"], required_hardware="true")
+ def test_02_Isolated_Network(self):
+ """ Verify InternalDns on Isolated Network with ping by hostname
+ """
+
+ # Validate the following
+ # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS
+ # network offering.
+ # 2. Deploy vm1 in network1.
+ # 3. Verify dhcp option 06 and 0f for subnet
+ # 4. Verify dhcp option 06,15 and 0f for vm Interface.
+ # 5. Deploy VM2 in network1.
+ # 6. Verify end to end by pinging with hostname
+
+ cmd = updateZone.updateZoneCmd()
+ cmd.id = self.zone.id
+ cmd.domain = "isolated.com"
+ self.apiclient.updateZone(cmd)
+
+ self.debug("Creating and enabling Nuage Vsp Isolated Network "
+ "offering...")
+ network_offering = self.create_NetworkOffering(
+ self.dnsdata["isolated_network_offering"])
+ self.validate_NetworkOffering(network_offering, state="Enabled")
+
+ network_1 = self.create_Network(network_offering)
+ vm_1 = self.create_VM(network_1)
+
+ # VSD verification
+ self.verify_vsd_network(self.domain.id, network_1)
+ self.verify_vsd_vm(vm_1)
+
+ # Internal DNS check point on VSD
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "isolated.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "isolated.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ self.test_data["virtual_machine"]["displayname"] = "vm2"
+ self.test_data["virtual_machine"]["name"] = "vm2"
+ vm_2 = self.create_VM(network_1)
+ self.test_data["virtual_machine"]["displayname"] = "vm1"
+ self.test_data["virtual_machine"]["name"] = "vm1"
+ self.verify_vsd_vm(vm_2)
+ for nic in vm_2.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "isolated.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True)
+
+ public_ip_1 = self.acquire_PublicIPAddress(network_1)
+ self.create_and_verify_fw(vm_1, public_ip_1, network_1)
+
+ vm_public_ip = public_ip_1.ipaddress.ipaddress
+
+ try:
+ vm_1.ssh_ip = vm_public_ip
+ vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"]
+ vm_1.username = self.test_data["virtual_machine"]["username"]
+ vm_1.password = self.test_data["virtual_machine"]["password"]
+ self.debug("SSHing into VM: %s with %s" %
+ (vm_1.ssh_ip, vm_1.password))
+
+ ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip)
+
+ except Exception as e:
+ self.fail("SSH into VM failed with exception %s" % e)
+
+ cmd = 'ping -c 2 vm2'
+ self.debug("ping vm2 by hostname with command: " + cmd)
+ outputlist = ssh.execute(cmd)
+ self.debug("command is executed properly " + cmd)
+ completeoutput = str(outputlist).strip('[]')
+ self.debug("complete output is " + completeoutput)
+ expectedlist = ['2 received', 'vm2.isolated.com', vm_2.ipaddress]
+ for item in expectedlist:
+ if item in completeoutput:
+ self.debug("excepted value found in vm: " + item)
+ else:
+ self.fail("excepted value not found in vm: " + item)
+
+ @attr(tags=["advanced", "nuagevsp"], required_hardware="false")
+ def test_03_Update_Network_with_Domain(self):
+ """ Verify update NetworkDomain for InternalDns on Isolated Network
+ """
+
+ # Validate the following
+ # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS
+ # network offering.
+ # 2. Deploy vm1 in network1.
+ # 3. Verify dhcp option 06 and 0f for subnet
+ # 4. Verify dhcp option 06,15 and 0f for vm Interface.
+ # 5. Update Network domain and verify it is properly updated
+
+ # update Network Domain at zone level
+ cmd = updateZone.updateZoneCmd()
+ cmd.id = self.zone.id
+ cmd.domain = "isolated.com"
+ self.apiclient.updateZone(cmd)
+
+ self.debug("Creating and enabling Nuage Vsp Isolated Network "
+ "offering...")
+ network_offering = self.create_NetworkOffering(
+ self.dnsdata["isolated_network_offering"])
+ self.validate_NetworkOffering(network_offering, state="Enabled")
+
+ network_1 = self.create_Network(network_offering)
+ vm_1 = self.create_VM(network_1)
+
+ # VSD verification
+ self.verify_vsd_network(self.domain.id, network_1)
+ self.verify_vsd_vm(vm_1)
+
+ # Internal DNS check point on VSD
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "isolated.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "isolated.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ update_response = Network.update(
+ network_1, self.apiclient, id=network_1.id,
+ networkdomain="update.com", changecidr=False)
+ completeoutput = str(update_response).strip('[]')
+ self.debug("network update response is " + completeoutput)
+ self.assertEqual("update.com", update_response.networkdomain,
+ "Network Domain is not updated as expected"
+ )
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "update.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "update.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ @attr(tags=["advanced", "nuagevsp"], required_hardware="true")
+ def test_04_Update_Network_with_Domain(self):
+ """ Verify update NetworkDomain for InternalDns on Isolated Network
+ with ping VM
+ """
+
+ # Validate the following
+ # 1. Create an Isolated network - network1 (10.1.1.1/24) by using DNS
+ # network offering.
+ # 2. Deploy vm1 in network1.
+ # 3. Verify dhcp option 06 and 0f for subnet
+ # 4. Verify dhcp option 06,15 and 0f for vm Interface.
+ # 5. Update Network domain and verify it is properly updated
+
+ # update Network Domain at zone level
+ cmd = updateZone.updateZoneCmd()
+ cmd.id = self.zone.id
+ cmd.domain = "isolated.com"
+ self.apiclient.updateZone(cmd)
+
+ self.debug("Creating and enabling Nuage Vsp Isolated Network "
+ "offering...")
+ network_offering = self.create_NetworkOffering(
+ self.dnsdata["isolated_network_offering"])
+ self.validate_NetworkOffering(network_offering, state="Enabled")
+
+ network_1 = self.create_Network(network_offering)
+ vm_1 = self.create_VM(network_1)
+
+ # VSD verification
+ self.verify_vsd_network(self.domain.id, network_1)
+ self.verify_vsd_vm(vm_1)
+
+ # Internal DNS check point on VSD
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "isolated.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "isolated.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ update_response = Network.update(
+ network_1, self.apiclient, id=network_1.id,
+ networkdomain="update.com", changecidr=False)
+ completeoutput = str(update_response).strip('[]')
+ self.debug("network update response is " + completeoutput)
+ self.assertEqual("update.com", update_response.networkdomain,
+ "Network Domain is not updated as expected"
+ )
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "update.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "update.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ # stop and start VM to get new DHCP option
+ try:
+ vm_1.stop(self.apiclient)
+ except Exception as e:
+ self.fail("Failed to stop the virtual instances, %s" % e)
+
+ try:
+ vm_1.start(self.apiclient)
+ except Exception as e:
+ self.fail("Failed to start the virtual instances, %s" % e)
+
+ self.test_data["virtual_machine"]["displayname"] = "vm2"
+ self.test_data["virtual_machine"]["name"] = "vm2"
+ vm_2 = self.create_VM(network_1)
+ self.test_data["virtual_machine"]["displayname"] = "vm1"
+ self.test_data["virtual_machine"]["name"] = "vm1"
+ self.verify_vsd_vm(vm_2)
+ for nic in vm_2.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(
+ self.DOMAINNAME, "update.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True)
+
+ public_ip_1 = self.acquire_PublicIPAddress(network_1)
+ self.create_and_verify_fw(vm_1, public_ip_1, network_1)
+
+ vm_public_ip = public_ip_1.ipaddress.ipaddress
+
+ try:
+ vm_1.ssh_ip = vm_public_ip
+ vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"]
+ vm_1.username = self.test_data["virtual_machine"]["username"]
+ vm_1.password = self.test_data["virtual_machine"]["password"]
+ self.debug("SSHing into VM: %s with %s" %
+ (vm_1.ssh_ip, vm_1.password))
+
+ ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip)
+
+ except Exception as e:
+ self.fail("SSH into VM failed with exception: %s " % e)
+
+ cmd = 'ping -c 2 vm2'
+ self.debug("ping vm2 by hostname with command: " + cmd)
+ outputlist = ssh.execute(cmd)
+ self.debug("command is executed properly " + cmd)
+ completeoutput = str(outputlist).strip('[]')
+ self.debug("complete output is " + completeoutput)
+ expectedlist = ['2 received', 'vm2.update.com', vm_2.ipaddress]
+ for item in expectedlist:
+ if item in completeoutput:
+ self.debug("excepted value found in vm: " + item)
+ else:
+ self.fail("excepted value not found in vm: " + item)
+
+ @attr(tags=["advanced", "nuagevsp"], required_hardware="false")
+ def test_05_VPC_Network_With_InternalDns(self):
+ """ Verify InternalDns on VPC Network
+ """
+
+ # Validate the following
+ # 1. Create a VPC and tier network by using DNS network offering.
+ # 2. Deploy vm1 in tier network.
+ # 3. Verify dhcp option 06 and 0f for subnet
+ # 4. Verify dhcp option 06,15 and 0f for vm Interface.
+
+ cmd = updateZone.updateZoneCmd()
+ cmd.id = self.zone.id
+ cmd.domain = "vpc.com"
+ self.apiclient.updateZone(cmd)
+ vpc_off = self.create_VpcOffering(self.dnsdata["vpc_offering"])
+ self.validate_VpcOffering(vpc_off, state="Enabled")
+
+ vpc = self.create_Vpc(vpc_off, cidr='10.1.0.0/16', cleanup=False)
+
+ self.debug("Creating Nuage Vsp VPC Network offering...")
+ network_offering = self.create_NetworkOffering(
+ self.dnsdata["vpc_network_offering"])
+ self.validate_NetworkOffering(network_offering, state="Enabled")
+ network_1 = self.create_Network(
+ network_offering, gateway='10.1.1.1', vpc=vpc)
+
+ vm_1 = self.create_VM(network_1)
+
+ # VSD verification
+ self.verify_vsd_network(self.domain.id, network_1, vpc)
+ self.verify_vsd_vm(vm_1)
+
+ # Internal DNS check point on VSD
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ @attr(tags=["advanced", "nuagevsp"], required_hardware="true")
+ def test_06_VPC_Network_With_InternalDns(self):
+ """ Verify InternalDns on VPC Network by ping with hostname
+ """
+
+ # Validate the following
+ # 1. Create a VPC and Tier network by using DNS network offering.
+ # 2. Deploy vm1 in Tier network network1.
+ # 3. Verify dhcp option 06 and 0f for subnet
+ # 4. Verify dhcp option 06,15 and 0f for vm Interface.
+ # 5. Deploy Vm2.
+ # 6. Verify end to end by pinging with hostname
+
+ cmd = updateZone.updateZoneCmd()
+ cmd.id = self.zone.id
+ cmd.domain = "vpc.com"
+ self.apiclient.updateZone(cmd)
+
+ vpc_off = self.create_VpcOffering(self.dnsdata["vpc_offering"])
+ self.validate_VpcOffering(vpc_off, state="Enabled")
+ vpc = self.create_Vpc(vpc_off, cidr='10.1.0.0/16', cleanup=False)
+
+ self.debug("Creating Nuage Vsp VPC Network offering...")
+ network_offering = self.create_NetworkOffering(
+ self.dnsdata["vpc_network_offering"])
+ self.validate_NetworkOffering(network_offering, state="Enabled")
+ network_1 = self.create_Network(
+ network_offering, gateway='10.1.1.1', vpc=vpc)
+
+ vm_1 = self.create_VM(network_1)
+
+ # VSD verification
+ self.verify_vsd_network(self.domain.id, network_1, vpc)
+ self.verify_vsd_vm(vm_1)
+ # Internal DNS check point on VSD
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", network_1)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", network_1)
+ for nic in vm_1.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm1", nic, True)
+
+ self.test_data["virtual_machine"]["displayname"] = "vm2"
+ self.test_data["virtual_machine"]["name"] = "vm2"
+ vm_2 = self.create_VM(network_1)
+ self.test_data["virtual_machine"]["displayname"] = "vm1"
+ self.test_data["virtual_machine"]["name"] = "vm1"
+ self.verify_vsd_vm(vm_2)
+ for nic in vm_2.nic:
+ self.verify_vsd_dhcp_option(self.DNS, "10.1.1.2", nic, True)
+ self.verify_vsd_dhcp_option(self.DOMAINNAME, "vpc.com", nic, True)
+ self.verify_vsd_dhcp_option(self.HOSTNAME, "vm2", nic, True)
+
+ public_ip_1 = self.acquire_PublicIPAddress(network_1, vpc)
+ self.create_StaticNatRule_For_VM(vm_1, public_ip_1, network_1)
+ # Adding Network ACL rule in the Public tier
+ self.debug("Adding Network ACL rule to make the created NAT rule "
+ "(SSH) accessible...")
+ public_ssh_rule = self.create_NetworkAclRule(
+ self.test_data["ingress_rule"], network=network_1)
+
+ # VSD verification
+ self.verify_vsd_firewall_rule(public_ssh_rule)
+ vm_public_ip = public_ip_1.ipaddress.ipaddress
+
+ try:
+ vm_1.ssh_ip = vm_public_ip
+ vm_1.ssh_port = self.test_data["virtual_machine"]["ssh_port"]
+ vm_1.username = self.test_data["virtual_machine"]["username"]
+ vm_1.password = self.test_data["virtual_machine"]["password"]
+ self.debug("SSHing into VM: %s with %s" %
+ (vm_1.ssh_ip, vm_1.password))
+
+ ssh = vm_1.get_ssh_client(ipaddress=vm_public_ip)
+
+ except Exception as e:
+ self.fail("SSH into VM failed with exception %s" % e)
+
+ cmd = 'ping -c 2 vm2'
+ self.debug("ping vm2 by hostname with command: " + cmd)
+ outputlist = ssh.execute(cmd)
+ self.debug("command is executed properly " + cmd)
+ completeoutput = str(outputlist).strip('[]')
+ self.debug("complete output is " + completeoutput)
+ expectedlist = ['2 received', 'vm2.vpc.com', vm_2.ipaddress]
+ for item in expectedlist:
+ if item in completeoutput:
+ self.debug("excepted value found in vm: " + item)
+ else:
+ self.fail("excepted value not found in vm: " + item)
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a97d54f3/test/integration/plugins/nuagevsp/test_nuage_password_reset.py
----------------------------------------------------------------------
diff --git a/test/integration/plugins/nuagevsp/test_nuage_password_reset.py b/test/integration/plugins/nuagevsp/test_nuage_password_reset.py
index bd8bba6..1ab6d57 100644
--- a/test/integration/plugins/nuagevsp/test_nuage_password_reset.py
+++ b/test/integration/plugins/nuagevsp/test_nuage_password_reset.py
@@ -15,7 +15,8 @@
# specific language governing permissions and limitations
# under the License.
-""" Component tests for user data and password reset functionality with Nuage VSP SDN plugin
+""" Component tests for user data and password reset functionality with
+Nuage VSP SDN plugin
"""
# Import Local Modules
from nuageTestCase import nuageTestCase
@@ -31,7 +32,8 @@ import base64
class TestNuagePasswordReset(nuageTestCase):
- """Test user data and password reset functionality with Nuage VSP SDN plugin
+ """Test user data and password reset functionality with
+ Nuage VSP SDN plugin
"""
@classmethod
@@ -60,22 +62,26 @@ class TestNuagePasswordReset(nuageTestCase):
if isinstance(list_volume, list):
self.volume = list_volume[0]
else:
- raise Exception("Exception: Unable to find root volume for VM with ID - %s" % vm.id)
- self.pw_enabled_template = Template.create(self.api_client,
- self.test_data["template"],
- self.volume.id,
- account=self.account.name,
- domainid=self.account.domainid
- )
+ raise Exception("Exception: Unable to find root volume for VM "
+ "with ID - %s" % vm.id)
+ self.pw_enabled_template = Template.create(
+ self.api_client,
+ self.test_data["template"],
+ self.volume.id,
+ account=self.account.name,
+ domainid=self.account.domainid
+ )
self.assertEqual(self.pw_enabled_template.passwordenabled, True,
- "template is not passwordenabled"
+ "Template is not password enabled"
)
self.cleanup.append(self.pw_enabled_template)
self.debug("Created guest VM template")
- # updateTemplate - Updates value of the guest VM template's password enabled setting
+ # updateTemplate - Updates value of the guest VM template's password
+ # enabled setting
def updateTemplate(self, value):
- self.debug("Updating value of guest VM template's password enabled setting")
+ self.debug("Updating value of guest VM template's password enabled "
+ "setting")
cmd = updateTemplate.updateTemplateCmd()
cmd.id = self.template.id
cmd.passwordenabled = value
@@ -96,7 +102,8 @@ class TestNuagePasswordReset(nuageTestCase):
user_data_url = 'curl "http://' + gateway + ':80/latest/user-data"'
return user_data_url
- # create_and_verify_fw - Creates and verifies (Ingress) firewall rule with a Static NAT rule enabled public IP
+ # create_and_verify_fw - Creates and verifies (Ingress) firewall rule with
+ # a Static NAT rule enabled public IP
def create_and_verify_fw(self, vm, public_ip, network):
self.debug("Creating and verifying firewall rule")
self.create_StaticNatRule_For_VM(vm, public_ip, network)
@@ -104,7 +111,8 @@ class TestNuagePasswordReset(nuageTestCase):
# VSD verification
self.verify_vsd_floating_ip(network, vm, public_ip.ipaddress)
- fw_rule = self.create_FirewallRule(public_ip, self.test_data["ingress_rule"])
+ fw_rule = self.create_FirewallRule(
+ public_ip, self.test_data["ingress_rule"])
# VSD verification
self.verify_vsd_firewall_rule(fw_rule)
@@ -122,14 +130,17 @@ class TestNuagePasswordReset(nuageTestCase):
if vm.state != 'Stopped':
raise Exception("Failed to stop VM (ID: %s) " % self.vm.id)
else:
- raise Exception("Invalid response from list_virtual_machines VM (ID: %s) " % self.vm.id)
+ raise Exception("Invalid response from list_virtual_machines VM "
+ "(ID: %s) " % self.vm.id)
self.debug("Stopped VM")
- # install_cloud_set_guest_password_script - Installs the cloud-set-guest-password script from people.apache.org in
- # the given VM (SSH client)
+ # install_cloud_set_guest_password_script - Installs the
+ # cloud-set-guest-password script from people.apache.org in the given VM
+ # (SSH client)
def install_cloud_set_guest_password_script(self, ssh_client):
self.debug("Installing cloud-set-guest-password script")
- cmd = "cd /etc/init.d;wget http://people.apache.org/~tsp/cloud-set-guest-password"
+ cmd = "cd /etc/init.d;wget http://people.apache.org/~tsp/" \
+ "cloud-set-guest-password"
result = self.execute_cmd(ssh_client, cmd)
self.debug("wget file cloud-set-guest-password: " + result)
if "200 OK" not in result:
@@ -145,53 +156,71 @@ class TestNuagePasswordReset(nuageTestCase):
@attr(tags=["advanced", "nuagevsp"], required_hardware="true")
def test_nuage_UserDataPasswordReset(self):
- """Test user data and password reset functionality with Nuage VSP SDN plugin
+ """Test user data and password reset functionality with
+ Nuage VSP SDN plugin
"""
- # 1. Create an Isolated Network with Nuage VSP Isolated Network offering, check if it is successfully created
- # and is in the "Allocated" state.
+ # 1. Create an Isolated Network with Nuage VSP Isolated Network
+ # offering, check if it is successfully created and is in the
+ # "Allocated" state.
# 2. Set password enabled to false in the guest VM template.
- # 3. Deploy a VM in the created Isolated network with user data, check if the Isolated network state is changed
- # to "Implemented", and both the VM & VR are successfully deployed and are in the "Running" state.
- # 4. Verify that the guest VM template is not password enabled by checking the deployed VM's password
- # (password == "password").
- # 5. SSH into the deployed VM and verify its user data (expected user data == actual user data).
- # 6. Check for cloud-set-guest-password script in the deployed VM for testing password reset functionality.
- # 7. if cloud-set-guest-password script does not exist in the deployed VM:
- # 7.1 Install the cloud-set-guest-password script from people.apache.org in the deployed VM.
- # 7.2 Stop the deployed VM, and create a new password enabled guest VM template with it.
- # 7.3 Deploy a new VM in the created Isolated network with the newly created guest VM template,
- # check if the VM is successfully deployed and is in the "Running" state.
- # 7.4 Verify that the new guest VM template is password enabled by checking the newly deployed VM's
- # password (password != "password").
+ # 3. Deploy a VM in the created Isolated network with user data, check
+ # if the Isolated network state is changed to "Implemented", and
+ # both the VM & VR are successfully deployed and are in the
+ # "Running" state.
+ # 4. Verify that the guest VM template is not password enabled by
+ # checking the deployed VM's password (password == "password").
+ # 5. SSH into the deployed VM and verify its user data
+ # (expected user data == actual user data).
+ # 6. Check for cloud-set-guest-password script in the deployed VM for
+ # testing password reset functionality.
+ # 7. if cloud-set-guest-password script does not exist in the deployed
+ # VM:
+ # 7.1 Install the cloud-set-guest-password script from
+ # people.apache.org in the deployed VM.
+ # 7.2 Stop the deployed VM, and create a new password enabled
+ # guest VM template with it.
+ # 7.3 Deploy a new VM in the created Isolated network with the
+ # newly created guest VM template, check if the VM is
+ # successfully deployed and is in the "Running" state.
+ # 7.4 Verify that the new guest VM template is password enabled
+ # by checking the newly deployed VM's password
+ # (password != "password").
# 7.5 SSH into the newly deployed VM for verifying its password.
# 8. else cloud-set-guest-password script exists in the deployed VM:
# 8.1 Change password enabled to true in the guest VM template.
# 8.2 Verify that the guest VM template is password enabled.
# 9. Reset VM password, and start the VM.
- # 10. Verify that the new guest VM template is password enabled by checking the VM's password
- # (password != "password").
- # 11. SSH into the VM for verifying its new password after its password reset.
- # 12. Set password enabled to the default value in the guest VM template.
+ # 10. Verify that the new guest VM template is password enabled by
+ # checking the VM's password (password != "password").
+ # 11. SSH into the VM for verifying its new password after its password
+ # reset.
+ # 12. Set password enabled to the default value in the guest VM
+ # template.
# 13. Delete all the created objects (cleanup).
- self.debug("Testing user data & password reset functionality in an Isolated network...")
+ self.debug("Testing user data & password reset functionality in an "
+ "Isolated network...")
self.debug("Creating an Isolated network...")
- net_off = self.create_NetworkOffering(self.test_data["nuagevsp"]["isolated_network_offering"])
+ net_off = self.create_NetworkOffering(
+ self.test_data["nuagevsp"]["isolated_network_offering"])
self.network = self.create_Network(net_off)
self.validate_Network(self.network, state="Allocated")
- self.debug("Setting password enabled to false in the guest VM template...")
+ self.debug("Setting password enabled to false in the guest VM "
+ "template...")
self.defaultTemplateVal = self.template.passwordenabled
if self.template.passwordenabled:
self.updateTemplate(False)
- self.debug("Deploying a VM in the created Isolated network with user data...")
+ self.debug("Deploying a VM in the created Isolated network with user "
+ "data...")
expected_user_data = "hello world vm1"
user_data = base64.b64encode(expected_user_data)
self.test_data["virtual_machine_userdata"]["userdata"] = user_data
- self.vm_1 = self.create_VM(self.network, testdata=self.test_data["virtual_machine_userdata"])
+ self.vm_1 = self.create_VM(
+ self.network, testdata=self.test_data["virtual_machine_userdata"])
self.validate_Network(self.network, state="Implemented")
vr = self.get_Router(self.network)
self.check_Router_state(vr, state="Running")
@@ -202,11 +231,15 @@ class TestNuagePasswordReset(nuageTestCase):
self.verify_vsd_router(vr)
self.verify_vsd_vm(self.vm_1)
- self.debug("verifying that the guest VM template is not password enabled...")
- self.debug("VM - %s password - %s !" % (self.vm_1.name, self.vm_1.password))
- self.assertEqual(self.vm_1.password, self.test_data["virtual_machine_userdata"]["password"],
- "Password is enabled for the VM (vm_1)"
- )
+ self.debug("verifying that the guest VM template is not password "
+ "enabled...")
+ self.debug("VM - %s password - %s !" %
+ (self.vm_1.name, self.vm_1.password))
+ self.assertEqual(
+ self.vm_1.password,
+ self.test_data["virtual_machine_userdata"]["password"],
+ "Password is enabled for the VM (vm_1)"
+ )
self.debug("SSHing into the VM for verifying its user data...")
public_ip_1 = self.acquire_PublicIPAddress(self.network)
@@ -214,27 +247,35 @@ class TestNuagePasswordReset(nuageTestCase):
ssh = self.ssh_into_VM(self.vm_1, public_ip_1)
user_data_cmd = self.get_userdata_url(self.vm_1)
self.debug("Getting user data with command: " + user_data_cmd)
- actual_user_data = base64.b64decode(self.execute_cmd(ssh, user_data_cmd))
- self.debug("Actual user data - " + actual_user_data + ", Expected user data - " + expected_user_data)
+ actual_user_data = base64.b64decode(self.execute_cmd
+ (ssh, user_data_cmd))
+ self.debug("Actual user data - " + actual_user_data +
+ ", Expected user data - " + expected_user_data)
self.assertEqual(actual_user_data, expected_user_data,
"Un-expected VM (VM_1) user data"
)
- self.debug("Checking for cloud-set-guest-password script in the VM for testing password reset functionality...")
+ self.debug("Checking for cloud-set-guest-password script in the VM "
+ "for testing password reset functionality...")
ls_cmd = "ls /etc/init.d/cloud-set-guest-password"
ls_result = self.execute_cmd(ssh, ls_cmd)
ls_result = ls_result.lower()
self.debug("Response from ls_cmd: " + ls_result)
if "no such file" in ls_result:
self.debug("No cloud-set-guest-password script in the VM")
- self.debug("Installing the cloud-set-guest-password script from people.apache.org in the VM...")
+ self.debug("Installing the cloud-set-guest-password script from "
+ "people.apache.org in the VM...")
self.install_cloud_set_guest_password_script(ssh)
- self.debug("Stopping the VM, and creating a new password enabled guest VM template with it...")
+ self.debug("Stopping the VM, and creating a new password enabled "
+ "guest VM template with it...")
self.stop_vm(self.vm_1)
self.create_template(self.vm_1)
- self.debug("Deploying a new VM in the created Isolated network with the newly created guest VM template...")
- self.vm_2 = self.create_VM(self.network, testdata=self.test_data["virtual_machine_userdata"])
+ self.debug("Deploying a new VM in the created Isolated network "
+ "with the newly created guest VM template...")
+ self.vm_2 = self.create_VM(
+ self.network,
+ testdata=self.test_data["virtual_machine_userdata"])
self.debug("Starting the VM...")
vm_2a = self.vm_2.start(self.api_client)
self.vm_2.password = vm_2a.password.strip()
@@ -243,11 +284,15 @@ class TestNuagePasswordReset(nuageTestCase):
# VSD verification
self.verify_vsd_vm(self.vm_2)
- self.debug("verifying that the guest VM template is password enabled...")
- self.debug("VM - %s password - %s !" % (self.vm_2.name, self.vm_2.password))
- self.assertNotEqual(self.vm_2.password, self.test_data["virtual_machine_userdata"]["password"],
- "Password is not enabled for the VM"
- )
+ self.debug("verifying that the guest VM template is password "
+ "enabled...")
+ self.debug("VM - %s password - %s !" %
+ (self.vm_2.name, self.vm_2.password))
+ self.assertNotEqual(
+ self.vm_2.password,
+ self.test_data["virtual_machine_userdata"]["password"],
+ "Password is not enabled for the VM"
+ )
self.debug("SSHing into the VM for verifying its password...")
public_ip_2 = self.acquire_PublicIPAddress(self.network)
@@ -272,14 +317,20 @@ class TestNuagePasswordReset(nuageTestCase):
self.debug("Starting the VM")
vm_test.start(self.api_client)
- self.debug("verifying that the guest VM template is password enabled...")
- self.debug("VM - %s password - %s !" % (vm_test.name, vm_test.password))
- self.assertNotEqual(vm_test.password, self.test_data["virtual_machine_userdata"]["password"],
- "Password is not enabled for the VM"
- )
-
- self.debug("SSHing into the VM for verifying its new password after its password reset...")
+ self.debug("verifying that the guest VM template is password "
+ "enabled...")
+ self.debug("VM - %s password - %s !" %
+ (vm_test.name, vm_test.password))
+ self.assertNotEqual(
+ vm_test.password,
+ self.test_data["virtual_machine_userdata"]["password"],
+ "Password is not enabled for the VM"
+ )
+
+ self.debug("SSHing into the VM for verifying its new password after "
+ "its password reset...")
self.ssh_into_VM(vm_test, vm_test_public_ip)
- self.debug("Setting password enabled to the default value in the guest VM template...")
+ self.debug("Setting password enabled to the default value in the "
+ "guest VM template...")
self.updateTemplate(self.defaultTemplateVal)