You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by li...@apache.org on 2014/05/21 17:59:22 UTC

[2/2] git commit: updated refs/heads/multiple-disk-ova to 87d87a6

CLOUDSTACK-4757. Improvements to the marvin test.


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

Branch: refs/heads/multiple-disk-ova
Commit: 87d87a6f30c45125e5769f04e8d4260074c79f87
Parents: 30b8eba
Author: Likitha Shetty <li...@citrix.com>
Authored: Wed May 21 20:29:03 2014 +0530
Committer: Likitha Shetty <li...@citrix.com>
Committed: Wed May 21 21:15:54 2014 +0530

----------------------------------------------------------------------
 server/src/com/cloud/vm/UserVmManagerImpl.java  |  2 +-
 .../test_ova_templates_with_multiple_disks.py   | 69 ++++++++++----------
 tools/marvin/marvin/lib/base.py                 | 14 ++--
 3 files changed, 41 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/87d87a6f/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 8a719de..74bd6d02 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -2610,7 +2610,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
 
                 if (dataDiskTemplate == null || (!dataDiskTemplate.getTemplateType().equals(TemplateType.DATADISK)) &&
                         (dataDiskTemplate.getState().equals(VirtualMachineTemplate.State.Active))) {
-                    throw new InvalidParameterValueException("Invalid template id specified for Datadisk template" + datadiskTemplateToDiskOffering.getKey());
+                    throw new InvalidParameterValueException("Invalid template id specified for Datadisk template " + datadiskTemplateToDiskOffering.getKey());
                 }
                 long dataDiskTemplateId = datadiskTemplateToDiskOffering.getKey();
                 if (!dataDiskTemplate.getParentTemplateId().equals(template.getId())) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/87d87a6f/test/integration/component/test_ova_templates_with_multiple_disks.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_ova_templates_with_multiple_disks.py b/test/integration/component/test_ova_templates_with_multiple_disks.py
old mode 100644
new mode 100755
index adb948c..a4011f4
--- a/test/integration/component/test_ova_templates_with_multiple_disks.py
+++ b/test/integration/component/test_ova_templates_with_multiple_disks.py
@@ -20,13 +20,13 @@ import marvin
 from nose.plugins.attrib import attr
 from marvin.cloudstackTestCase import *
 from marvin.cloudstackAPI import *
-from marvin.integration.lib.utils import *
-from marvin.integration.lib.base import *
-from marvin.integration.lib.common import *
+from marvin.lib.utils import *
+from marvin.lib.base import *
+from marvin.lib.common import *
 import urllib
 from random import random
 import time
-
+from ddt import ddt
 
 class Services:
     """Test OVA template with mutiple disks
@@ -51,7 +51,6 @@ class Services:
                         "disk_offering": {
                                     "displaytext": "Small",
                                     "name": "Small",
-                                    "disksize": 1
                         },
                         "virtual_machine": {
                                     "displayname": "testVM",
@@ -63,24 +62,19 @@ class Services:
                                     "privateport": 22,
                                     "publicport": 22,
                          },
-                        "templates": {
-                            0: {
+                        "template": {
                                 "displaytext": "Template with multiple disks",
                                 "name": "Template with multiple disks",
-                                "ostype": 'CentOS 5.3 (64-bit)',
-                                "url": "http://10.147.28.7/templates/multipledisk.ova",
-                                "hypervisor": 'VMware',
-                                "format": 'OVA',
                                 "isfeatured": True,
                                 "ispublic": True,
                                 "isextractable": False,
-                                },
                         },
                         "sleep": 60,
                         "timeout": 10,
+                        "format": 'ova',
                      }
 
-
+@ddt
 class TestOVATemplateWithMupltipleDisks(cloudstackTestCase):
 
     def setUp(self):
@@ -101,20 +95,21 @@ class TestOVATemplateWithMupltipleDisks(cloudstackTestCase):
 
     @classmethod
     def setUpClass(cls):
-        cls.services = Services().services
-        cls.api_client = super(TestOVATemplateWithMupltipleDisks, cls).getClsTestClient().getApiClient()
-        cls.api_client.hypervisor = 'VMware'
+        cls.testClient = super(TestOVATemplateWithMupltipleDisks, cls).getClsTestClient()
+        cls.api_client = cls.testClient.getApiClient()
+        cls.services = cls.testClient.getParsedTestDataConfig()
 
         # Get Zone, Domain and templates
-        cls.zone = get_zone(cls.api_client, cls.services)
-        cls.domain = get_domain(cls.api_client, cls.services)
-        cls.services['mode'] = cls.zone.networktype
+        cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests())
+        cls.domain = get_domain(cls.api_client)
         cls.services["virtual_machine"]["zoneid"] = cls.zone.id
 
         cls.service_offering = ServiceOffering.create(
                                             cls.api_client,
                                             cls.services["service_offering"]
                                             )
+        # Disk offering size should be greater than datadisk template size
+        cls.services["disk_offering"]["disksize"] = 10
         cls.disk_offering = DiskOffering.create(
                                     cls.api_client,
                                     cls.services["disk_offering"]
@@ -158,21 +153,25 @@ class TestOVATemplateWithMupltipleDisks(cloudstackTestCase):
         # 5. Verify an additional data disk attached to the VM
 
         # Register new template
-        template = Template.register(
+        self.services["template"]["url"] = 'http://10.147.28.7/templates/single-datadisk-template.ova'
+        self.services["template"]["format"] = 'OVA'
+        self.services["template"]["ostype"] = 'CentOS 5.3 (64-bit)'
+        registered_template = Template.register(
                                         self.apiclient,
-                                        self.services["templates"][0],
+                                        self.services["template"],
                                         zoneid=self.zone.id,
                                         account=self.account.name,
-                                        domainid=self.account.domainid
+                                        domainid=self.account.domainid,
+                                        hypervisor='VMware'
                                         )
         self.debug(
-                "Registered a template of format: %s with ID: %s" % (
-                                                                self.services["templates"][0]["format"],
-                                                                template.id
+                "Registered a template of format: %s with id: %s" % (
+                                                                self.services["template"]["format"],
+                                                                registered_template.id
                                                                 ))
         # Wait for template to download
-        template.download(self.apiclient)
-        self.cleanup.append(template)
+        registered_template.download(self.apiclient)
+        self.cleanup.append(registered_template)
 
         # Wait for template status to be changed across
         time.sleep(self.services["sleep"])
@@ -181,7 +180,7 @@ class TestOVATemplateWithMupltipleDisks(cloudstackTestCase):
             list_template_response = list_templates(
                                     self.apiclient,
                                     templatefilter='all',
-                                    id=template.id,
+                                    id=registered_template.id,
                                     zoneid=self.zone.id,
                                     account=self.account.name,
                                     domainid=self.account.domainid
@@ -213,12 +212,11 @@ class TestOVATemplateWithMupltipleDisks(cloudstackTestCase):
                             "Template state is not ready, it is %s" % template_response.isready
                         )
 
-        time.sleep(120)
         # Veriy 1 additonal Datadisk Templates got created
         list_datadisk_template_response = list_templates(
                                     self.apiclient,
-                                    templatefilter='all',
-                                    parenttemplateid=template.id,
+                                    templatefilter='self',
+                                    parenttemplateid=registered_template.id,
                                     zoneid=self.zone.id,
                                     account=self.account.name,
                                     domainid=self.account.domainid
@@ -244,18 +242,17 @@ class TestOVATemplateWithMupltipleDisks(cloudstackTestCase):
                         )
 
         # Deploy new virtual machine using template
+        datadisktemplate_diskoffering_list = {datadisk_template_response.id: self.disk_offering.id}
         virtual_machine = VirtualMachine.create(
                                     self.apiclient,
                                     self.services["virtual_machine"],
-                                    templateid=template.id,
+                                    templateid=registered_template.id,
                                     accountid=self.account.name,
                                     domainid=self.account.domainid,
                                     serviceofferingid=self.service_offering.id,
-                                    mode=self.services["mode"],
-                                    datadisktemplateid=datadisk_template_response.id,
-                                    datadiskofferingid=self.disk_offering.id
+                                    datadisktemplate_diskoffering_list=datadisktemplate_diskoffering_list
                                     )
-        self.debug("Creating an instance with template ID: %s" % template.id)
+        self.debug("Creating an instance with template ID: %s" % registered_template.id)
         vm_response = list_virtual_machines(
                                         self.apiclient,
                                         id=virtual_machine.id,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/87d87a6f/tools/marvin/marvin/lib/base.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py
index 82e17b6..7cba55d 100755
--- a/tools/marvin/marvin/lib/base.py
+++ b/tools/marvin/marvin/lib/base.py
@@ -328,8 +328,8 @@ class VirtualMachine:
                     securitygroupids=None, projectid=None, startvm=None,
                     diskofferingid=None, affinitygroupnames=None, affinitygroupids=None, group=None,
                     hostid=None, keypair=None, ipaddress=None, mode='default', method='GET',hypervisor=None,
-                    customcpunumber=None, customcpuspeed=None, custommemory=None, rootdisksize=None):
-                    datadisktemplateid=None, datadiskofferingid=None):
+                    customcpunumber=None, customcpuspeed=None, custommemory=None, rootdisksize=None,
+                    datadisktemplate_diskoffering_list={}):
         """Create the instance"""
 
         cmd = deployVirtualMachine.deployVirtualMachineCmd()
@@ -434,12 +434,12 @@ class VirtualMachine:
         if group:
             cmd.group = group
 
-        if datadisktemplateid is not None and datadiskofferingid is not None:
-            cmd.datadisktemplatetodiskofferinglist = []
+        cmd.datadisktemplatetodiskofferinglist = []
+        for datadisktemplate, diskoffering in datadisktemplate_diskoffering_list.items():
             cmd.datadisktemplatetodiskofferinglist.append({
-                 'datadisktemplateid': datadisktemplateid,
-                 'diskofferingid': datadiskofferingid
-                 })
+                                            'datadisktemplateid': datadisktemplate,
+                                            'diskofferingid': diskoffering
+                                           })
 
         #program default access to ssh
         if mode.lower() == 'basic':