You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by gi...@apache.org on 2014/02/11 08:06:42 UTC

git commit: updated refs/heads/marvin to 995e3f5

Updated Branches:
  refs/heads/marvin 3493f17ba -> 995e3f5b5


Revert "CLOUDSTACK-5674: Few new fixes"

This reverts commit 3493f17bad3b8b57778b62d464c5e7f910351cc0.


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

Branch: refs/heads/marvin
Commit: 995e3f5b5d71d5f52d18e0c3260b8624e6b6251c
Parents: 3493f17
Author: Girish Shilamkar <gi...@clogeny.com>
Authored: Tue Feb 11 12:36:07 2014 +0530
Committer: Girish Shilamkar <gi...@clogeny.com>
Committed: Tue Feb 11 12:36:07 2014 +0530

----------------------------------------------------------------------
 setup/dev/advanced.cfg                          |   2 +-
 test/integration/smoke/test_deploy_vm.py        |   2 +-
 .../smoke/test_deploy_vm_with_userdata.py       |   2 +-
 ...deploy_vms_with_varied_deploymentplanners.py |   2 +-
 test/integration/smoke/test_guest_vlan_range.py |   2 +-
 test/integration/smoke/test_hosts.py            |   2 +-
 test/integration/smoke/test_internal_lb.py      |   2 +-
 test/integration/smoke/test_iso.py              |   2 +-
 test/integration/smoke/test_loadbalance.py      |   2 +-
 .../smoke/test_multipleips_per_nic.py           |   2 +-
 test/integration/smoke/test_network.py          |   4 +-
 test/integration/smoke/test_network_acl.py      |   2 +-
 test/integration/smoke/test_nic.py              |   2 +-
 .../integration/smoke/test_portable_publicip.py |   2 +-
 test/integration/smoke/test_primary_storage.py  |   2 +-
 test/integration/smoke/test_public_ip_range.py  |   2 +-
 .../smoke/test_reset_vm_on_reboot.py            |   2 +-
 test/integration/smoke/test_resource_detail.py  |   2 +-
 test/integration/smoke/test_routers.py          |   2 +-
 test/integration/smoke/test_scale_vm.py         |   2 +-
 .../integration/smoke/test_service_offerings.py |   2 +-
 test/integration/smoke/test_snapshots.py        |   2 +-
 test/integration/smoke/test_ssvm.py             |   2 +-
 test/integration/smoke/test_templates.py        |   2 +-
 test/integration/smoke/test_vm_life_cycle.py    |   2 +-
 test/integration/smoke/test_vm_snapshots.py     |   2 +-
 test/integration/smoke/test_volumes.py          |   6 +-
 test/integration/smoke/test_vpc_vpn.py          |   2 +-
 tools/marvin/marvin/asyncJobMgr.py              |   2 +-
 tools/marvin/marvin/cloudstackConnection.py     |   2 +-
 tools/marvin/marvin/cloudstackTestClient.py     |  39 ++--
 tools/marvin/marvin/configGenerator.py          |  14 +-
 tools/marvin/marvin/dbConnection.py             |   2 +-
 tools/marvin/marvin/deployDataCenter.py         |   2 +-
 tools/marvin/marvin/lib/utils.py                |   2 +-
 tools/marvin/marvin/marvinInit.py               | 111 +++++----
 tools/marvin/marvin/marvinLog.py                |  27 +--
 tools/marvin/marvin/marvinPlugin.py             | 232 +++++++++----------
 tools/marvin/marvin/sshClient.py                |   2 +-
 39 files changed, 249 insertions(+), 248 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/setup/dev/advanced.cfg
----------------------------------------------------------------------
diff --git a/setup/dev/advanced.cfg b/setup/dev/advanced.cfg
index 199571d..15d1057 100644
--- a/setup/dev/advanced.cfg
+++ b/setup/dev/advanced.cfg
@@ -226,6 +226,6 @@
     },
     "TestData":
     {
-      "Path": ""
+      "Path": "config/config.cfg"
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_deploy_vm.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_deploy_vm.py b/test/integration/smoke/test_deploy_vm.py
index 9f40f78..9b28186 100644
--- a/test/integration/smoke/test_deploy_vm.py
+++ b/test/integration/smoke/test_deploy_vm.py
@@ -44,7 +44,7 @@ class TestDeployVM(cloudstackTestCase):
         
         # Get Zone, Domain and Default Built-in template
         self.domain = get_domain(self.apiclient)
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.testdata)
         self.testdata["mode"] = self.zone.networktype
         self.template = get_template(self.apiclient, self.zone.id, self.testdata["ostype"])
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_deploy_vm_with_userdata.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_deploy_vm_with_userdata.py b/test/integration/smoke/test_deploy_vm_with_userdata.py
index eb03194..27dce50 100644
--- a/test/integration/smoke/test_deploy_vm_with_userdata.py
+++ b/test/integration/smoke/test_deploy_vm_with_userdata.py
@@ -36,7 +36,7 @@ class TestDeployVmWithUserData(cloudstackTestCase):
         cls.apiClient = testClient.getApiClient() 
         cls.services = testClient.getParsedTestDataConfig()
 
-        cls.zone = get_zone(cls.apiClient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiClient, cls.getZoneForTests())
         if cls.zone.localstorageenabled:
             #For devcloud since localstroage is enabled
             cls.services["service_offerings"]["storagetype"] = "local"

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_deploy_vms_with_varied_deploymentplanners.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_deploy_vms_with_varied_deploymentplanners.py b/test/integration/smoke/test_deploy_vms_with_varied_deploymentplanners.py
index c0c77e7..270d9d2 100644
--- a/test/integration/smoke/test_deploy_vms_with_varied_deploymentplanners.py
+++ b/test/integration/smoke/test_deploy_vms_with_varied_deploymentplanners.py
@@ -34,7 +34,7 @@ class TestDeployVmWithVariedPlanners(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.template = get_template(
             cls.apiclient,
             cls.zone.id,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_guest_vlan_range.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_guest_vlan_range.py b/test/integration/smoke/test_guest_vlan_range.py
index ecf7a0d..886d1b8 100644
--- a/test/integration/smoke/test_guest_vlan_range.py
+++ b/test/integration/smoke/test_guest_vlan_range.py
@@ -36,7 +36,7 @@ class TestDedicateGuestVlanRange(cloudstackTestCase):
 
         # Get Zone, Domain
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
 
         # Create Account
         cls.account = Account.create(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_hosts.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_hosts.py b/test/integration/smoke/test_hosts.py
index 31af7fc..57c35f5 100644
--- a/test/integration/smoke/test_hosts.py
+++ b/test/integration/smoke/test_hosts.py
@@ -37,7 +37,7 @@ class TestHosts(cloudstackTestCase):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.services = self.testClient.getParsedTestDataConfig()
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.getZoneForTests())
         self.pod = get_pod(self.apiclient, self.zone.id)
         self.cleanup = []
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_internal_lb.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_internal_lb.py b/test/integration/smoke/test_internal_lb.py
index 8a64b4d..5a9127b 100644
--- a/test/integration/smoke/test_internal_lb.py
+++ b/test/integration/smoke/test_internal_lb.py
@@ -34,7 +34,7 @@ class TestInternalLb(cloudstackTestCase):
         cls.apiclient = testClient.getApiClient()
         cls.services = testClient.getParsedTestDataConfig()
 
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.domain = get_domain(cls.apiclient)
         cls.service_offering = ServiceOffering.create(
             cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_iso.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_iso.py b/test/integration/smoke/test_iso.py
index 72dc70d..0aec94c 100644
--- a/test/integration/smoke/test_iso.py
+++ b/test/integration/smoke/test_iso.py
@@ -39,7 +39,7 @@ class TestCreateIso(cloudstackTestCase):
         self.dbclient = self.testClient.getDbConnection()
         # Get Zone, Domain and templates
         self.domain = get_domain(self.apiclient)
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.getZoneForTests())
         self.services['mode'] = self.zone.networktype
         self.services["domainid"] = self.domain.id
         self.services["iso_2"]["zoneid"] = self.zone.id

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_loadbalance.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_loadbalance.py b/test/integration/smoke/test_loadbalance.py
index 28a14e4..c9fe2e0 100644
--- a/test/integration/smoke/test_loadbalance.py
+++ b/test/integration/smoke/test_loadbalance.py
@@ -38,7 +38,7 @@ class TestLoadBalance(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         template = get_template(
                             cls.apiclient,
                             cls.zone.id,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_multipleips_per_nic.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_multipleips_per_nic.py b/test/integration/smoke/test_multipleips_per_nic.py
index 9c7f2f7..8acf285 100644
--- a/test/integration/smoke/test_multipleips_per_nic.py
+++ b/test/integration/smoke/test_multipleips_per_nic.py
@@ -48,7 +48,7 @@ class TestDeployVM(cloudstackTestCase):
 
         # Get Zone, Domain and Default Built-in template
         self.domain = get_domain(self.apiclient)
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.getZoneForTests())
         self.testdata["mode"] = self.zone.networktype
         self.template = get_template(self.apiclient, self.zone.id, self.testdata["ostype"])
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_network.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_network.py b/test/integration/smoke/test_network.py
index 258d254..566bd37 100644
--- a/test/integration/smoke/test_network.py
+++ b/test/integration/smoke/test_network.py
@@ -46,7 +46,7 @@ class TestPublicIP(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
         # Create Accounts & networks
         cls.account = Account.create(
@@ -541,7 +541,7 @@ class TestRebootRouter(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         self.domain = get_domain(self.apiclient)
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.getZoneForTests())
         template = get_template(
                             self.apiclient,
                             self.zone.id,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_network_acl.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_network_acl.py b/test/integration/smoke/test_network_acl.py
index 1133bee..50bbbf3 100644
--- a/test/integration/smoke/test_network_acl.py
+++ b/test/integration/smoke/test_network_acl.py
@@ -32,7 +32,7 @@ class TestNetworkACL(cloudstackTestCase):
         cls.apiclient = testClient.getApiClient()
         cls.services = testClient.getParsedTestDataConfig()
 
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.domain = get_domain(cls.apiclient)
         cls.service_offering = ServiceOffering.create(
             cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_nic.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_nic.py b/test/integration/smoke/test_nic.py
index 0e866b8..4ee43b5 100644
--- a/test/integration/smoke/test_nic.py
+++ b/test/integration/smoke/test_nic.py
@@ -48,7 +48,7 @@ class TestNic(cloudstackTestCase):
 
             # Get Zone, Domain and templates
             domain = get_domain(self.apiclient)
-            zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+            zone = get_zone(self.apiclient, self.getZoneForTests())
             self.services['mode'] = zone.networktype
 
             if zone.networktype != 'Advanced':

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_portable_publicip.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_portable_publicip.py b/test/integration/smoke/test_portable_publicip.py
index 48310a5..37aaada 100644
--- a/test/integration/smoke/test_portable_publicip.py
+++ b/test/integration/smoke/test_portable_publicip.py
@@ -39,7 +39,7 @@ class TestPortablePublicIPRange(cloudstackTestCase):
 
         # Get Zone, Domain
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
 
         # Create Account
         cls.account = Account.create(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_primary_storage.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_primary_storage.py b/test/integration/smoke/test_primary_storage.py
index 8f89f4f..9437b3d 100644
--- a/test/integration/smoke/test_primary_storage.py
+++ b/test/integration/smoke/test_primary_storage.py
@@ -37,7 +37,7 @@ class TestPrimaryStorageServices(cloudstackTestCase):
         self.services = self.testClient.getParsedTestDataConfig()
         self.cleanup = []
         # Get Zone and pod
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.getZoneForTests())
         self.pod = get_pod(self.apiclient, self.zone.id)
 
         return

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_public_ip_range.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_public_ip_range.py b/test/integration/smoke/test_public_ip_range.py
index ae9b64b..998bda2 100644
--- a/test/integration/smoke/test_public_ip_range.py
+++ b/test/integration/smoke/test_public_ip_range.py
@@ -34,7 +34,7 @@ class TestDedicatePublicIPRange(cloudstackTestCase):
         cls.services = Services().services
         # Get Zone, Domain
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, cls.getClsTestClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
 
         # Create Account
         cls.account = Account.create(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_reset_vm_on_reboot.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_reset_vm_on_reboot.py b/test/integration/smoke/test_reset_vm_on_reboot.py
index 253f0f4..fac96fa 100644
--- a/test/integration/smoke/test_reset_vm_on_reboot.py
+++ b/test/integration/smoke/test_reset_vm_on_reboot.py
@@ -36,7 +36,7 @@ class TestResetVmOnReboot(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         domain = get_domain(cls.apiclient)
-        zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = zone.networktype
 
         template = get_template(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_resource_detail.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_resource_detail.py b/test/integration/smoke/test_resource_detail.py
index 1613a4a..e7081f7 100644
--- a/test/integration/smoke/test_resource_detail.py
+++ b/test/integration/smoke/test_resource_detail.py
@@ -40,7 +40,7 @@ class TestResourceDetail(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         domain = get_domain(cls.apiclient)
-        zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = zone.networktype
 
         # Set Zones and disk offerings ??

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_routers.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_routers.py b/test/integration/smoke/test_routers.py
index 0c91b9f..61dc5be 100644
--- a/test/integration/smoke/test_routers.py
+++ b/test/integration/smoke/test_routers.py
@@ -42,7 +42,7 @@ class TestRouterServices(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
         template = get_template(
                             cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_scale_vm.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_scale_vm.py b/test/integration/smoke/test_scale_vm.py
index 5ab4463..6fa8d77 100644
--- a/test/integration/smoke/test_scale_vm.py
+++ b/test/integration/smoke/test_scale_vm.py
@@ -36,7 +36,7 @@ class TestScaleVm(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         domain = get_domain(cls.apiclient)
-        zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = zone.networktype
 
         template = get_template(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_service_offerings.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py
index 0c7752d..b518c98 100644
--- a/test/integration/smoke/test_service_offerings.py
+++ b/test/integration/smoke/test_service_offerings.py
@@ -137,7 +137,7 @@ class TestServiceOfferings(cloudstackTestCase):
         cls.services = testClient.getParsedTestDataConfig()
 
         domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
 
         cls.service_offering_1 = ServiceOffering.create(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_snapshots.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_snapshots.py b/test/integration/smoke/test_snapshots.py
index d475d87..312da45 100644
--- a/test/integration/smoke/test_snapshots.py
+++ b/test/integration/smoke/test_snapshots.py
@@ -32,7 +32,7 @@ class TestSnapshotRootDisk(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
 
         template = get_template(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_ssvm.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_ssvm.py b/test/integration/smoke/test_ssvm.py
index 3ba7303..d8e9f85 100644
--- a/test/integration/smoke/test_ssvm.py
+++ b/test/integration/smoke/test_ssvm.py
@@ -38,7 +38,7 @@ class TestSSVMs(cloudstackTestCase):
         self.apiclient = self.testClient.getApiClient()
         self.cleanup = []
         self.services = Services().services
-        self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests())
+        self.zone = get_zone(self.apiclient, self.getZoneForTests())
         return
 
     def tearDown(self):

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_templates.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_templates.py b/test/integration/smoke/test_templates.py
index 26bbb55..71aee48 100644
--- a/test/integration/smoke/test_templates.py
+++ b/test/integration/smoke/test_templates.py
@@ -59,7 +59,7 @@ class TestCreateTemplate(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
         cls.disk_offering = DiskOffering.create(
                                     cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_vm_life_cycle.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_vm_life_cycle.py b/test/integration/smoke/test_vm_life_cycle.py
index 05ecba5..31031c8 100644
--- a/test/integration/smoke/test_vm_life_cycle.py
+++ b/test/integration/smoke/test_vm_life_cycle.py
@@ -39,7 +39,7 @@ class TestDeployVM(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
 
         #If local storage is enabled, alter the offerings to use localstorage

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_vm_snapshots.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_vm_snapshots.py b/test/integration/smoke/test_vm_snapshots.py
index 6f64802..86af013 100644
--- a/test/integration/smoke/test_vm_snapshots.py
+++ b/test/integration/smoke/test_vm_snapshots.py
@@ -32,7 +32,7 @@ class TestVmSnapshot(cloudstackTestCase):
         cls.services = Services().services
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, cls.getClsTestClient().getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
 
         template = get_template(
                     cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_volumes.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_volumes.py b/test/integration/smoke/test_volumes.py
index 67b986f..f650dd5 100644
--- a/test/integration/smoke/test_volumes.py
+++ b/test/integration/smoke/test_volumes.py
@@ -43,10 +43,10 @@ class TestCreateVolume(cloudstackTestCase):
         testClient = super(TestCreateVolume, cls).getClsTestClient()
         cls.apiclient = testClient.getApiClient()
         cls.services = testClient.getParsedTestDataConfig()
-        print "\n***************",testClient.getParsedTestDataConfig()
+
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
         cls.disk_offering = DiskOffering.create(
                                     cls.apiclient,
@@ -224,7 +224,7 @@ class TestVolumes(cloudstackTestCase):
 
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.services['mode'] = cls.zone.networktype
         cls.disk_offering = DiskOffering.create(
                                     cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/test/integration/smoke/test_vpc_vpn.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_vpc_vpn.py b/test/integration/smoke/test_vpc_vpn.py
index 4ec2da1..56215c1 100644
--- a/test/integration/smoke/test_vpc_vpn.py
+++ b/test/integration/smoke/test_vpc_vpn.py
@@ -34,7 +34,7 @@ class TestVpcRemoteAccessVpn(cloudstackTestCase):
         cls.apiclient = testClient.getApiClient()
         cls.services = testClient.getParsedTestDataConfig()
 
-        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
+        cls.zone = get_zone(cls.apiclient, cls.getZoneForTests())
         cls.domain = get_domain(cls.apiclient)
         cls.service_offering = ServiceOffering.create(
             cls.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/asyncJobMgr.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/asyncJobMgr.py b/tools/marvin/marvin/asyncJobMgr.py
index ee3ae5a..dab85ca 100644
--- a/tools/marvin/marvin/asyncJobMgr.py
+++ b/tools/marvin/marvin/asyncJobMgr.py
@@ -16,7 +16,7 @@
 # under the License.
 
 import threading
-from marvin import cloudstackException
+import cloudstackException
 import time
 import Queue
 import copy

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/cloudstackConnection.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/cloudstackConnection.py b/tools/marvin/marvin/cloudstackConnection.py
index ee1ff00..b8d9a38 100644
--- a/tools/marvin/marvin/cloudstackConnection.py
+++ b/tools/marvin/marvin/cloudstackConnection.py
@@ -38,7 +38,7 @@ from requests import (
     Timeout,
     RequestException
 )
-from marvin.cloudstackException import GetDetailExceptionInfo
+from cloudstackException import GetDetailExceptionInfo
 
 
 class CSConnection(object):

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/cloudstackTestClient.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/cloudstackTestClient.py b/tools/marvin/marvin/cloudstackTestClient.py
index a1b8e19..e8c6ab2 100644
--- a/tools/marvin/marvin/cloudstackTestClient.py
+++ b/tools/marvin/marvin/cloudstackTestClient.py
@@ -26,25 +26,26 @@ from codes import (FAILED, PASS, ADMIN, DOMAIN_ADMIN,
                    USER, SUCCESS, XEN_SERVER)
 from configGenerator import ConfigManager
 from marvin.lib import utils
-from marvin.cloudstackException import GetDetailExceptionInfo
+from cloudstackException import GetDetailExceptionInfo
 from marvin.lib.utils import (random_gen, validateList)
 from marvin.cloudstackAPI.cloudstackAPIClient import CloudStackAPIClient
 
-class CSTestClient(object):
-    '''
-    @Desc  : CloudStackTestClient is encapsulated entity for creating and
+'''
+@Desc  : CloudStackTestClient is encapsulated entity for creating and
          getting various clients viz., apiclient,
          user api client, dbconnection, test Data parsed
          information etc
-    @Input :
-         mgmt_details : Management Server Details
-         dbsvr_details: Database Server details of Management \
+@Input : mgmtDetails : Management Server Details
+         dbSvrDetails: Database Server details of Management \
                        Server. Retrieved from configuration file.
-         async_timeout : Timeout for Async queries
-         default_worker_threads : Number of worker threads
+         asyncTimeout : Timeout for Async queries
+         defaultWorkerThreads : Number of worker threads
          logger : provides logging facilities for this library
          zone : The zone on which test suites using this test client will run
-    '''
+'''
+
+
+class CSTestClient(object):
     def __init__(self, mgmt_details,
                  dbsvr_details,
                  async_timeout=3600,
@@ -132,9 +133,9 @@ class CSTestClient(object):
                 list_user = listUsers.listUsersCmd()
                 list_user.account = "admin"
                 list_user_res = self.__apiClient.listUsers(list_user)
-                if list_user_res == FAILED or list_user_res is None or\
+                if list_user_res is None or\
                         (validateList(list_user_res)[0] != PASS):
-                    self.__logger.error("__createApiClient: API "
+                    self.__logger.debug("__createApiClient: API "
                                         "Client Creation Failed")
                     return FAILED
 
@@ -199,6 +200,7 @@ class CSTestClient(object):
             register_user.id = userid
             register_user_res = \
                 self.__apiClient.registerUserKeys(register_user)
+
             if register_user_res == FAILED:
                 return FAILED
             return (register_user_res.apikey, register_user_res.secretkey)
@@ -230,11 +232,9 @@ class CSTestClient(object):
                configuration file. They can overwrite it with
                providing their own configuration file as well.
             '''
-            print "******************PATH*****************",self.__testDataFilePath
             self.__configObj = ConfigManager(self.__testDataFilePath)
-            if self.__configObj:
+            if self.__configObj is not None:
                 self.__parsedTestDataConfig = self.__configObj.getConfig()
-                print "\n**************************************HTTTTTT***",self.__parsedTestDataConfig
             else:
                 self.__logger.error("createTestClient : Not able to create "
                                     "ConfigManager Object")
@@ -246,12 +246,7 @@ class CSTestClient(object):
             '''
             3. Creates API Client
             '''
-            ret = self.__createApiClient()
-            if ret == FAILED:
-                self.__logger.error("********Test Client Creation Failed********")
-            else:
-                self.__logger.debug("********Test Client Creation Successful********")
-            return ret
+            return self.__createApiClient()
         except Exception, e:
             self.__logger.exception("Exception Occurred "
                                     "Under createTestClient "
@@ -373,7 +368,7 @@ class CSTestClient(object):
         return self.__configObj
 
     def getApiClient(self):
-        if self.__apiClient:
+        if self.__apiClient is not None:
             self.__apiClient.id = self.identifier
             return self.__apiClient
         return None

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/configGenerator.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/configGenerator.py b/tools/marvin/marvin/configGenerator.py
index f55b0b4..245473a 100644
--- a/tools/marvin/marvin/configGenerator.py
+++ b/tools/marvin/marvin/configGenerator.py
@@ -332,7 +332,10 @@ class ConfigManager(object):
               "getConfig" API,once configObj is returned.
     '''
     def __init__(self, cfg_file=None):
-        self.__filePath = cfg_file
+        if cfg_file is None:
+            self.__filePath = "config/test_data.cfg"
+        else:
+            self.__filePath = cfg_file
         self.__parsedCfgDict = None
         '''
         Set the Configuration
@@ -340,11 +343,8 @@ class ConfigManager(object):
         self.__setConfig()
 
     def __setConfig(self):
-        if not self.__verifyFile():
-            dirPath = os.path.dirname(__file__)
-            self.__filePath = os.path.join(dirPath,"config/test_data.cfg")
-        self.__parsedCfgDict = self.__parseConfig()
-        print "*************PATH3***************",self.__filePath,self.__parsedCfgDict
+        if self.__verifyFile() is not False:
+            self.__parsedCfgDict = self.__parseConfig()
 
     def __parseConfig(self):
         '''
@@ -382,7 +382,7 @@ class ConfigManager(object):
         '''
         if self.__filePath is None or self.__filePath == '':
             return False
-        return os.path.exists(self.__filePath)
+        return False if os.path.exists(self.__filePath) is False else True
 
     def getSectionData(self, section=None):
         '''

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/dbConnection.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/dbConnection.py b/tools/marvin/marvin/dbConnection.py
index ba7bac9..422fcfa 100644
--- a/tools/marvin/marvin/dbConnection.py
+++ b/tools/marvin/marvin/dbConnection.py
@@ -20,7 +20,7 @@ import contextlib
 from mysql import connector
 from mysql.connector import errors
 from contextlib import closing
-from marvin import cloudstackException
+import cloudstackException
 import sys
 import os
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/deployDataCenter.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/deployDataCenter.py b/tools/marvin/marvin/deployDataCenter.py
index c8feaaf..862a1bf 100644
--- a/tools/marvin/marvin/deployDataCenter.py
+++ b/tools/marvin/marvin/deployDataCenter.py
@@ -686,7 +686,7 @@ if __name__ == "__main__":
         log_check = False
         if log_obj is not None:
             log_check = True
-            ret = log_obj.createLogs("DeployDataCenter",
+            ret = log_obj.createLogs("DataCenter",
                                      cfg.logger)
             if ret != FAILED:
                 log_folder_path = log_obj.getLogFolderPath()

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/lib/utils.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/lib/utils.py b/tools/marvin/marvin/lib/utils.py
index 440ff77..957807d 100644
--- a/tools/marvin/marvin/lib/utils.py
+++ b/tools/marvin/marvin/lib/utils.py
@@ -30,7 +30,7 @@ import urlparse
 import datetime
 from platform import system
 from marvin.cloudstackAPI import cloudstackAPIClient, listHosts
-from marvin.cloudstackException import GetDetailExceptionInfo
+from cloudstackException import GetDetailExceptionInfo
 from marvin.sshClient import SshClient
 from marvin.codes import (
                           SUCCESS,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/marvinInit.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/marvinInit.py b/tools/marvin/marvin/marvinInit.py
index e61c8ec..5218d23 100644
--- a/tools/marvin/marvin/marvinInit.py
+++ b/tools/marvin/marvin/marvinInit.py
@@ -15,17 +15,18 @@
 # specific language governing permissions and limitations
 # under the License.
 '''
-Initializes the marvin and does required prerequisites
+@Desc: Initializes the marvin and does required prerequisites
 for starting it.
    1. Parses the configuration file passed to marvin and creates a
-   parsed config.
+   parsed config
    2. Initializes the logging required for marvin.All logs are
    now made available under a single timestamped folder.
-   3. Deploys the Data Center based upon input.
+   3. Deploys the Data Center based upon input
 
 '''
 
-from marvin.configGenerator import getSetupConfig
+from marvin import configGenerator
+from marvin import cloudstackException
 from marvin.marvinLog import MarvinLog
 from marvin.deployDataCenter import DeployDataCenters
 from marvin.cloudstackTestClient import CSTestClient
@@ -48,30 +49,32 @@ from marvin.codegenerator import CodeGenerator
 
 
 class MarvinInit:
-    def __init__(self, config_file,
+    def __init__(self, config_file, load_api_flag=None,
                  deploy_dc_flag=None,
-                 test_mod_name="deploydc",
+                 test_module_name=None,
                  zone=None):
         self.__configFile = config_file
         self.__deployFlag = deploy_dc_flag
+        self.__loadApiFlag = load_api_flag
         self.__parsedConfig = None
         self.__logFolderPath = None
         self.__tcRunLogger = None
-        self.__testModName = test_mod_name
         self.__testClient = None
         self.__tcResultFile = None
+        self.__testModuleName = test_module_name
         self.__testDataFilePath = None
         self.__zoneForTests = None
 
     def __parseConfig(self):
         '''
-        @Name: __parseConfig 
         @Desc : Parses the configuration file passed and assigns
         the parsed configuration
-        @Output : SUCCESS or FAILED
         '''
         try:
-            self.__parsedConfig = getSetupConfig(self.__configFile)
+            if self.__configFile is None:
+                return FAILED
+            self.__parsedConfig = configGenerator.\
+                getSetupConfig(self.__configFile)
             return SUCCESS
         except Exception, e:
             print "\nException Occurred Under __parseConfig : " \
@@ -90,13 +93,7 @@ class MarvinInit:
     def getLogger(self):
         return self.__tcRunLogger
 
-    def getResultFile(self):
-        '''
-        @Name : getDebugFile
-        @Desc : Creates the result file at a given path.
-        @Output : Returns the Result file to be used for writing
-                test outputs
-        '''
+    def getDebugFile(self):
         if self.__logFolderPath is not None:
             self.__tcResultFile = open(self.__logFolderPath +
                                        "/results.txt", "w")
@@ -111,14 +108,14 @@ class MarvinInit:
                2. Creates a timestamped log folder and provides all logs
                   to be dumped there
                3. Creates the DataCenter based upon configuration provided
-        @Output : SUCCESS or FAILED
         '''
         try:
             if ((self.__parseConfig() != FAILED) and
                (self.__setTestDataPath() != FAILED) and
                (self.__initLogging() != FAILED) and
                (self.__createTestClient() != FAILED) and
-               (self.__deployDC() != FAILED)):
+               (self.__deployDC() != FAILED) and
+               (self.__loadNewApiFromXml() != FAILED)):
                 return SUCCESS
             else:
                 return FAILED
@@ -128,9 +125,9 @@ class MarvinInit:
             return FAILED
 
     def __initLogging(self):
-        '''
-        @Name : __initLogging
-        @Desc : 1. Initializes the logging for marvin and so provides
+        try:
+            '''
+            @Desc : 1. Initializes the logging for marvin and so provides
                     various log features for automation run.
                     2. Initializes all logs to be available under
                     given Folder Path,where all test run logs
@@ -138,19 +135,18 @@ class MarvinInit:
                     3. All logging like exception log,results, run info etc
                      for a given test run are available under a given
                      timestamped folder
-        @Output : SUCCESS or FAILED
-        '''
-        try:
+            '''
             log_obj = MarvinLog("CSLog")
-            if log_obj:
+            if log_obj is None:
+                return FAILED
+            else:
                 ret = log_obj.\
-                    createLogs(self.__testModName,
+                    getLogs(self.__testModuleName,
                             self.__parsedConfig.logger)
                 if ret != FAILED:
                     self.__logFolderPath = log_obj.getLogFolderPath()
                     self.__tcRunLogger = log_obj.getLogger()
-                    return SUCCESS
-            return FAILED
+            return SUCCESS
         except Exception, e:
             print "\n Exception Occurred Under __initLogging " \
                   ":%s" % GetDetailExceptionInfo(e)
@@ -161,7 +157,6 @@ class MarvinInit:
         @Name : __createTestClient
         @Desc : Creates the TestClient during init
                 based upon the parameters provided
-        @Output: Returns SUCCESS or FAILED
         '''
         try:
             mgt_details = self.__parsedConfig.mgtSvr[0]
@@ -171,7 +166,7 @@ class MarvinInit:
                                              test_data_filepath=
                                              self.__testDataFilePath,
                                              zone=self.__zoneForTests)
-            if self.__testClient:
+            if self.__testClient is not None:
                 return self.__testClient.createTestClient()
             else:
                 return FAILED
@@ -180,12 +175,37 @@ class MarvinInit:
                   GetDetailExceptionInfo(e)
             return FAILED
 
+    def __loadNewApiFromXml(self):
+        try:
+            if self.__loadApiFlag:
+                apiLoadCfg = self.__parsedConfig.apiLoadCfg
+                api_dst_dir = apiLoadCfg.ParsedApiDestFolder + "/cloudstackAPI"
+                api_spec_file = apiLoadCfg.ApiSpecFile
+
+                if not os.path.exists(api_dst_dir):
+                    try:
+                        os.mkdir(api_dst_dir)
+                    except Exception, e:
+                        print "Failed to create folder %s, " \
+                              "due to %s" % (api_dst_dir,
+                                             GetDetailExceptionInfo(e))
+                        exit(1)
+                mgt_details = self.__parsedConfig.mgtSvr[0]
+                cg = CodeGenerator(api_dst_dir)
+                if os.path.exists(api_spec_file):
+                    cg.generateCodeFromXML(api_spec_file)
+                elif mgt_details is not None:
+                    endpoint_url = 'http://%s:8096/client/api?' \
+                                   'command=listApis&response=json' \
+                                   % mgt_details.mgtSvrIp
+                    cg.generateCodeFromJSON(endpoint_url)
+            return SUCCESS
+        except Exception, e:
+            print "\n Exception Occurred Under __loadNewApiFromXml : %s" \
+                  % GetDetailExceptionInfo(e)
+            return FAILED
+
     def __setTestDataPath(self):
-        '''
-        @Name : __setTestDataPath
-        @Desc : Sets the TestData Path for tests to run
-        @Output:Returns SUCCESS or FAILED
-        '''
         try:
             if ((self.__parsedConfig.TestData is not None) and
                     (self.__parsedConfig.TestData.Path is not None)):
@@ -197,23 +217,14 @@ class MarvinInit:
             return FAILED
 
     def __deployDC(self):
-        '''
-        @Name : __deployDC
-        @Desc : Deploy the DataCenter and returns accordingly.
-        @Output: SUCCESS or FAILED
-        '''
         try:
-            ret = SUCCESS
-            if self.__deployFlag:
-                deploy_obj = DeployDataCenters(self.__testClient,
+            '''
+            Deploy the DataCenter and retrieves test client.
+            '''
+            deploy_obj = DeployDataCenters(self.__testClient,
                                            self.__parsedConfig,
                                            self.__tcRunLogger)
-                ret = deploy_obj.deploy()
-            if ret == SUCCESS:
-                print "Deploy DC Successful"
-            else:
-                print "Deploy DC Failed"
-            return ret
+            return deploy_obj.deploy() if self.__deployFlag else FAILED
         except Exception, e:
             print "\n Exception Occurred Under __deployDC : %s" % \
                   GetDetailExceptionInfo(e)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/marvinLog.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/marvinLog.py b/tools/marvin/marvin/marvinLog.py
index 933a271..4161eca 100644
--- a/tools/marvin/marvin/marvinLog.py
+++ b/tools/marvin/marvin/marvinLog.py
@@ -65,11 +65,9 @@ class MarvinLog:
         self.__logger = logging.getLogger(self.__loggerName)
         self.__logger.setLevel(logging.DEBUG)
 
-    def __setLogHandler(self, log_file_path,
-                        log_format=None,
+    def __setLogHandler(self, log_file_path, log_format=None,
                         log_level=logging.DEBUG):
         '''
-        @Name : __setLogHandler
         @Desc: Adds the given Log handler to the current logger
         @Input: log_file_path: Log File Path as where to store the logs
                log_format : Format of log messages to be dumped
@@ -102,8 +100,7 @@ class MarvinLog:
         @Input: logfolder_to_remove: Path of Log to remove
         '''
         try:
-            if os.path.isdir(logfolder_to_remove):
-                os.rmdir(logfolder_to_remove)
+            os.rmdir(logfolder_to_remove)
         except Exception, e:
             print "\n Exception Occurred Under __cleanPreviousLogs :%s" % \
                   GetDetailExceptionInfo(e)
@@ -123,9 +120,7 @@ class MarvinLog:
         '''
         return self.__logFolderDir
 
-    def createLogs(self,
-                   test_module_name=None,
-                   log_cfg=None):
+    def createLogs(self, test_module_name=None, log_cfg=None):
         '''
         @Name : createLogs
         @Desc : Gets the Logger with file paths initialized and created
@@ -136,15 +131,21 @@ class MarvinLog:
         @Output : SUCCESS\FAILED
         '''
         try:
-            temp_ts = time.strftime("%b_%d_%Y_%H_%M_%S",
-                                          time.localtime())
+            if log_cfg is None:
+                print "\nInvalid Log Folder Configuration." \
+                      "Please Check Config File"
+                return FAILED
             if test_module_name is None:
-                temp_path = temp_ts
+                temp_path = time.strftime("%b_%d_%Y_%H_%M_%S",
+                                          time.localtime())
             else:
-                temp_path = str(test_module_name) + "__" + str(temp_ts)
+                temp_path = str(test_module_name.split(".py")[0])
 
-            if ((log_cfg is not None) and ('LogFolderPath' in log_cfg.__dict__.keys()) and
+            if (('LogFolderPath' in log_cfg.__dict__.keys()) and
                     (log_cfg.__dict__.get('LogFolderPath') is not None)):
+                self.__cleanPreviousLogs(log_cfg.
+                                         __dict__.
+                                         get('LogFolderPath') + "/MarvinLogs")
                 temp_dir = \
                     log_cfg.__dict__.get('LogFolderPath') + "/MarvinLogs"
             else:

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/marvinPlugin.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/marvinPlugin.py b/tools/marvin/marvin/marvinPlugin.py
index f69366b..f36bca8 100644
--- a/tools/marvin/marvin/marvinPlugin.py
+++ b/tools/marvin/marvin/marvinPlugin.py
@@ -14,11 +14,10 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+
 import marvin
 import sys
 import logging
-import time
-import os
 import nose.core
 from marvin.cloudstackTestCase import cloudstackTestCase
 from marvin.marvinInit import MarvinInit
@@ -26,7 +25,9 @@ from nose.plugins.base import Plugin
 from marvin.codes import (SUCCESS,
                           FAILED,
                           EXCEPTION)
-from marvin.cloudstackException import GetDetailExceptionInfo 
+from marvin.cloudstackException import GetDetailExceptionInfo
+import time
+import os
 
 
 class MarvinPlugin(Plugin):
@@ -37,28 +38,32 @@ class MarvinPlugin(Plugin):
     name = "marvin"
 
     def __init__(self):
-        self.__identifier = None
-        self.__testClient = None
-        self.__parsedConfig = None
+        self.identifier = None
+        self.testClient = None
+        self.parsedConfig = None
         '''
         Contains Config File
         '''
         self.__configFile = None
         '''
+        Signifies the flag whether to load new API Information
+        '''
+        self.__loadNewApiFlag = None
+        '''
         Signifies the Zone against which all tests will be Run
         '''
         self.__zoneForTests = None
         '''
         Signifies the flag whether to deploy the New DC or Not
         '''
-        self.__deployDcFlag = None
+        self.__deployDcFlag
         self.conf = None
-        self.__debugStream = sys.stdout
-        self.__testRunner = None
-        self.__testResult = SUCCESS
-        self.__startTime = None
-        self.__testName = None
-        self.__tcRunLogger = None
+        self.debugStream = sys.stdout
+        self.testRunner = None
+        self.testResult = SUCCESS
+        self.startTime = None
+        self.testName = None
+        self.tcRunLogger = None
         Plugin.__init__(self)
 
     def configure(self, options, conf):
@@ -73,11 +78,12 @@ class MarvinPlugin(Plugin):
                 return
             else:
                 self.enabled = True
-        self.__configFile = options.configFile
+
+        self.__configFile = options.config_file
+        self.__loadNewApiFlag = options.loadNewApiFlag
         self.__deployDcFlag = options.deployDc
         self.__zoneForTests = options.zone
         self.conf = conf
-        self.startMarvin()
 
     def options(self, parser, env):
         """
@@ -86,20 +92,32 @@ class MarvinPlugin(Plugin):
         parser.add_option("--marvin-config", action="store",
                           default=env.get('MARVIN_CONFIG',
                                           './datacenter.cfg'),
-                          dest="configFile",
+                          dest="config_file",
                           help="Marvin's configuration file is required."
                                "The config file containing the datacenter and "
                                "other management server "
                                "information is specified")
-        parser.add_option("--deploy", action="store_true",
+        parser.add_option("--deploy-dc", action="store_true",
                           default=False,
                           dest="deployDc",
                           help="Deploys the DC with Given Configuration."
                                "Requires only when DC needs to be deployed")
-        parser.add_option("--zone", action="store_true",
+        parser.add_option("--zone", action="zone_tests",
                           default=None,
                           dest="zone",
                           help="Runs all tests against this specified zone")
+        parser.add_option("--load-new-apis", action="store_true",
+                          default=False,
+                          dest="loadNewApiFlag",
+                          help="Loads the New Apis with Given Api Xml File."
+                               "Creates the new Api's from commands.xml File")
+        '''
+        Check if the configuration file is not valid,print and exit
+        '''
+        (options, args) = parser.parse_args()
+        if options.config_file is None:
+            parser.print_usage()
+            sys.exit(1)
         Plugin.options(self, parser, env)
 
     def wantClass(self, cls):
@@ -109,9 +127,17 @@ class MarvinPlugin(Plugin):
             return True
         return None
 
+    def prepareTest(self, test):
+        '''
+        @Desc : Initializes the marvin with required settings
+        '''
+        test_module_name = test.__str__()
+        if self.startMarvin(test_module_name) == FAILED:
+            print "Starting Marvin FAILED. Please Check Config and " \
+                  "Arguments Supplied"
+
     def __checkImport(self, filename):
         '''
-        @Name : __checkImport
         @Desc : Verifies to Import the test Module before running and check
                 whether if it is importable.
                 This will check for test modules which has some issues to be
@@ -119,125 +145,94 @@ class MarvinPlugin(Plugin):
                 Returns False or True based upon the result.
         '''
         try:
-            if os.path.isfile(filename):
-                ret = os.path.splitext(filename) 
-                if ret[1] == ".py":
-                   os.system("python "+ filename)
-                   return True
-            return False
+            __import__(filename)
+            return True
         except ImportError, e:
-            print "FileName :%s : Error : %s"%(filename,GetDetailExceptionInfo(e))
+            self.tcRunLogger.exception("Module : %s Import "
+                                       "Failed Reason :%s"
+                                       % (filename, GetDetailExceptionInfo(e)))
             return False
 
     def wantFile(self, filename):
         '''
         @Desc : Only python files will be used as test modules
         '''
-        return self.__checkImport(filename)
+        if filename is None or filename == '':
+            return False
+        parts = filename.split(os.path.sep)
+        base, ext = os.path.splitext(parts[-1])
+        if ext != '.py':
+            return False
+        else:
+            return self.__checkImport(filename)
 
     def loadTestsFromTestCase(self, cls):
         if cls.__name__ != 'cloudstackTestCase':
-            self.__identifier = cls.__name__
+            self.identifier = cls.__name__
             self._injectClients(cls)
 
     def beforeTest(self, test):
-        self.__testName = test.__str__().split()[0]
-        self.__testClient.identifier = '-'.join([self.__identifier, self.__testName])
-        if self.__tcRunLogger:
-            self.__tcRunLogger.name = test.__str__()
+        self.testName = test.__str__().split()[0]
+        self.testClient.identifier = '-'.join([self.identifier, self.testName])
+        self.tcRunLogger.name = test.__str__()
+
+    def prepareTestRunner(self, runner):
+        return self.testRunner
 
     def startTest(self, test):
         """
         Currently used to record start time for tests
         Dump Start Msg of TestCase to Log
         """
-        if self.__tcRunLogger:
-            self.__tcRunLogger.debug("\n\n::::::::::::STARTED : TC: " +
-                               str(self.__testName) + " :::::::::::")
-        self.__startTime = time.time()
+        self.tcRunLogger.debug("\n\n::::::::::::STARTED : TC: " +
+                               str(self.testName) + " :::::::::::")
+        self.startTime = time.time()
 
     def handleError(self, test, err):
         '''
         Adds Exception throwing test cases and information to log.
         '''
-        if self.__tcRunLogger:
-            self.__tcRunLogger.fatal("%s: %s: %s" %
-                               (EXCEPTION, self.__testName, GetDetailExceptionInfo(err)))
-        self.__testResult = EXCEPTION
+        err_msg = GetDetailExceptionInfo(err)
+        self.tcRunLogger.fatal("%s: %s: %s" %
+                               (EXCEPTION, self.testName, err_msg))
+        self.testResult = EXCEPTION
 
     def handleFailure(self, test, err):
         '''
         Adds Failing test cases and information to log.
         '''
-        if self.__tcRunLogger:
-            self.__tcRunLogger.fatal("%s: %s: %s" %
-                               (FAILED, self.__testName, GetDetailExceptionInfo(err)))
-        self.__testResult = FAILED
-
-    def __getModName(self,inp, type='file'):
-        '''
-        @Desc : Returns the module name from the path
-        @Output: trimmed down module name, used for logging
-        @Input: type:Whether the type is file or dir
-                inp:input element  
-        '''
-        if type == 'file':
-            temp = os.path.splitext(inp)[0]
-            return os.path.split(temp)[-1]
-        if type == 'dir':
-            return os.path.split(inp)[-1]
-       
-    def __runSuite(self, test_suite=None):
-        try:
-          if test_suite:
-              if self.wantFile(test_suite) == True:
-                  test_mod_name = self.__getModName(test_suite)
-                  temp_obj = MarvinInit(self.__configFile,
-                                        None,
-                                        test_mod_name,
-                                        self.__zoneForTests)
-                  if temp_obj and temp_obj.init() == SUCCESS:
-                      self.__testClient = temp_obj.getTestClient()
-                      self.__tcRunLogger = temp_obj.getLogger()
-                      self.__parsedConfig = temp_obj.getParsedConfig()
-                      self.__debugStream = temp_obj.getResultFile()
-                      self.__testRunner = nose.core.TextTestRunner(stream=self.__debugStream,
-                                                           descriptions=True,
-                                                           verbosity=2)
-                      #if self.__testRunner:
-                      #    self.__testRunner.run(test_suite)
-          return SUCCESS 
-        except Exception,e:
-          print "\n Exception Occurred when running suite :%s Error : %s" % (test_suite, GetDetailExceptionInfo(e))
-          return FAILED
-
-    def __runSuites(self, suites):
-        for suite in suites:
-            self.__runSuite(suite)
+        err_msg = GetDetailExceptionInfo(err)
+        self.tcRunLogger.fatal("%s: %s: %s" %
+                               (FAILED, self.testName, err_msg))
+        self.testResult = FAILED
 
-    def startMarvin(self):
+    def startMarvin(self, test_module_name):
         '''
-        @Name : startMarvin
-        @Desc : Initializes the Marvin
-                creates the test Client
-                creates the runlogger for logging
-                Parses the config and creates a parsedconfig
-                Creates a debugstream for tc debug log
+        Initializes the Marvin
+        creates the test Client
+        creates the runlogger for logging
+        Parses the config and creates a parsedconfig
+        Creates a debugstream for tc debug log
         '''
         try:
             obj_marvininit = MarvinInit(self.__configFile,
+                                        self.__loadNewApiFlag,
                                         self.__deployDcFlag,
-                                        self.__zoneForTests)
-            if obj_marvininit and obj_marvininit.init() == SUCCESS:
-                print "\nMarvin Initialization Successful"
-                for suites in self.conf.testNames:
-                    if os.path.isdir(suites):
-                        self.__runSuites(suites)
-                    if os.path.isfile(suites):
-                        self.__runSuite(suites)
+                                        test_module_name,
+                                        self.__zoneForoTests)
+            if obj_marvininit.init() == SUCCESS:
+                self.testClient = obj_marvininit.getTestClient()
+                self.tcRunLogger = obj_marvininit.getLogger()
+                self.parsedConfig = obj_marvininit.getParsedConfig()
+                self.debugStream = obj_marvininit.getDebugFile()
+                self.testRunner = nose.core.TextTestRunner(stream=
+                                                           self.debugStream,
+                                                           descriptions=True,
+                                                           verbosity=2,
+                                                           config=self.conf)
                 return SUCCESS
-            print "\nMarvin Initialization Failed"
-            return FAILED
+            else:
+                return FAILED
         except Exception, e:
             print "Exception Occurred under startMarvin: %s" % \
                   GetDetailExceptionInfo(e)
@@ -248,29 +243,28 @@ class MarvinPlugin(Plugin):
         Currently used to record end time for tests
         """
         endTime = time.time()
-        if self.__startTime:
-            totTime = int(endTime - self.__startTime)
-            if self.__tcRunLogger:
-                self.__tcRunLogger.debug("TestCaseName: %s; Time Taken: "
+        if self.startTime is not None:
+            totTime = int(endTime - self.startTime)
+            self.tcRunLogger.debug("TestCaseName: %s; Time Taken: "
                                    "%s Seconds; "
                                    "StartTime: %s; EndTime: %s; Result: %s"
-                                   % (self.__testName, str(totTime),
-                                      str(time.ctime(self.__startTime)),
+                                   % (self.testName, str(totTime),
+                                      str(time.ctime(self.startTime)),
                                       str(time.ctime(endTime)),
-                                      self.__testResult))
+                                      self.testResult))
 
     def _injectClients(self, test):
-        setattr(test, "debug", self.__tcRunLogger.debug)
-        setattr(test, "info", self.__tcRunLogger.info)
-        setattr(test, "warn", self.__tcRunLogger.warning)
-        setattr(test, "error", self.__tcRunLogger.error)
-        setattr(test, "testClient", self.__testClient)
-        setattr(test, "config", self.__parsedConfig)
-        if self.__testClient.identifier is None:
-            self.__testClient.identifier = self.__identifier
-        setattr(test, "clstestclient", self.__testClient)
+        setattr(test, "debug", self.tcRunLogger.debug)
+        setattr(test, "info", self.tcRunLogger.info)
+        setattr(test, "warn", self.tcRunLogger.warning)
+        setattr(test, "error", self.tcRunLogger.error)
+        setattr(test, "testClient", self.testClient)
+        setattr(test, "config", self.parsedConfig)
+        if self.testClient.identifier is None:
+            self.testClient.identifier = self.identifier
+        setattr(test, "clstestclient", self.testClient)
         if hasattr(test, "user"):
             # when the class-level attr applied. all test runs as 'user'
-            self.__testClient.getUserApiClient(test.UserName,
+            self.testClient.getUserApiClient(test.UserName,
                                              test.DomainName,
                                              test.AcctType)

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/995e3f5b/tools/marvin/marvin/sshClient.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/sshClient.py b/tools/marvin/marvin/sshClient.py
index c24477c..9b5bca2 100644
--- a/tools/marvin/marvin/sshClient.py
+++ b/tools/marvin/marvin/sshClient.py
@@ -25,7 +25,7 @@ from paramiko import (BadHostKeyException,
                       SFTPClient)
 import socket
 import time
-from marvin.cloudstackException import (
+from cloudstackException import (
     internalError,
     GetDetailExceptionInfo
     )