You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ts...@apache.org on 2013/04/25 16:46:12 UTC

[46/51] [abbrv] git commit: updated refs/heads/marvin_refactor to dbcfc66

Chain subFactory calls

SubFactories now can call in a nested fashion to populate attributes in
dependant entities.


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

Branch: refs/heads/marvin_refactor
Commit: 4d54820aa9e8ba5851e946779610f77ded80849c
Parents: dce00d4
Author: Prasanna Santhanam <ts...@apache.org>
Authored: Thu Apr 25 16:58:24 2013 +0530
Committer: Prasanna Santhanam <ts...@apache.org>
Committed: Thu Apr 25 16:58:24 2013 +0530

----------------------------------------------------------------------
 tools/marvin/marvin/base/Account.py                |    4 +++-
 tools/marvin/marvin/factory/AccountFactory.py      |   13 ++++++++++---
 .../marvin/marvin/factory/CloudStackBaseFactory.py |    2 +-
 tools/marvin/marvin/factory/UserFactory.py         |   14 +++++++-------
 tools/marvin/marvin/factory/test/testFactories.py  |    2 +-
 tools/marvin/marvin/factory/test/test_factories.py |    2 +-
 6 files changed, 23 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d54820a/tools/marvin/marvin/base/Account.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/base/Account.py b/tools/marvin/marvin/base/Account.py
index aaf72ed..32744c9 100644
--- a/tools/marvin/marvin/base/Account.py
+++ b/tools/marvin/marvin/base/Account.py
@@ -14,6 +14,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+
 from marvin.base import CloudStackEntity
 from marvin.cloudstackAPI import enableAccount
 from marvin.cloudstackAPI import lockAccount
@@ -24,8 +25,8 @@ from marvin.cloudstackAPI import disableAccount
 from marvin.cloudstackAPI import deleteAccount
 from marvin.cloudstackAPI import markDefaultZoneForAccount
 
-class Account(CloudStackEntity.CloudStackEntity):
 
+class Account(CloudStackEntity.CloudStackEntity):
 
     def __init__(self, items):
         self.__dict__.update(items)
@@ -91,6 +92,7 @@ class Account(CloudStackEntity.CloudStackEntity):
         account = apiclient.deleteAccount(cmd)
         return account
 
+
     def mark(self, apiclient, zoneid, **kwargs):
         cmd = markDefaultZoneForAccount.markDefaultZoneForAccountCmd()
         cmd.id = self.id

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d54820a/tools/marvin/marvin/factory/AccountFactory.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/factory/AccountFactory.py b/tools/marvin/marvin/factory/AccountFactory.py
index 3c07683..db38732 100644
--- a/tools/marvin/marvin/factory/AccountFactory.py
+++ b/tools/marvin/marvin/factory/AccountFactory.py
@@ -20,11 +20,18 @@ from marvin.factory.CloudStackBaseFactory import CloudStackBaseFactory
 from marvin.base import Account
 from marvin.utils import random_gen
 
-@factory.use_strategy(new_strategy=factory.BUILD_STRATEGY)
 class AccountFactory(CloudStackBaseFactory):
 
     FACTORY_FOR = Account.Account
 
+    accounttype = None
+    firstname = None
+    lastname = None
+    email = None
+    username = None
+    password = None
+
+class UserAccountFactory(AccountFactory):
     accounttype = 0
     firstname = factory.Sequence(lambda n: random_gen())
     lastname = factory.Sequence(lambda n: random_gen())
@@ -33,10 +40,10 @@ class AccountFactory(CloudStackBaseFactory):
     password = 'password'
 
 
-class AdminAccountFactory(AccountFactory):
+class AdminAccountFactory(UserAccountFactory):
     accounttype = 1
 
 
-class DomainAdminFactory(AccountFactory):
+class DomainAdminFactory(UserAccountFactory):
     accounttype = 2
     domainid = None

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d54820a/tools/marvin/marvin/factory/CloudStackBaseFactory.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/factory/CloudStackBaseFactory.py b/tools/marvin/marvin/factory/CloudStackBaseFactory.py
index 499dbc2..c4a7c77 100644
--- a/tools/marvin/marvin/factory/CloudStackBaseFactory.py
+++ b/tools/marvin/marvin/factory/CloudStackBaseFactory.py
@@ -32,7 +32,7 @@ class CloudStackBaseFactory(factory.Factory):
 
     @classmethod
     def _create(cls, target_class, *args, **kwargs):
-        if cls.apiclient:
+        if hasattr(cls, 'apiclient'):
             members = inspect.getmembers(target_class,
                 predicate=inspect.ismethod)
             creators = filter(lambda x: x[0] in CREATORS, members)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d54820a/tools/marvin/marvin/factory/UserFactory.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/factory/UserFactory.py b/tools/marvin/marvin/factory/UserFactory.py
index f70089d..4981ca4 100644
--- a/tools/marvin/marvin/factory/UserFactory.py
+++ b/tools/marvin/marvin/factory/UserFactory.py
@@ -23,12 +23,12 @@ class UserFactory(CloudStackBaseFactory):
 
     FACTORY_FOR = User.User
 
-    account = factory.SubFactory(AccountFactory, apiclient=factory.SelfAttribute('..apiclient')).factory()
-    email = account.email
-    firstname = account.firstname
-    lastname = account.lastname
-    password = account.password
-    username = account.username
+    account = factory.SubFactory(AccountFactory, apiclient=factory.SelfAttribute('..apiclient'))
+    email = factory.SelfAttribute('account.email')
+    firstname = factory.SelfAttribute('account.firstname')
+    lastname = factory.SelfAttribute('account.lastname')
+    password = factory.SelfAttribute('account.password')
+    username = factory.SelfAttribute('account.name')
 
 class AdminUserFactory(UserFactory):
-    account = factory.SubFactory(AccountFactory, accounttype=1).factory()
+    account = factory.SubFactory(AccountFactory, accounttype=1)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d54820a/tools/marvin/marvin/factory/test/testFactories.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/factory/test/testFactories.py b/tools/marvin/marvin/factory/test/testFactories.py
index d4e947e..c798bb4 100644
--- a/tools/marvin/marvin/factory/test/testFactories.py
+++ b/tools/marvin/marvin/factory/test/testFactories.py
@@ -147,7 +147,7 @@ class UserFactorySubFactoryTest(unittest.TestCase):
 
     def test_userSubFactory(self):
         uf = UserFactory.create(apiclient=self.apiClient)
-        user = User.list(apiclient=self.apiClient, username=uf.username)
+        user = User.list(apiclient=self.apiClient, username=uf.account.username)
         self.assert_(uf.username == user[0].username, msg="Usernames don't match")
 
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4d54820a/tools/marvin/marvin/factory/test/test_factories.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/factory/test/test_factories.py b/tools/marvin/marvin/factory/test/test_factories.py
index 31cdb40..56903ff 100644
--- a/tools/marvin/marvin/factory/test/test_factories.py
+++ b/tools/marvin/marvin/factory/test/test_factories.py
@@ -43,7 +43,7 @@ class BuildVsCreateStrategyTest(unittest.TestCase):
 
     def test_buildUserAccountFactory(self):
         af = UserAccountFactory()
-        self.assert_(af.name is not None, msg="Acount factory didn't initialize")
+        self.assert_(af.account is not None, msg="Acount factory didn't initialize")
 
     def test_createAccountFactory(self):
         af = AccountFactory.create(apiclient=self.apiClient)