diff --git a/tools/marvin/marvin/integration/lib/factory/TemplateFactory.py b/tools/marvin/marvin/integration/lib/factory/TemplateFactory.py index 175a6e94818..e2bb023a42c 100644 --- a/tools/marvin/marvin/integration/lib/factory/TemplateFactory.py +++ b/tools/marvin/marvin/integration/lib/factory/TemplateFactory.py @@ -16,10 +16,17 @@ # under the License. import factory from marvin.integration.lib.base import Template -class TemplateFactory(factory.Factory): +from marvin.integration.lib.factory.CloudStackBaseFactory import CloudStackBaseFactory - FACTORY_FOR = Template +class TemplateFactory(CloudStackBaseFactory): + + FACTORY_FOR = Template.Template displaytext = None name = None ostypeid = None + +class DefaultBuiltInTemplateFactory(TemplateFactory): + ostype = 'CentOS 5.3 (64-bit)' + displaytext = 'CentOS 5.3 (64-bit)' + name = 'CentOS 5.3 (64-bit)' diff --git a/tools/marvin/marvin/integration/lib/factory/UserFactory.py b/tools/marvin/marvin/integration/lib/factory/UserFactory.py index a249478ac92..eb2cafbe89b 100644 --- a/tools/marvin/marvin/integration/lib/factory/UserFactory.py +++ b/tools/marvin/marvin/integration/lib/factory/UserFactory.py @@ -16,6 +16,7 @@ # under the License. import factory from marvin.integration.lib.base import User + class UserFactory(factory.Factory): FACTORY_FOR = User diff --git a/tools/marvin/marvin/integration/lib/factory/VirtualMachineFactory.py b/tools/marvin/marvin/integration/lib/factory/VirtualMachineFactory.py index a9dc6c0191b..260a0edefff 100644 --- a/tools/marvin/marvin/integration/lib/factory/VirtualMachineFactory.py +++ b/tools/marvin/marvin/integration/lib/factory/VirtualMachineFactory.py @@ -14,11 +14,14 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. + import factory from marvin.integration.lib.base import VirtualMachine -class VirtualMachineFactory(factory.Factory): +from marvin.integration.lib.factory.CloudStackBaseFactory import CloudStackBaseFactory - FACTORY_FOR = VirtualMachine +class VirtualMachineFactory(CloudStackBaseFactory): + + FACTORY_FOR = VirtualMachine.VirtualMachine serviceofferingid = None templateid = None diff --git a/tools/marvin/marvin/integration/lib/factory/test/testFactories.py b/tools/marvin/marvin/integration/lib/factory/test/testFactories.py index 1637020a53c..7e682c21d6b 100644 --- a/tools/marvin/marvin/integration/lib/factory/test/testFactories.py +++ b/tools/marvin/marvin/integration/lib/factory/test/testFactories.py @@ -17,6 +17,7 @@ import unittest from marvin.cloudstackTestClient import cloudstackTestClient +from marvin.integration.lib.common import get_template from marvin.integration.lib.factory.AccountFactory import * from marvin.integration.lib.base.Account import Account @@ -27,6 +28,13 @@ from marvin.integration.lib.base.ServiceOffering import ServiceOffering from marvin.integration.lib.factory.NetworkOfferingFactory import * from marvin.integration.lib.base.NetworkOffering import NetworkOffering +from marvin.integration.lib.base.Zone import Zone + +from marvin.integration.lib.factory.TemplateFactory import * + +from marvin.integration.lib.factory.VirtualMachineFactory import * +from marvin.integration.lib.base.VirtualMachine import VirtualMachine + class AccountFactoryTest(unittest.TestCase): def setUp(self): self.apiClient = cloudstackTestClient(mgtSvr='localhost').getApiClient() @@ -92,4 +100,20 @@ class NetworkOfferingFactoryTest(unittest.TestCase): sgOffering.update(self.apiClient, state='Enabled') def tearDown(self): - pass \ No newline at end of file + pass + +class VirtualMachineFactoryTest(unittest.TestCase): + def setUp(self): + self.apiClient = cloudstackTestClient(mgtSvr='localhost').getApiClient() + + def tearDown(self): + pass + + def test_virtualMachineDeploy(self): + sf = ServiceOfferingFactory() + tf = DefaultBuiltInTemplateFactory() + zones = Zone.list(apiclient=self.apiClient) + template = get_template(apiclient=self.apiClient, zoneid = zones[0].id, ostype=tf.ostype) + vmf = VirtualMachineFactory(serviceofferingid = sf.id, templateid = template.id, zoneid = zones[0].id) + + vm = VirtualMachine.create(apiclient=self.apiClient, VirtualMachineFactory=vmf) \ No newline at end of file diff --git a/tools/marvin/marvin/integration/lib/generateBase.py b/tools/marvin/marvin/integration/lib/generateBase.py index 2b213ff3bc8..f6d94c0c978 100644 --- a/tools/marvin/marvin/integration/lib/generateBase.py +++ b/tools/marvin/marvin/integration/lib/generateBase.py @@ -137,7 +137,8 @@ def write_entity_classes(entities): else: body.append(tabspace + 'def %s(self, apiclient, **kwargs):'%(action)) body.append(tabspace*2 + 'cmd = %(module)s.%(command)s()'%{"module": details["apimodule"], "command": details["apicmd"]}) - body.append(tabspace*2 + 'cmd.id = self.id') + if action not in ['create', 'list', 'deploy']: + body.append(tabspace*2 + 'cmd.id = self.id') for arg in details['args']: body.append(tabspace*2 + 'cmd.%s = %s'%(arg, arg)) body.append(tabspace*2 + '[setattr(cmd, key, value) for key,value in kwargs.iteritems()]')