You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ta...@apache.org on 2015/04/08 09:10:07 UTC

[1/2] git commit: updated refs/heads/master to 974c564

Repository: cloudstack
Updated Branches:
  refs/heads/master 096d1b93b -> 974c56423


added two test case related to restore VM functionality


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

Branch: refs/heads/master
Commit: 433e6a2bd4634f3a1ce8525ccd5601b7e27190b7
Parents: 096d1b9
Author: shweta agarwal <sh...@citrix.com>
Authored: Mon Mar 16 12:55:41 2015 +0530
Committer: shweta agarwal <sh...@citrix.com>
Committed: Tue Apr 7 11:16:20 2015 +0530

----------------------------------------------------------------------
 .../component/test_escalations_instances.py     |  371 +++++-
 tools/marvin/marvin/config/test_data.py         | 1174 ++++++++++--------
 2 files changed, 988 insertions(+), 557 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/433e6a2b/test/integration/component/test_escalations_instances.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_escalations_instances.py b/test/integration/component/test_escalations_instances.py
index 4b22016..3cd65f7 100644
--- a/test/integration/component/test_escalations_instances.py
+++ b/test/integration/component/test_escalations_instances.py
@@ -16,27 +16,11 @@
 # under the License.
 
 # Import Local Modules
-from marvin.cloudstackTestCase import cloudstackTestCase, unittest
-from marvin.lib.utils import cleanup_resources, validateList
-from marvin.lib.base import (Account,
-                             ServiceOffering,
-                             NetworkOffering,
-                             Network,
-                             VirtualMachine,
-                             SecurityGroup,
-                             DiskOffering,
-                             Resources,
-                             Iso,
-                             Configurations,
-                             SSHKeyPair,
-                             Volume,
-                             VmSnapshot,
-                             Zone)
-from marvin.lib.common import (get_zone,
-                               get_template,
-                               get_domain,
-                               find_storage_pool_type)
-from marvin.codes import PASS
+from marvin.cloudstackTestCase import cloudstackTestCase
+from marvin.lib.utils import *
+from marvin.lib.common import *
+from marvin.lib.base import *
+from marvin.sshClient import SshClient
 from nose.plugins.attrib import attr
 
 
@@ -2192,6 +2176,348 @@ class TestInstances(cloudstackTestCase):
                     (exp_val, act_val))
         return return_flag
 
+    @attr(tags=["Xenserver"], required_hardware="false")
+    def test_27_VM_restore_ES3467(self):
+        """
+        @Desc:Test to verify  order of root and data disk remains same on Xenserver after VM reset
+        @Steps :
+        1.Create VM with data disk from Windows template
+        5.check disk sequence on hypervisor: 1st = root disk, 2nd = data disk
+        6. Issue "reset VM" command on CCP
+        7. check disk sequence on hypervisor remains same and VM starts successfully
+        """
+        try:
+            template = Template.register(self.apiClient,
+                                         self.services["Windows 7 (64-bit)"],
+                                         zoneid=self.zone.id,
+                                         account=self.account.name,
+                                         domainid=self.domain.id)
+
+            self.debug(
+                "Registered a template of format: %s with ID: %s" % (
+                    self.services["Windows 7 (64-bit)"]["format"],
+                    template.id
+                ))
+            template.download(self.apiClient)
+            self.cleanup.append(template)
+            # Wait for template status to be changed across
+            time.sleep(self.services["sleep"])
+            timeout = self.services["timeout"]
+            while True:
+                list_template_response = Template.list(
+                    self.apiClient,
+                    templatefilter='all',
+                    id=template.id,
+                    zoneid=self.zone.id,
+                    account=self.account.name,
+                    domainid=self.account.domainid)
+                if isinstance(list_template_response, list):
+                    break
+                elif timeout == 0:
+                    raise Exception("List template failed!")
+
+                time.sleep(5)
+                timeout -= 1
+            # Verify template response to check whether template added successfully
+            self.assertEqual(
+                isinstance(list_template_response, list),
+                True,
+                "Check for list template response return valid data"
+            )
+
+            self.assertNotEqual(
+                len(list_template_response),
+                0,
+                "Check template available in List Templates"
+            )
+
+            template_response = list_template_response[0]
+            self.assertEqual(
+                template_response.isready,
+                True,
+                "Template state is not ready, it is %s" % template_response.isready
+            )
+            disk_offering = DiskOffering.create(
+                self.api_client,
+                self.services["disk_offering"]
+            )
+            self.cleanup.append(disk_offering)
+            # Deploy new virtual machine using template
+            virtual_machine = VirtualMachine.create(
+                self.apiClient,
+                self.services["virtual_machine"],
+                templateid=template.id,
+                accountid=self.account.name,
+                domainid=self.account.domainid,
+                serviceofferingid=self.service_offering.id,
+                diskofferingid=disk_offering.id
+            )
+            self.debug("creating an instance with template ID: %s" % template.id)
+            vm_response = VirtualMachine.list(self.apiClient,
+                                              id=virtual_machine.id,
+                                              account=self.account.name,
+                                              domainid=self.account.domainid)
+            self.assertEqual(
+                isinstance(vm_response, list),
+                True,
+                "Check for list VMs response after VM deployment"
+            )
+            # Verify VM response to check whether VM deployment was successful
+            self.assertNotEqual(
+                len(vm_response),
+                0,
+                "Check VMs available in List VMs response"
+            )
+            vm = vm_response[0]
+            self.assertEqual(
+                vm.state,
+                'Running',
+                "Check the state of VM created from Template"
+            )
+            self.cleanup.append(virtual_machine)
+            list_volume_response = Volume.list(
+                self.apiClient,
+                virtualmachineid=virtual_machine.id,
+                type='ROOT',
+                listall=True
+            )
+            cmd = "xe vbd-list  vm-name-label=" + virtual_machine.instancename + " vdi-name-label=" + \
+                  list_volume_response[0].name + " userdevice=0 --minimal"
+            hosts = Host.list(self.apiClient, id=virtual_machine.hostid)
+            self.assertEqual(
+                isinstance(hosts, list),
+                True,
+                "Check list host returns a valid list")
+            host = hosts[0]
+            if self.hypervisor.lower() in ('xenserver'):
+                #
+                # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
+                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                result = ssh.execute(cmd)
+                res = str(result)
+                self.assertNotEqual(res, "", "root disk should have user device=0")
+
+            self.debug("Restoring  the VM: %s" % virtual_machine.id)
+            # Restore VM
+            virtual_machine.restore(self.apiClient, template.id)
+            vm_response = VirtualMachine.list(
+                self.apiClient,
+                id=virtual_machine.id,
+            )
+            hosts = Host.list(self.apiClient, id=virtual_machine.hostid)
+            self.assertEqual(
+                isinstance(hosts, list),
+                True,
+                "Check list host returns a valid list")
+            host = hosts[0]
+            if self.hypervisor.lower() in 'xenserver':
+                #
+                # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
+                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                result = ssh.execute(cmd)
+                res = str(result)
+                self.assertNotEqual(res, "", "root disk should have user device=0")
+
+            #
+            # Verify VM response to check whether VM deployment was successful
+            self.assertNotEqual(
+                len(vm_response),
+                0,
+                "Check VMs available in List VMs response"
+            )
+            self.assertEqual(
+                isinstance(vm_response, list),
+                True,
+                "Check list VM response for valid list"
+            )
+            vm = vm_response[0]
+            self.assertEqual(
+                vm.state,
+                'Running',
+                "Check the state of VM"
+            )
+        except Exception as e:
+            self.fail("Exception occurred: %s" % e)
+        return
+
+    @attr(tags=["Xenserver"], required_hardware="false")
+    def test_28_VM_restore_ES3467(self):
+        """
+        @Desc:Test to verify  order of root and data disk remains same on Xenserver after VM reset
+        @Steps :
+        1.Create VM from Centos template
+        3.Add data disk to VM
+        5.check disk sequence on hypervisor: 1st = root disk, 2nd = data disk
+        6. Issue "reset VM" command on CCP
+        7. check disk sequence on hypervisor remains same and VM starts successfully
+        """
+        try:
+            # Deploy new virtual machine using template
+            virtual_machine = VirtualMachine.create(
+                self.apiClient,
+                self.services["virtual_machine"],
+                accountid=self.account.name,
+                domainid=self.account.domainid,
+                serviceofferingid=self.service_offering.id
+
+            )
+            self.cleanup.append(virtual_machine)
+            self.debug("creating an instance with template ID: %s" % self.template.id)
+            vm_response = VirtualMachine.list(self.apiClient,
+                                              id=virtual_machine.id,
+                                              account=self.account.name,
+                                              domainid=self.account.domainid)
+            self.assertEqual(
+                isinstance(vm_response, list),
+                True,
+                "Check for list VMs response after VM deployment"
+            )
+            # Verify VM response to check whether VM deployment was successful
+            self.assertNotEqual(
+                len(vm_response),
+                0,
+                "Check VMs available in List VMs response"
+            )
+            vm = vm_response[0]
+            self.assertEqual(
+                vm.state,
+                'Running',
+                "Check the state of VM created from Template"
+            )
+            disk_offering = DiskOffering.create(
+                self.api_client,
+                self.services["disk_offering"]
+            )
+            self.cleanup.append(disk_offering)
+            volume = Volume.create(
+                self.apiClient,
+                self.services["volume"],
+                zoneid=self.zone.id,
+                account=self.account.name,
+                domainid=self.account.domainid,
+                diskofferingid=disk_offering.id
+            )
+            self.cleanup.append(volume)
+            # Check List Volume response for newly created volume
+            list_volume_response = Volume.list(
+                self.apiClient,
+                id=volume.id
+            )
+            self.assertNotEqual(
+                list_volume_response,
+                None,
+                "Check if volume exists in ListVolumes"
+            )
+            # Attach volume to VM
+            virtual_machine.attach_volume(
+                self.apiClient,
+                volume
+            )
+            # Check volumes attached to same VM
+            list_volume_response = Volume.list(
+                self.apiClient,
+                virtualmachineid=virtual_machine.id,
+                type='DATADISK',
+                listall=True
+            )
+
+            self.assertNotEqual(
+                list_volume_response,
+                None,
+                "Check if volume exists in ListVolumes")
+            self.assertEqual(
+                isinstance(list_volume_response, list),
+                True,
+                "Check list volumes response for valid list")
+            list_volume_response = Volume.list(
+                self.apiClient,
+                virtualmachineid=virtual_machine.id,
+                type='ROOT',
+                listall=True
+            )
+            cmd = "xe vbd-list  vm-name-label=" + virtual_machine.instancename + " vdi-name-label=" + \
+                  list_volume_response[0].name + " userdevice=0 --minimal"
+            hosts = Host.list(self.apiClient, id=virtual_machine.hostid)
+            self.assertEqual(
+                isinstance(hosts, list),
+                True,
+                "Check list host returns a valid list")
+            host = hosts[0]
+            if self.hypervisor.lower() in ('xenserver'):
+                #
+                # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
+                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                result = ssh.execute(cmd)
+                res = str(result)
+                self.assertNotEqual(res, "", "root disk should have user device=0")
+
+            # Stop VM
+            virtual_machine.stop(self.apiClient)
+
+            self.debug("Restoring the VM: %s" % virtual_machine.id)
+            # Restore VM
+            virtual_machine.restore(self.apiClient, self.template.id)
+            vm_response = VirtualMachine.list(
+                self.apiClient,
+                id=virtual_machine.id,
+            )
+            # Verify VM response to check whether VM deployment was successful
+            self.assertNotEqual(
+                len(vm_response),
+                0,
+                "Check VMs available in List VMs response"
+            )
+            self.assertEqual(
+                isinstance(vm_response, list),
+                True,
+                "Check list VM response for valid list"
+            )
+            vm = vm_response[0]
+            self.assertEqual(
+                vm.state,
+                'Stopped',
+                "Check the state of VM"
+            )
+            # Start VM
+            virtual_machine.start(self.apiClient)
+            # Sleep to ensure that VM is in ready state
+            time.sleep(self.services["sleep"])
+            if self.hypervisor.lower() in 'xenserver':
+                #
+                # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
+                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                result = ssh.execute(cmd)
+                res = str(result)
+                self.assertNotEqual(res, "", "root disk should have user device=0")
+
+            vm_response = VirtualMachine.list(
+                self.apiClient,
+                id=virtual_machine.id,
+            )
+            self.assertEqual(
+                isinstance(vm_response, list),
+                True,
+                "Check list VM response for valid list"
+            )
+
+            # Verify VM response to check whether VM deployment was successful
+            self.assertNotEqual(
+                len(vm_response),
+                0,
+                "Check VMs available in List VMs response"
+            )
+
+            vm = vm_response[0]
+            self.assertEqual(
+                vm.state,
+                'Running',
+                "Check the state of VM"
+            )
+        except Exception as e:
+            self.fail("Exception occurred: %s" % e)
+        return
+
+
     @attr(tags=["advanced", "basic"], required_hardware="true")
     def test_13_attach_detach_iso(self):
         """
@@ -4059,3 +4385,6 @@ class TestInstances(cloudstackTestCase):
                 "Warning: Exception in expunging vms vm3 and vm4 : %s" %
                 e)
         return
+
+
+

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/433e6a2b/tools/marvin/marvin/config/test_data.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/config/test_data.py b/tools/marvin/marvin/config/test_data.py
index bda57a3..6ebf09e 100644
--- a/tools/marvin/marvin/config/test_data.py
+++ b/tools/marvin/marvin/config/test_data.py
@@ -6,7 +6,7 @@
 # "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
+# 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
@@ -25,7 +25,7 @@ test_data = {
     "hypervisor": "XenServer",
     "deleteDC": True,
     "vdomain": {
-            "name": "domain"
+        "name": "domain"
     },
     "domain": {"name": "domain"},
     "email": "test@test.com",
@@ -38,7 +38,7 @@ test_data = {
     "isportable": "true",
 
     "project": {
-            "name": "Project",
+        "name": "Project",
         "displaytext": "Test project"
     },
     "publiciprange": {
@@ -51,11 +51,11 @@ test_data = {
         "zoneid": ""
     },
     "private_gateway": {
-       "ipaddress": "172.16.1.2",
-       "gateway": "172.16.1.1",
-       "netmask": "255.255.255.0",
-       "vlan":"10",
-       "name":"test_private_gateway"
+        "ipaddress": "172.16.1.2",
+        "gateway": "172.16.1.1",
+        "netmask": "255.255.255.0",
+        "vlan": "10",
+        "name": "test_private_gateway"
     },
     "account": {
         "email": "test-account@test.com",
@@ -151,6 +151,22 @@ test_data = {
             "hosttags": "vmsync",
         },
     },
+    "service_offering_h1": {
+            "name": "Tagged h1 Small Instance",
+            "displaytext": "Tagged h1 Small Instance",
+            "cpunumber": 1,
+            "cpuspeed": 100,
+            "memory": 256,
+            "hosttags": "h1"
+    },
+    "service_offering_h2": {
+            "name": "Tagged h2 Small Instance",
+            "displaytext": "Tagged h2 Small Instance",
+            "cpunumber": 1,
+            "cpuspeed": 100,
+            "memory": 256,
+            "hosttags": "h2"
+    },
     "disk_offering": {
         "name": "Disk offering",
         "displaytext": "Disk offering",
@@ -161,6 +177,16 @@ test_data = {
         "name": "Resized",
         "disksize": 3
     },
+    'disk_offering_shared_5GB': {
+        "displaytext": "disk_offering_shared_5GB",
+        "name": "disk_offering_shared_5GB",
+        "disksize": 5
+    },
+    'disk_offering_shared_15GB': {
+        "displaytext": "disk_offering_shared_5GB",
+        "name": "disk_offering_shared_5GB",
+        "disksize": 15
+    },
     "network": {
         "name": "Test Network",
         "displaytext": "Test Network",
@@ -184,30 +210,30 @@ test_data = {
         "traffictype": 'GUEST',
         "availability": 'Optional',
         "serviceProviderList": {
-                "Dhcp": 'VirtualRouter',
+            "Dhcp": 'VirtualRouter',
             "Dns": 'VirtualRouter',
             "SourceNat": 'VirtualRouter',
             "PortForwarding": 'VirtualRouter',
         },
     },
     "nw_off_isolated_netscaler": {
-                "name": 'Netscaler',
-                "displaytext": 'Netscaler',
-                "guestiptype": 'Isolated',
-                "supportedservices": 'Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat',
-                "traffictype": 'GUEST',
-                "availability": 'Optional',
-                "serviceProviderList": {
-                    "Dhcp": 'VirtualRouter',
-                    "Dns": 'VirtualRouter',
-                    "SourceNat": 'VirtualRouter',
-                    "PortForwarding": 'VirtualRouter',
-                    "Vpn": 'VirtualRouter',
-                    "Firewall": 'VirtualRouter',
-                    "Lb": 'Netscaler',
-                    "UserData": 'VirtualRouter',
-                    "StaticNat": 'VirtualRouter',
-                },
+        "name": 'Netscaler',
+        "displaytext": 'Netscaler',
+        "guestiptype": 'Isolated',
+        "supportedservices": 'Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat',
+        "traffictype": 'GUEST',
+        "availability": 'Optional',
+        "serviceProviderList": {
+            "Dhcp": 'VirtualRouter',
+            "Dns": 'VirtualRouter',
+            "SourceNat": 'VirtualRouter',
+            "PortForwarding": 'VirtualRouter',
+            "Vpn": 'VirtualRouter',
+            "Firewall": 'VirtualRouter',
+            "Lb": 'Netscaler',
+            "UserData": 'VirtualRouter',
+            "StaticNat": 'VirtualRouter',
+        },
     },
     "nw_off_isolated_persistent": {
         "name": 'Test Nw off isolated persistent',
@@ -218,7 +244,7 @@ test_data = {
         "ispersistent": 'True',
         "availability": 'Optional',
         "serviceProviderList": {
-                "Dhcp": 'VirtualRouter',
+            "Dhcp": 'VirtualRouter',
             "Dns": 'VirtualRouter',
             "SourceNat": 'VirtualRouter',
             "PortForwarding": 'VirtualRouter',
@@ -237,7 +263,7 @@ test_data = {
             "Dns": 'VirtualRouter',
             "SourceNat": 'VirtualRouter',
             "PortForwarding": 'VirtualRouter',
-	    "Lb": "VirtualRouter"
+            "Lb": "VirtualRouter"
         },
     },
     "isolated_network_offering": {
@@ -245,11 +271,11 @@ test_data = {
         "displaytext": "Network offering-DA services",
         "guestiptype": "Isolated",
         "supportedservices":
-        "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat",
+            "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat",
         "traffictype": "GUEST",
         "availability": "Optional'",
         "serviceProviderList": {
-                "Dhcp": "VirtualRouter",
+            "Dhcp": "VirtualRouter",
             "Dns": "VirtualRouter",
             "SourceNat": "VirtualRouter",
             "PortForwarding": "VirtualRouter",
@@ -260,34 +286,34 @@ test_data = {
             "StaticNat": "VirtualRouter"
         }
     },
-	"network_offering_vlan": {
-		    "name": 'Test Network offering',
-		    "displaytext": 'Test Network offering',
-		    "guestiptype": 'Isolated',
-		    "supportedservices": 'Dhcp,Dns,SourceNat,PortForwarding',
-		    "traffictype": 'GUEST',
-		    "specifyvlan": 'False',
-		    "availability": 'Optional',
-		    "serviceProviderList" : {
-								   "Dhcp": 'VirtualRouter',
-								   "Dns": 'VirtualRouter',
-								   "SourceNat": 'VirtualRouter',
-								   "PortForwarding": 'VirtualRouter',
-			                     },
-	},
-	"network_offering_without_sourcenat": {
-	   "name": 'Test Network offering',
-	   "displaytext": 'Test Network offering',
-	   "guestiptype": 'Isolated',
-	   "supportedservices": 'Dhcp,Dns,UserData',
-	   "traffictype": 'GUEST',
-	   "availability": 'Optional',
-	   "serviceProviderList" : {
-							   "Dhcp": 'VirtualRouter',
-							   "Dns": 'VirtualRouter',
-							   "UserData": 'VirtualRouter',
-		},
-	},
+    "network_offering_vlan": {
+    "name": 'Test Network offering',
+    "displaytext": 'Test Network offering',
+    "guestiptype": 'Isolated',
+    "supportedservices": 'Dhcp,Dns,SourceNat,PortForwarding',
+    "traffictype": 'GUEST',
+    "specifyvlan": 'False',
+    "availability": 'Optional',
+    "serviceProviderList": {
+    "Dhcp": 'VirtualRouter',
+    "Dns": 'VirtualRouter',
+    "SourceNat": 'VirtualRouter',
+    "PortForwarding": 'VirtualRouter',
+    },
+    },
+    "network_offering_without_sourcenat": {
+    "name": 'Test Network offering',
+    "displaytext": 'Test Network offering',
+    "guestiptype": 'Isolated',
+    "supportedservices": 'Dhcp,Dns,UserData',
+    "traffictype": 'GUEST',
+    "availability": 'Optional',
+    "serviceProviderList": {
+    "Dhcp": 'VirtualRouter',
+    "Dns": 'VirtualRouter',
+    "UserData": 'VirtualRouter',
+    },
+    },
     "isolated_network": {
         "name": "Isolated Network",
         "displaytext": "Isolated Network"
@@ -311,7 +337,7 @@ test_data = {
     "network_without_acl": {
         "name": "TestNetwork",
         "displaytext": "TestNetwork",
-	},
+    },
     "virtual_machine": {
         "displayname": "Test VM",
         "username": "root",
@@ -377,31 +403,31 @@ test_data = {
         "specifyIpRanges": "False",
         "traffictype": "GUEST",
         "serviceProviderList": {
-                "Dhcp": "VirtualRouter",
+            "Dhcp": "VirtualRouter",
             "Dns": "VirtualRouter",
             "UserData": "VirtualRouter"
         }
     },
     "shared_network_offering_all_services": {
-            "name": "shared network offering with services enabled",
-            "displaytext": "Shared network offering",
-            "guestiptype": "Shared",
-            "supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat",
-            "specifyVlan": "False",
-            "specifyIpRanges": "False",
-            "traffictype": "GUEST",
-            "serviceProviderList": {
-                "Dhcp": "VirtualRouter",
-                "Dns": "VirtualRouter",
-                "UserData": "VirtualRouter",
-                "SourceNat": "VirtualRouter",
-                "PortForwarding": "VirtualRouter",
-                "Vpn": "VirtualRouter",
-                "Firewall": "VirtualRouter",
-                "Lb": "VirtualRouter",
-                "UserData": "VirtualRouter",
-                "StaticNat": "VirtualRouter"
-            }
+        "name": "shared network offering with services enabled",
+        "displaytext": "Shared network offering",
+        "guestiptype": "Shared",
+        "supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat",
+        "specifyVlan": "False",
+        "specifyIpRanges": "False",
+        "traffictype": "GUEST",
+        "serviceProviderList": {
+            "Dhcp": "VirtualRouter",
+            "Dns": "VirtualRouter",
+            "UserData": "VirtualRouter",
+            "SourceNat": "VirtualRouter",
+            "PortForwarding": "VirtualRouter",
+            "Vpn": "VirtualRouter",
+            "Firewall": "VirtualRouter",
+            "Lb": "VirtualRouter",
+            "UserData": "VirtualRouter",
+            "StaticNat": "VirtualRouter"
+        }
     },
     "shared_network_offering_sg": {
         "name": "MySharedOffering-sg",
@@ -412,7 +438,7 @@ test_data = {
         "specifyIpRanges": "False",
         "traffictype": "GUEST",
         "serviceProviderList": {
-                "Dhcp": "VirtualRouter",
+            "Dhcp": "VirtualRouter",
             "Dns": "VirtualRouter",
             "UserData": "VirtualRouter",
             "SecurityGroup": "SecurityGroupProvider"
@@ -434,19 +460,19 @@ test_data = {
         "name": "VPC off",
         "displaytext": "VPC off",
         "supportedservices":
-        "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Lb,UserData,StaticNat,NetworkACL"
+            "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Lb,UserData,StaticNat,NetworkACL"
     },
     "vpc": {
         "name": "TestVPC",
         "displaytext": "TestVPC",
         "cidr": "10.0.0.1/24"
     },
-	"vpc_network_domain": {
-		"name": "TestVPC",
-		"displaytext": "TestVPC",
-		"cidr": '10.0.0.1/24',
-		"network_domain": "TestVPC"
-	},
+    "vpc_network_domain": {
+    "name": "TestVPC",
+    "displaytext": "TestVPC",
+    "cidr": '10.0.0.1/24',
+    "network_domain": "TestVPC"
+    },
     "clusters": {
         0: {
             "clustername": "Xen Cluster",
@@ -499,7 +525,7 @@ test_data = {
         "specifyVlan": "True",
         "specifyIpRanges": "True",
         "serviceProviderList": {
-                "Dhcp": 'VirtualRouter',
+            "Dhcp": 'VirtualRouter',
             "Dns": 'VirtualRouter',
             "UserData": 'VirtualRouter',
         },
@@ -538,12 +564,12 @@ test_data = {
         "displaytext": 'Network off-RVR services',
         "guestiptype": 'Isolated',
         "supportedservices":
-        'Vpn,Dhcp,Dns,SourceNat,PortForwarding,Firewall,Lb,UserData,StaticNat',
+            'Vpn,Dhcp,Dns,SourceNat,PortForwarding,Firewall,Lb,UserData,StaticNat',
         "traffictype": 'GUEST',
         "ispersistent": 'True',
         "availability": 'Optional',
         "serviceProviderList": {
-                "Vpn": 'VirtualRouter',
+            "Vpn": 'VirtualRouter',
             "Dhcp": 'VirtualRouter',
             "Dns": 'VirtualRouter',
             "SourceNat": 'VirtualRouter',
@@ -656,7 +682,7 @@ test_data = {
         "displaytext": 'Netscaler',
         "guestiptype": 'Isolated',
         "supportedservices":
-        'Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat',
+            'Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat',
         "traffictype": 'GUEST',
         "ispersistent": 'True',
         "availability": 'Optional',
@@ -673,22 +699,22 @@ test_data = {
         },
 
     },
-	"network_acl_rule": {
-		   "protocol":"TCP",
-		   "traffictype":"ingress",
-		   "cidrlist":"0.0.0.0/0",
-		   "startport":"1",
-		   "endport":"1"
-	},
+    "network_acl_rule": {
+    "protocol": "TCP",
+    "traffictype": "ingress",
+    "cidrlist": "0.0.0.0/0",
+    "startport": "1",
+    "endport": "1"
+    },
     "network_offering_internal_lb": {
         "name": "Network offering for internal lb service",
         "displaytext": "Network offering for internal lb service",
         "guestiptype": "Isolated",
         "traffictype": "Guest",
         "supportedservices":
-        "Vpn,Dhcp,Dns,Lb,UserData,SourceNat,StaticNat,PortForwarding,NetworkACL",
+            "Vpn,Dhcp,Dns,Lb,UserData,SourceNat,StaticNat,PortForwarding,NetworkACL",
         "serviceProviderList": {
-                "Dhcp": "VpcVirtualRouter",
+            "Dhcp": "VpcVirtualRouter",
             "Dns": "VpcVirtualRouter",
             "Vpn": "VpcVirtualRouter",
             "UserData": "VpcVirtualRouter",
@@ -723,18 +749,18 @@ test_data = {
         "protocol": 'TCP'
     },
     "icmprule": {
-        "icmptype":-1,
-        "icmpcode":-1,
+        "icmptype": -1,
+        "icmpcode": -1,
         "cidrlist": "0.0.0.0/0",
         "protocol": "ICMP"
     },
     "iso": {
-            "displaytext": "Test ISO",
-            "name": "ISO",
-            "url": "http://people.apache.org/~tsp/dummy.iso",
-            "bootable": False,
-            "ispublic": False,
-            "ostype": "Other (64-bit)",
+        "displaytext": "Test ISO",
+        "name": "ISO",
+        "url": "http://people.apache.org/~tsp/dummy.iso",
+        "bootable": False,
+        "ispublic": False,
+        "ostype": "Other (64-bit)",
     },
     "iso1": {
         "displaytext": "Test ISO 1",
@@ -776,6 +802,16 @@ test_data = {
         "mode": "HTTP_DOWNLOAD",
         "templatefilter": "self"
     },
+    "Windows 7 (64-bit)": {
+        "displaytext": "Windows 7 (64-bit)",
+        "name": "Windows 7 (64-bit)",
+        "passwordenabled": False,
+        "url": "http://10.147.28.7/templates/windows7.vhd",
+        "format": "VHD",
+        "ostype": "Windows 7 (64-bit)",
+        "ispublic": "true",
+        "hypervisor": "XenServer"
+    },
     "privatetemplate": {
         "displaytext": "Public Template",
         "name": "Public template",
@@ -836,20 +872,20 @@ test_data = {
         "cidrlist": '0.0.0.0/0',
     },
     "vpncustomergateway": {
-            "ipsecpsk": "secreatKey",
-            "ikepolicy": "aes128-sha1",
-            "ikelifetime": "86400",
-            "esppolicy": "aes128-sha1",
-            "epslifetime": "3600",
-            "dpd": "false"
+        "ipsecpsk": "secreatKey",
+        "ikepolicy": "aes128-sha1",
+        "ikelifetime": "86400",
+        "esppolicy": "aes128-sha1",
+        "epslifetime": "3600",
+        "dpd": "false"
     },
     "vlan_ip_range": {
-                "startip": "",
-                "endip": "",
-                "netmask": "",
-                "gateway": "",
-                "forvirtualnetwork": "false",
-                "vlan": "untagged",
+        "startip": "",
+        "endip": "",
+        "netmask": "",
+        "gateway": "",
+        "forvirtualnetwork": "false",
+        "vlan": "untagged",
     },
     "ostype": "CentOS 5.6 (64-bit)",
     "sleep": 90,
@@ -878,7 +914,7 @@ test_data = {
     },
     "iscsi": {
         "url":
-        "iscsi://192.168.100.21/iqn.2012-01.localdomain.clo-cstack-cos6:iser/1",
+            "iscsi://192.168.100.21/iqn.2012-01.localdomain.clo-cstack-cos6:iser/1",
         "name": "Primary iSCSI"
     },
     "volume": {"diskname": "Test Volume",
@@ -967,14 +1003,14 @@ test_data = {
     "sparse": {
         "name": "Sparse Type Disk offering",
         "displaytext":
-        "Sparse Type Disk offering",
+            "Sparse Type Disk offering",
         "disksize": 1,  # in GB
         "provisioningtype": "sparse"
     },
     "fat": {
         "name": "Fat Type Disk offering",
         "displaytext":
-        "Fat Type Disk offering",
+            "Fat Type Disk offering",
         "disksize": 1,  # in GB
         "provisioningtype": "fat"
     },
@@ -988,151 +1024,151 @@ test_data = {
         "name": "hostantiaffinity",
         "type": "host anti-affinity",
     },
-    "vgpu":{
-        "disk_offering":{
-                    "displaytext": "Small",
-                    "name": "Small",
-                    "disksize": 1
-                        },
-    "templateregister1": {
-                              "displaytext": "win8withpv",
-                              "name": "win8withpv",
-                              "passwordenabled": False,
-                              "url": "http://pleaseupdateURL/dummy.vhd",
-                              "format": "VHD" ,
-                              "ostype": "Windows 8 (64-bit)",
-                              "ispublic": "true",
-                              "hypervisor": "XenServer"
-                              },
-    "Windows 8 (64-bit)": {
-                              "displaytext": "Windows 8 (64-bit)",
-                              "name": "win8withpv",
-                              "passwordenabled": False,
-                              "url": "http://pleaseupdateURL/dummy.vhd",
-                              "format": "VHD" ,
-                              "ostype": "Windows 8 (64-bit)",
-                              "ispublic": "true",
-                              "hypervisor": "XenServer"
-                              },
-    "Windows Server 2012 (64-bit)": {
-                              "displaytext": "Windows Server 2012 (64-bit)",
-                              "name": "Windows Server 2012 (64-bit)",
-                              "passwordenabled": False,
-                              "url": "http://pleaseupdateURL/dummy.vhd",
-                              "format": "VHD" ,
-                              "ostype": "Windows Server 2012 (64-bit)",
-                              "ispublic": "true",
-                              "hypervisor": "XenServer"
-                              },
+    "vgpu": {
+        "disk_offering": {
+            "displaytext": "Small",
+            "name": "Small",
+            "disksize": 1
+        },
+        "templateregister1": {
+            "displaytext": "win8withpv",
+            "name": "win8withpv",
+            "passwordenabled": False,
+            "url": "http://pleaseupdateURL/dummy.vhd",
+            "format": "VHD",
+            "ostype": "Windows 8 (64-bit)",
+            "ispublic": "true",
+            "hypervisor": "XenServer"
+        },
+        "Windows 8 (64-bit)": {
+            "displaytext": "Windows 8 (64-bit)",
+            "name": "win8withpv",
+            "passwordenabled": False,
+            "url": "http://pleaseupdateURL/dummy.vhd",
+            "format": "VHD",
+            "ostype": "Windows 8 (64-bit)",
+            "ispublic": "true",
+            "hypervisor": "XenServer"
+        },
+        "Windows Server 2012 (64-bit)": {
+            "displaytext": "Windows Server 2012 (64-bit)",
+            "name": "Windows Server 2012 (64-bit)",
+            "passwordenabled": False,
+            "url": "http://pleaseupdateURL/dummy.vhd",
+            "format": "VHD",
+            "ostype": "Windows Server 2012 (64-bit)",
+            "ispublic": "true",
+            "hypervisor": "XenServer"
+        },
 
-    "Windows 7 (64-bit)": {
-                              "displaytext": "Windows 7 (64-bit)",
-                              "name": "Windows 7 (64-bit)",
-                              "passwordenabled": False,
-                              "url": "http://pleaseupdateURL/dummy.vhd",
-                              "format": "VHD" ,
-                              "ostype": "Windows 7 (64-bit)",
-                              "ispublic": "true",
-                              "hypervisor": "XenServer"
-                              },
-    "clusters": {
+        "Windows 7 (64-bit)": {
+            "displaytext": "Windows 7 (64-bit)",
+            "name": "Windows 7 (64-bit)",
+            "passwordenabled": False,
+            "url": "http://pleaseupdateURL/dummy.vhd",
+            "format": "VHD",
+            "ostype": "Windows 7 (64-bit)",
+            "ispublic": "true",
+            "hypervisor": "XenServer"
+        },
+        "clusters": {
             "clustername": "Xen Cluster Vgpu",
             "clustertype": "CloudManaged",
             "hypervisor": "XenServer"
-      },
-    "hosts": {
-        "nonvgpuxenserver": {
-            "hypervisor": 'XenServer',
-            "clustertype": 'CloudManaged',
-            "url": 'http://10.102.192.57',
-            "username": "root",
-            "password": "freebsd",
-             },
-       },
+        },
+        "hosts": {
+            "nonvgpuxenserver": {
+                "hypervisor": 'XenServer',
+                "clustertype": 'CloudManaged',
+                "url": 'http://10.102.192.57',
+                "username": "root",
+                "password": "freebsd",
+            },
+        },
         "account": {
-                    "email": "test@test.com",
-                    "firstname": "Test",
-                    "lastname": "User",
-                    "username": "test",
-                    # Random characters are appended in create account to
-                    # ensure unique username generated each time
-                    "password": "password",
-                    },
-            "vgpu260q":   # Create a virtual machine instance with vgpu type as 260q
-                    {   
-                    "displayname": "testserver",
-                    "username": "root", # VM creds for SSH
-                    "password": "password",
-                    "ssh_port": 22,
-                    "hypervisor": 'XenServer',
-                    "privateport": 22,
-                    "publicport": 22,
-                    "protocol": 'TCP',
-                },
-                "vgpu140q":   # Create a virtual machine instance with vgpu type as 140q
-                {
-                    "displayname": "testserver",
-                    "username": "root",
-                    "password": "password",
-                    "ssh_port": 22,
-                    "hypervisor": 'XenServer',
-                    "privateport": 22,
-                    "publicport": 22,
-                    "protocol": 'TCP',
-                },
-                "service_offerings":
-                {
-                 "GRID K260Q":
-                   {
+            "email": "test@test.com",
+            "firstname": "Test",
+            "lastname": "User",
+            "username": "test",
+            # Random characters are appended in create account to
+            # ensure unique username generated each time
+            "password": "password",
+        },
+        "vgpu260q":  # Create a virtual machine instance with vgpu type as 260q
+            {
+                "displayname": "testserver",
+                "username": "root",  # VM creds for SSH
+                "password": "password",
+                "ssh_port": 22,
+                "hypervisor": 'XenServer',
+                "privateport": 22,
+                "publicport": 22,
+                "protocol": 'TCP',
+            },
+        "vgpu140q":  # Create a virtual machine instance with vgpu type as 140q
+            {
+                "displayname": "testserver",
+                "username": "root",
+                "password": "password",
+                "ssh_port": 22,
+                "hypervisor": 'XenServer',
+                "privateport": 22,
+                "publicport": 22,
+                "protocol": 'TCP',
+            },
+        "service_offerings":
+            {
+                "GRID K260Q":
+                    {
                         "name": "vGPU260Q",
                         "displaytext": "vGPU260Q",
                         "cpunumber": 2,
-                        "cpuspeed": 1600, # in MHz
-                        "memory": 3072, # In MBs
+                        "cpuspeed": 1600,  # in MHz
+                        "memory": 3072,  # In MBs
                     },
-                 "GRID K240Q":
-                   {
+                "GRID K240Q":
+                    {
                         "name": "vGPU240Q",
                         "displaytext": "vGPU240Q",
                         "cpunumber": 2,
-                        "cpuspeed": 1600, # in MHz
-                        "memory": 3072, # In MBs
+                        "cpuspeed": 1600,  # in MHz
+                        "memory": 3072,  # In MBs
                     },
-                 "GRID K220Q":
-                   {
+                "GRID K220Q":
+                    {
                         "name": "vGPU220Q",
                         "displaytext": "vGPU220Q",
                         "cpunumber": 2,
-                        "cpuspeed": 1600, # in MHz
-                        "memory": 3072, # In MBs
+                        "cpuspeed": 1600,  # in MHz
+                        "memory": 3072,  # In MBs
                     },
-                 "GRID K200":
-                   {
+                "GRID K200":
+                    {
                         "name": "vGPU200",
                         "displaytext": "vGPU200",
                         "cpunumber": 2,
-                        "cpuspeed": 1600, # in MHz
-                        "memory": 3072, # In MBs
+                        "cpuspeed": 1600,  # in MHz
+                        "memory": 3072,  # In MBs
                     },
-                 "passthrough":
-                   {
+                "passthrough":
+                    {
                         "name": "vGPU passthrough",
                         "displaytext": "vGPU passthrough",
                         "cpunumber": 2,
-                        "cpuspeed": 1600, # in MHz
-                        "memory": 3072, # In MBs
+                        "cpuspeed": 1600,  # in MHz
+                        "memory": 3072,  # In MBs
                     },
-                 "GRID K140Q":
+                "GRID K140Q":
                     {
-                     # Small service offering ID to for change VM
-                     # service offering from medium to small
+                        # Small service offering ID to for change VM
+                        # service offering from medium to small
                         "name": "vGPU140Q",
                         "displaytext": "vGPU140Q",
                         "cpunumber": 2,
                         "cpuspeed": 1600,
                         "memory": 3072,
                     },
-                   "GRID K120Q":
+                "GRID K120Q":
                     {
                         "name": "vGPU120Q",
                         "displaytext": "vGPU120Q",
@@ -1140,315 +1176,266 @@ test_data = {
                         "cpuspeed": 1600,
                         "memory": 3072,
                     },
-                   "GRID K100":
-                     {
+                "GRID K100":
+                    {
                         "name": "vGPU100",
                         "displaytext": "vGPU100",
                         "cpunumber": 2,
                         "cpuspeed": 1600,
                         "memory": 3072,
-                     },
-                   "nonvgpuoffering":
-                     {
+                    },
+                "nonvgpuoffering":
+                    {
                         "name": "nonvgpuoffering",
                         "displaytext": "nonvgpuoffering",
                         "cpunumber": 2,
                         "cpuspeed": 1600,
                         "memory": 3072,
-                     }
+                    }
 
             },
-            "diskdevice": ['/dev/vdc',  '/dev/vdb', '/dev/hdb', '/dev/hdc', '/dev/xvdd', '/dev/cdrom', '/dev/sr0', '/dev/cdrom1' ],
-            # Disk device where ISO is attached to instance
-            "mount_dir": "/mnt/tmp",
-            "sleep": 180,
-            "timeout": 60,
-            "ostype": 'Windows 8 (64-bit)',
-            "nongpu_host_ip":"10.102.192.57"
-    },
-      "acl":{
-                #data for domains and accounts
-                "domain1": {
-                    "name": "D1",
-                 },
-                "accountD1": {
-                    "email": "testD1@test.com",
-                    "firstname": "testD1",
-                    "lastname": "Admin",
-                    "username": "testD1",
-                    "password": "password",
-                    "accounttype": "1",
-                },
-                "accountD1A": {
-                    "email": "testD1A@test.com",
-                    "firstname": "testD1A",
-                    "lastname": "User",
-                    "username": "testD1A",
-                    "password": "password",
-                },
-                "accountD1B": {
-                    "email": "testD1B@test.com",
-                    "firstname": "testD1B",
-                    "lastname": "User",
-                    "username": "testD1B",
-                    "password": "password",
-                },
-                "domain11": {
-                    "name": "D11",
-                 },
-                "accountD11": {
-                    "email": "testD11@test.com",
-                    "firstname": "testD11",
-                    "lastname": "Admin",
-                    "username": "testD11",
-                    "password": "password",
-                    "accounttype": "1",
-                },
-                "accountD11A": {
-                    "email": "testD11A@test.com",
-                    "firstname": "testD11A",
-                    "lastname": "User",
-                    "username": "testD11A",
-                    "password": "password",
-                },
-                "accountD11B": {
-                    "email": "test11B@test.com",
-                    "firstname": "testD11B",
-                    "lastname": "User",
-                    "username": "testD11B",
-                    "password": "password",
-                },
-                "domain111": {
-                    "name": "D111",
-                 },
-                "accountD111": {
-                    "email": "testD111@test.com",
-                    "firstname": "testD111",
-                    "lastname": "Admin",
-                    "username": "testD111",
-                    "password": "password",
-                },
-                "accountD111A": {
-                    "email": "testD111A@test.com",
-                    "firstname": "testD111A",
-                    "lastname": "User",
-                    "username": "testD111A",
-                    "password": "password",
-                },
-                "accountD111B": {
-                    "email": "testD111B@test.com",
-                    "firstname": "testD111B",
-                    "lastname": "User",
-                    "username": "testD111B",
-                    "password": "password",
-                },
-               "domain12": {
-                    "name": "D12",
-                 },
-                "accountD12A": {
-                    "email": "testD12A@test.com",
-                    "firstname": "testD12A",
-                    "lastname": "User",
-                    "username": "testD12A",
-                    "password": "password",
-                },
-                "accountD12B": {
-                    "email": "testD12B@test.com",
-                    "firstname": "testD12B",
-                    "lastname": "User",
-                    "username": "testD12B",
-                    "password": "password",
-                },
-                "domain2": {
-                   "name": "D2",
-                 },
-                "accountD2": {
-                    "email": "testD2@test.com",
-                    "firstname": "testD2",
-                    "lastname": "User",
-                    "username": "testD2",
-                    "password": "password",
-                    "accounttype": "1",
-                },
-                "accountD2A": {
-                    "email": "testD2A@test.com",
-                    "firstname": "testD2A",
-                    "lastname": "User",
-                    "username": "testD2A",
-                    "password": "password",
-                },
-                "accountROOTA": {
-                    "email": "testROOTA@test.com",
-                    "firstname": "testROOTA",
-                    "lastname": "User",
-                    "username": "testROOTA",
-                    "password": "password",
-                },
+        "diskdevice": ['/dev/vdc', '/dev/vdb', '/dev/hdb', '/dev/hdc', '/dev/xvdd', '/dev/cdrom', '/dev/sr0',
+                       '/dev/cdrom1'],
+        # Disk device where ISO is attached to instance
+        "mount_dir": "/mnt/tmp",
+        "sleep": 180,
+        "timeout": 60,
+        "ostype": 'Windows 8 (64-bit)',
+        "nongpu_host_ip": "10.102.192.57"
+    },
+    "acl": {
+        #data for domains and accounts
+        "domain1": {
+            "name": "D1",
+        },
+        "accountD1": {
+            "email": "testD1@test.com",
+            "firstname": "testD1",
+            "lastname": "Admin",
+            "username": "testD1",
+            "password": "password",
+            "accounttype": "1",
+        },
+        "accountD1A": {
+            "email": "testD1A@test.com",
+            "firstname": "testD1A",
+            "lastname": "User",
+            "username": "testD1A",
+            "password": "password",
+        },
+        "accountD1B": {
+            "email": "testD1B@test.com",
+            "firstname": "testD1B",
+            "lastname": "User",
+            "username": "testD1B",
+            "password": "password",
+        },
+        "domain11": {
+            "name": "D11",
+        },
+        "accountD11": {
+            "email": "testD11@test.com",
+            "firstname": "testD11",
+            "lastname": "Admin",
+            "username": "testD11",
+            "password": "password",
+            "accounttype": "1",
+        },
+        "accountD11A": {
+            "email": "testD11A@test.com",
+            "firstname": "testD11A",
+            "lastname": "User",
+            "username": "testD11A",
+            "password": "password",
+        },
+        "accountD11B": {
+            "email": "test11B@test.com",
+            "firstname": "testD11B",
+            "lastname": "User",
+            "username": "testD11B",
+            "password": "password",
+        },
+        "domain111": {
+            "name": "D111",
+        },
+        "accountD111": {
+            "email": "testD111@test.com",
+            "firstname": "testD111",
+            "lastname": "Admin",
+            "username": "testD111",
+            "password": "password",
+        },
+        "accountD111A": {
+            "email": "testD111A@test.com",
+            "firstname": "testD111A",
+            "lastname": "User",
+            "username": "testD111A",
+            "password": "password",
+        },
+        "accountD111B": {
+            "email": "testD111B@test.com",
+            "firstname": "testD111B",
+            "lastname": "User",
+            "username": "testD111B",
+            "password": "password",
+        },
+        "domain12": {
+            "name": "D12",
+        },
+        "accountD12A": {
+            "email": "testD12A@test.com",
+            "firstname": "testD12A",
+            "lastname": "User",
+            "username": "testD12A",
+            "password": "password",
+        },
+        "accountD12B": {
+            "email": "testD12B@test.com",
+            "firstname": "testD12B",
+            "lastname": "User",
+            "username": "testD12B",
+            "password": "password",
+        },
+        "domain2": {
+            "name": "D2",
+        },
+        "accountD2": {
+            "email": "testD2@test.com",
+            "firstname": "testD2",
+            "lastname": "User",
+            "username": "testD2",
+            "password": "password",
+            "accounttype": "1",
+        },
+        "accountD2A": {
+            "email": "testD2A@test.com",
+            "firstname": "testD2A",
+            "lastname": "User",
+            "username": "testD2A",
+            "password": "password",
+        },
+        "accountROOTA": {
+            "email": "testROOTA@test.com",
+            "firstname": "testROOTA",
+            "lastname": "User",
+            "username": "testROOTA",
+            "password": "password",
+        },
 
-                "accountROOT": {
-                    "email": "testROOTA@test.com",
-                    "firstname": "testROOT",
-                    "lastname": "admin",
-                    "username": "testROOT",
-                    "password": "password",
-                },
-                #data reqd for virtual machine creation
-                "vmD1" : {
-                    "name" : "d1",
-                    "displayname" : "d1",
-                },
-                "vmD1A" : {
-                    "name" : "d1a",
-                    "displayname" : "d1a",
-                },
-                "vmD1B" : {
-                    "name" : "d1b",
-                    "displayname" : "d1b",
-                },
-                "vmD11" : {
-                   "name" : "d11",
-                   "displayname" : "d11",
-                },
-                "vmD11A" : {
-                   "name" : "d11a",
-                   "displayname" : "d11a",
-                },
-                "vmD11B" : {
-                    "name" : "d11b",
-                    "displayname" : "d11b",
-                },
-                "vmD111" : {
-                    "name" : "d111",
-                    "displayname" : "d111",
-                },
-                "vmD111A" : {
-                    "name" : "d111a",
-                    "displayname" : "d111a",
-                },
-                "vmD111B" : {
-                    "name" : "d111b",
-                    "displayname" : "d111b",
-                },
-                "vmD12A" : {
-                    "name" : "d12a",
-                    "displayname" : "d12a",
-                },
-                "vmD12B" : {
-                    "name" : "d12b",
-                    "displayname" : "d12b",
-                },
-                "vmD2A" : {
-                    "name" : "d2a",
-                    "displayname" : "d2a",
-                },
+        "accountROOT": {
+            "email": "testROOTA@test.com",
+            "firstname": "testROOT",
+            "lastname": "admin",
+            "username": "testROOT",
+            "password": "password",
+        },
+        #data reqd for virtual machine creation
+        "vmD1": {
+            "name": "d1",
+            "displayname": "d1",
+        },
+        "vmD1A": {
+            "name": "d1a",
+            "displayname": "d1a",
+        },
+        "vmD1B": {
+            "name": "d1b",
+            "displayname": "d1b",
+        },
+        "vmD11": {
+            "name": "d11",
+            "displayname": "d11",
+        },
+        "vmD11A": {
+            "name": "d11a",
+            "displayname": "d11a",
+        },
+        "vmD11B": {
+            "name": "d11b",
+            "displayname": "d11b",
+        },
+        "vmD111": {
+            "name": "d111",
+            "displayname": "d111",
+        },
+        "vmD111A": {
+            "name": "d111a",
+            "displayname": "d111a",
+        },
+        "vmD111B": {
+            "name": "d111b",
+            "displayname": "d111b",
+        },
+        "vmD12A": {
+            "name": "d12a",
+            "displayname": "d12a",
+        },
+        "vmD12B": {
+            "name": "d12b",
+            "displayname": "d12b",
+        },
+        "vmD2A": {
+            "name": "d2a",
+            "displayname": "d2a",
+        },
 
-                "vmROOTA" : {
-                    "name" : "roota",
-                    "displayname" : "roota",
-                },
-                "vmROOT" : {
-                    "name" : "root",
-                    "displayname" : "root",
-                },
+        "vmROOTA": {
+            "name": "roota",
+            "displayname": "roota",
+        },
+        "vmROOT": {
+            "name": "root",
+            "displayname": "root",
+        },
 
-                #data reqd for Network creation
-                "network_all": {
-                     "name": "SharedNetwork-All",
-                     "displaytext": "SharedNetwork-All",
-                     "vlan" : "4001",
-                     "gateway" :"10.223.1.1",
-                     "netmask" :"255.255.255.0",
-                     "startip" :"10.223.1.2",
-                     "endip" :"10.223.1.100",
-                     "acltype" : "Domain"
-                },
-                "network_domain_with_no_subdomain_access": {
-                     "name": "SharedNetwork-Domain-nosubdomain",
-                     "displaytext": "SharedNetwork-Domain-nosubdomain",
-                     "vlan" : "4002",
-                     "gateway" :"10.223.1.1",
-                     "netmask" :"255.255.255.0",
-                     "startip" :"10.223.1.2",
-                     "endip" :"10.223.1.100",
-                     "acltype" : "Domain",
-                     "subdomainaccess" : "false"
-                },
-                "network_domain_with_subdomain_access": {
-                     "name": "SharedNetwork-Domain-withsubdomain",
-                     "displaytext": "SharedNetwork-Domain-withsubdomain",
-                     "vlan" : "4003",
-                     "gateway" :"10.223.1.1",
-                     "netmask" :"255.255.255.0",
-                     "startip" :"10.223.1.2",
-                     "endip" :"10.223.1.100",
-                     "acltype" : "Domain",
-                     "subdomainaccess" : "true"
-                },
-                "network_account": {
-                     "name": "SharedNetwork-Account",
-                     "displaytext": "SharedNetwork-Account",
-                     "vlan" : "4004",
-                     "gateway" :"10.223.1.1",
-                     "netmask" :"255.255.255.0",
-                     "startip" :"10.223.1.2",
-                     "endip" :"10.223.1.100",
-                     "acltype" : "Account"
-               },
+        #data reqd for Network creation
+        "network_all": {
+            "name": "SharedNetwork-All",
+            "displaytext": "SharedNetwork-All",
+            "vlan": "4001",
+            "gateway": "10.223.1.1",
+            "netmask": "255.255.255.0",
+            "startip": "10.223.1.2",
+            "endip": "10.223.1.100",
+            "acltype": "Domain"
+        },
+        "network_domain_with_no_subdomain_access": {
+            "name": "SharedNetwork-Domain-nosubdomain",
+            "displaytext": "SharedNetwork-Domain-nosubdomain",
+            "vlan": "4002",
+            "gateway": "10.223.1.1",
+            "netmask": "255.255.255.0",
+            "startip": "10.223.1.2",
+            "endip": "10.223.1.100",
+            "acltype": "Domain",
+            "subdomainaccess": "false"
+        },
+        "network_domain_with_subdomain_access": {
+            "name": "SharedNetwork-Domain-withsubdomain",
+            "displaytext": "SharedNetwork-Domain-withsubdomain",
+            "vlan": "4003",
+            "gateway": "10.223.1.1",
+            "netmask": "255.255.255.0",
+            "startip": "10.223.1.2",
+            "endip": "10.223.1.100",
+            "acltype": "Domain",
+            "subdomainaccess": "true"
+        },
+        "network_account": {
+            "name": "SharedNetwork-Account",
+            "displaytext": "SharedNetwork-Account",
+            "vlan": "4004",
+            "gateway": "10.223.1.1",
+            "netmask": "255.255.255.0",
+            "startip": "10.223.1.2",
+            "endip": "10.223.1.100",
+            "acltype": "Account"
+        },
 
-                "network": {
-                     "name": "Network-",
-                     "displaytext": "Network-",
-                     "gateway" :"10.223.1.1",
-                     "netmask" :"255.255.255.0",
-                     "startip" :"10.223.1.2",
-                     "endip" :"10.223.1.100",
-                },
-                #small service offering
-                "service_offering": {
-                    "small": {
-                        "name": "Small Instance",
-                        "displaytext": "Small Instance",
-                        "cpunumber": 1,
-                        "cpuspeed": 100,
-                        "memory": 128,
-                    },
-                },
-                "ostype": 'CentOS 5.6 (64-bit)',
-        },
-      "test_34_DeployVM_in_SecondSGNetwork": {
-          "zone": "advsg",
-          "config": "D:\ACS-Repo\setup\dev\\advancedsg.cfg",#Absolute path to cfg file
-          #For sample configuration please refer to <ACS repo>/setup/dev/advancedsg.cfg
-          "template": "CentOS 5.3(64-bit) no GUI (Simulator)",
-          "dbSvr": {
-              "dbSvr": "10.146.0.133",
-              "passwd": "cloud",
-              "db": "cloud",
-              "port": 3306,
-              "user": "cloud"
-          },
-          "mgtSvr": [
-              {
-                  "mgtSvrIp": "10.146.0.133",
-                  "passwd": "password",
-                  "user": "root",
-                  "port": 8096
-              }
-          ],
-          "ipranges": [
-              {
-                  "startip": "10.147.32.150",
-                  "endip": "10.147.32.153",
-                  "netmask": "255.255.255.0",
-                  "vlan": "32",
-                  "gateway": "10.147.32.1"
-              }
-          ]
-      },
-    "configurableData":
-    {
-        "portableIpRange": {
-            "gateway": "10.223.59.1",
+        "network": {
+            "name": "Network-",
+            "displaytext": "Network-",
+            "gateway": "10.223.1.1",
             "netmask": "255.255.255.0",
             "startip": "10.223.59.200",
             "endip": "10.223.59.240",
@@ -1501,14 +1488,115 @@ test_data = {
             "password": '',
             "url": '',
             "clustername": 'VMWare Cluster with Space in DC name',
+            "startip": "10.223.1.2",
+            "endip": "10.223.1.100",
         },
-        "upload_volume": {
-            "diskname": "UploadVol",
-            "format": "VHD",
-            "url":"http://download.cloud.com/releases/2.0.0/UbuntuServer-10-04-64bit.vhd.bz2",
-            "checksum": "",
+        #small service offering
+        "service_offering": {
+            "small": {
+                "name": "Small Instance",
+                "displaytext": "Small Instance",
+                "cpunumber": 1,
+                "cpuspeed": 100,
+                "memory": 128,
+            },
         },
-        "bootableIso":
+        "ostype": 'CentOS 5.6 (64-bit)',
+    },
+    "test_34_DeployVM_in_SecondSGNetwork": {
+        "zone": "advsg",
+        "config": "D:\ACS-Repo\setup\dev\\advancedsg.cfg",  #Absolute path to cfg file
+        #For sample configuration please refer to <ACS repo>/setup/dev/advancedsg.cfg
+        "template": "CentOS 5.3(64-bit) no GUI (Simulator)",
+        "dbSvr": {
+            "dbSvr": "10.146.0.133",
+            "passwd": "cloud",
+            "db": "cloud",
+            "port": 3306,
+            "user": "cloud"
+        },
+        "mgtSvr": [
+            {
+                "mgtSvrIp": "10.146.0.133",
+                "passwd": "password",
+                "user": "root",
+                "port": 8096
+            }
+        ],
+        "ipranges": [
+            {
+                "startip": "10.147.32.150",
+                "endip": "10.147.32.153",
+                "netmask": "255.255.255.0",
+                "vlan": "32",
+                "gateway": "10.147.32.1"
+            }
+        ]
+    },
+    "configurableData":
+        {
+            "portableIpRange": {
+                "gateway": "10.223.59.1",
+                "netmask": "255.255.255.0",
+                "startip": "10.223.59.200",
+                "endip": "10.223.59.240",
+                "vlan": "1000"
+            },
+            "netscaler": {
+                "ipaddress": "",
+                "username": "",
+                "password": "",
+                "networkdevicetype": "",
+                "publicinterface": "",
+                "privateinterface": "",
+                "numretries": "",
+                "lbdevicededicated": "False",
+                "lbdevicecapacity": 2,
+                "port": 22
+            },
+            "iscsi": {
+                "url": "",
+                "name": "Primary iSCSI"
+            },
+            "host": {
+                "publicport": 22,
+                "username": "root",
+                "password": "password",
+            },
+            "ldap_account": {
+                "email": "",
+                "firstname": "",
+                "lastname": "",
+                "username": "",
+                "password": "",
+            },
+            "ldap_configuration": {
+                "basedn": "",
+                "emailAttribute": "",
+                "userObject": "",
+                "usernameAttribute": "",
+                "hostname": "",
+                "port": "",
+                "ldapUsername": "",
+                "ldapPassword": ""
+            },
+            "systemVmDelay": 120,
+            "setUsageConfigurationThroughTestCase": True,
+            "vmware_cluster": {
+                "hypervisor": 'VMware',
+                "clustertype": 'ExternalManaged',
+                "username": '',
+                "password": '',
+                "url": '',
+                "clustername": 'VMWare Cluster with Space in DC name',
+            },
+            "upload_volume": {
+                "diskname": "UploadVol",
+                "format": "VHD",
+                "url": "http://download.cloud.com/releases/2.0.0/UbuntuServer-10-04-64bit.vhd.bz2",
+                "checksum": "",
+            },
+            "bootableIso":
                 {
                     "displaytext": "Test Bootable ISO",
                     "name": "testISO",
@@ -1532,6 +1620,20 @@ test_data = {
             "hypervisor": "vmware",
             "format": "OVA",
             "nicadapter": "vmxnet3"
+                    "kvm": {
+                        "url": ""
+                    },
+                    "vmware": {
+                        "url": ""
+                    },
+                    "xenserver": {
+                        "url": ""
+                    },
+                    "hyperv": {
+                        "url": ""
+                    },
+                    "ostype": 'CentOS 5.3 (64-bit)',
+                    "mode": 'HTTP_DOWNLOAD'
+                }
         }
-    }
 }


[2/2] git commit: updated refs/heads/master to 974c564

Posted by ta...@apache.org.
Restore VM verification tests
This closes #148
Signed-off-by: SrikanteswaraRao Talluri<ta...@apache.org>


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

Branch: refs/heads/master
Commit: 974c56423d6757fb245b0b0762c576b5b9cec8fa
Parents: 433e6a2
Author: shweta agarwal <sh...@citrix.com>
Authored: Tue Apr 7 10:37:53 2015 +0530
Committer: SrikanteswaraRao Talluri <ta...@apache.org>
Committed: Wed Apr 8 12:39:16 2015 +0530

----------------------------------------------------------------------
 .../component/test_escalations_instances.py     | 110 +++++++++++--------
 tools/marvin/marvin/config/test_data.py         |   4 +-
 2 files changed, 66 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/974c5642/test/integration/component/test_escalations_instances.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_escalations_instances.py b/test/integration/component/test_escalations_instances.py
index 3cd65f7..82e832c 100644
--- a/test/integration/component/test_escalations_instances.py
+++ b/test/integration/component/test_escalations_instances.py
@@ -6,7 +6,7 @@
 # "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
+# 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
@@ -16,16 +16,35 @@
 # under the License.
 
 # Import Local Modules
-from marvin.cloudstackTestCase import cloudstackTestCase
-from marvin.lib.utils import *
-from marvin.lib.common import *
-from marvin.lib.base import *
+from marvin.cloudstackTestCase import cloudstackTestCase, unittest
+from marvin.lib.utils import cleanup_resources, validateList
+from marvin.lib.base import (Account,
+                             ServiceOffering,
+                             NetworkOffering,
+                             Network,
+                             VirtualMachine,
+                             SecurityGroup,
+                             DiskOffering,
+                             Resources,
+                             Iso,
+                             Configurations,
+                             SSHKeyPair,
+                             Volume,
+                             VmSnapshot,
+                             Zone,
+                             Template,
+                             Host)
+from marvin.lib.common import (get_zone,
+                               get_template,
+                               get_domain,
+                               find_storage_pool_type)
+from marvin.codes import PASS
 from marvin.sshClient import SshClient
 from nose.plugins.attrib import attr
+import time
 
 
 class TestListInstances(cloudstackTestCase):
-
     @classmethod
     def setUpClass(cls):
         try:
@@ -1691,8 +1710,8 @@ class TestListInstances(cloudstackTestCase):
         if service_offerings_list is not None:
             for i in range(0, len(service_offerings_list)):
                 if ((current_so.id != service_offerings_list[i].id) and (
-                        current_so.storagetype ==
-                        service_offerings_list[i].storagetype)):
+                            current_so.storagetype ==
+                            service_offerings_list[i].storagetype)):
                     so_exists = True
                     new_so = service_offerings_list[i]
                     break
@@ -2052,7 +2071,6 @@ class TestListInstances(cloudstackTestCase):
 
 
 class TestInstances(cloudstackTestCase):
-
     @classmethod
     def setUpClass(cls):
         try:
@@ -2176,7 +2194,7 @@ class TestInstances(cloudstackTestCase):
                     (exp_val, act_val))
         return return_flag
 
-    @attr(tags=["Xenserver"], required_hardware="false")
+    @attr(tags=["advanced", "basic"], required_hardware="false")
     def test_27_VM_restore_ES3467(self):
         """
         @Desc:Test to verify  order of root and data disk remains same on Xenserver after VM reset
@@ -2187,6 +2205,10 @@ class TestInstances(cloudstackTestCase):
         7. check disk sequence on hypervisor remains same and VM starts successfully
         """
         try:
+            if self.hypervisor.lower() in ['kvm', 'hyperv', 'lxc', 'vmware']:
+                self.skipTest(
+                    "This test not applicable on existing hypervisor. Hence,\
+                            skipping the test")
             template = Template.register(self.apiClient,
                                          self.services["Windows 7 (64-bit)"],
                                          zoneid=self.zone.id,
@@ -2219,11 +2241,8 @@ class TestInstances(cloudstackTestCase):
                 time.sleep(5)
                 timeout -= 1
             # Verify template response to check whether template added successfully
-            self.assertEqual(
-                isinstance(list_template_response, list),
-                True,
-                "Check for list template response return valid data"
-            )
+            status = validateList(list_template_response)
+            self.assertEquals(PASS, status[0], "Template download failed")
 
             self.assertNotEqual(
                 len(list_template_response),
@@ -2289,10 +2308,10 @@ class TestInstances(cloudstackTestCase):
                 True,
                 "Check list host returns a valid list")
             host = hosts[0]
-            if self.hypervisor.lower() in ('xenserver'):
+            if self.hypervisor.lower() in 'xenserver':
                 #
-                # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
-                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                ssh = SshClient(host.ipaddress, 22, self.services["configurableData"]["host"]["username"],
+                                self.services["configurableData"]["host"]["password"])
                 result = ssh.execute(cmd)
                 res = str(result)
                 self.assertNotEqual(res, "", "root disk should have user device=0")
@@ -2312,8 +2331,8 @@ class TestInstances(cloudstackTestCase):
             host = hosts[0]
             if self.hypervisor.lower() in 'xenserver':
                 #
-                # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
-                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                ssh = SshClient(host.ipaddress, 22, self.services["configurableData"]["host"]["username"],
+                                self.services["configurableData"]["host"]["password"])
                 result = ssh.execute(cmd)
                 res = str(result)
                 self.assertNotEqual(res, "", "root disk should have user device=0")
@@ -2340,7 +2359,7 @@ class TestInstances(cloudstackTestCase):
             self.fail("Exception occurred: %s" % e)
         return
 
-    @attr(tags=["Xenserver"], required_hardware="false")
+    @attr(tags=["advanced", "basic"], required_hardware="false")
     def test_28_VM_restore_ES3467(self):
         """
         @Desc:Test to verify  order of root and data disk remains same on Xenserver after VM reset
@@ -2443,10 +2462,11 @@ class TestInstances(cloudstackTestCase):
                 True,
                 "Check list host returns a valid list")
             host = hosts[0]
-            if self.hypervisor.lower() in ('xenserver'):
+            if self.hypervisor.lower() in 'xenserver':
                 #
                 # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
-                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                ssh = SshClient(host.ipaddress, 22, self.services["configurableData"]["host"]["username"],
+                                self.services["configurableData"]["host"]["password"])
                 result = ssh.execute(cmd)
                 res = str(result)
                 self.assertNotEqual(res, "", "root disk should have user device=0")
@@ -2480,12 +2500,11 @@ class TestInstances(cloudstackTestCase):
             )
             # Start VM
             virtual_machine.start(self.apiClient)
-            # Sleep to ensure that VM is in ready state
-            time.sleep(self.services["sleep"])
             if self.hypervisor.lower() in 'xenserver':
                 #
                 # host.user, host.passwd = get_host_credentials(self, host.ipaddress)
-                ssh = SshClient(host.ipaddress, 22, "root", "password")
+                ssh = SshClient(host.ipaddress, 22, self.services["configurableData"]["host"]["username"],
+                                self.services["configurableData"]["host"]["password"])
                 result = ssh.execute(cmd)
                 res = str(result)
                 self.assertNotEqual(res, "", "root disk should have user device=0")
@@ -2499,7 +2518,6 @@ class TestInstances(cloudstackTestCase):
                 True,
                 "Check list VM response for valid list"
             )
-
             # Verify VM response to check whether VM deployment was successful
             self.assertNotEqual(
                 len(vm_response),
@@ -2934,7 +2952,7 @@ class TestInstances(cloudstackTestCase):
         # and that snapshot is the latest snapshot created (snapshot2)
         current_count = 0
         for i in range(0, len(list_snapshots_after)):
-            if(list_snapshots_after[i].current is True):
+            if (list_snapshots_after[i].current is True):
                 current_count = current_count + 1
                 current_snapshot = list_snapshots_after[i]
 
@@ -2975,7 +2993,7 @@ class TestInstances(cloudstackTestCase):
         # and that snapshot is snapshot1
         current_count = 0
         for i in range(0, len(list_snapshots_after)):
-            if(list_snapshots_after[i].current is True):
+            if (list_snapshots_after[i].current is True):
                 current_count = current_count + 1
                 current_snapshot = list_snapshots_after[i]
         self.assertEquals(
@@ -3251,8 +3269,8 @@ class TestInstances(cloudstackTestCase):
         )
         # Checking if dynamic scaling is allowed in Zone and Template
         if not (
-            (list_config[0].value is True) and (
-                self.template.isdynamicallyscalable)):
+                    (list_config[0].value is True) and (
+                        self.template.isdynamicallyscalable)):
             self.debug(
                 "Scale up of Running VM is not possible as Zone/Template\
                         does not support")
@@ -3317,18 +3335,18 @@ class TestInstances(cloudstackTestCase):
             if service_offerings_list is not None:
                 for i in range(0, len(service_offerings_list)):
                     if not ((current_so.cpunumber >
-                             service_offerings_list[i].cpunumber or
-                             current_so.cpuspeed >
-                             service_offerings_list[i].cpuspeed or
-                             current_so.memory >
-                             service_offerings_list[i].memory) or
-                            (current_so.cpunumber ==
-                                service_offerings_list[i].cpunumber and
-                             current_so.cpuspeed ==
-                                service_offerings_list[i].cpuspeed and
-                             current_so.memory ==
-                                service_offerings_list[i].memory)):
-                        if(current_so.storagetype ==
+                                 service_offerings_list[i].cpunumber or
+                                     current_so.cpuspeed >
+                                     service_offerings_list[i].cpuspeed or
+                                     current_so.memory >
+                                     service_offerings_list[i].memory) or
+                                (current_so.cpunumber ==
+                                     service_offerings_list[i].cpunumber and
+                                         current_so.cpuspeed ==
+                                         service_offerings_list[i].cpuspeed and
+                                         current_so.memory ==
+                                         service_offerings_list[i].memory)):
+                        if (current_so.storagetype ==
                                 service_offerings_list[i].storagetype):
                             so_exists = True
                             new_so = service_offerings_list[i]
@@ -3452,8 +3470,8 @@ class TestInstances(cloudstackTestCase):
         if service_offerings_list is not None:
             for i in range(0, len(service_offerings_list)):
                 if ((current_so.id != service_offerings_list[i].id) and (
-                        current_so.storagetype ==
-                        service_offerings_list[i].storagetype)):
+                            current_so.storagetype ==
+                            service_offerings_list[i].storagetype)):
                     so_exists = True
                     new_so = service_offerings_list[i]
                     break
@@ -3879,7 +3897,7 @@ class TestInstances(cloudstackTestCase):
         )
         # populating network id's
         networkids = networks_list_after[
-            0].id + "," + networks_list_after[1].id
+                         0].id + "," + networks_list_after[1].id
         # Listing all the VM's for a User
         list_vms_before = VirtualMachine.list(
             self.userapiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/974c5642/tools/marvin/marvin/config/test_data.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/config/test_data.py b/tools/marvin/marvin/config/test_data.py
index 6ebf09e..6c87374 100644
--- a/tools/marvin/marvin/config/test_data.py
+++ b/tools/marvin/marvin/config/test_data.py
@@ -1619,8 +1619,8 @@ test_data = {
             "url": "http://10.147.28.7/templates/4.3.0.2/systemvm64template-2014-09-30-4.3-vmware.ova",
             "hypervisor": "vmware",
             "format": "OVA",
-            "nicadapter": "vmxnet3"
-                    "kvm": {
+            "nicadapter": "vmxnet3",
+                "kvm": {
                         "url": ""
                     },
                     "vmware": {