You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ek...@apache.org on 2015/06/08 11:45:34 UTC
[13/50] [abbrv] git commit: updated refs/heads/feature/vpc-ipv6 to
6140db5
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/108a74a6/tools/marvin/marvin/lib/base.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/lib/base.py b/tools/marvin/marvin/lib/base.py
index 561d7e1..31e6def 100755
--- a/tools/marvin/marvin/lib/base.py
+++ b/tools/marvin/marvin/lib/base.py
@@ -118,7 +118,6 @@ class Account:
if "userUUID" in services:
cmd.userid = "-".join([services["userUUID"], random_gen()])
-
if domainid:
cmd.domainid = domainid
account = apiclient.createAccount(cmd)
@@ -599,7 +598,7 @@ class VirtualMachine:
if hasattr(self, "projectid"):
projectid = self.projectid
vms = VirtualMachine.list(apiclient, projectid=projectid,
- id=self.id, listAll=True)
+ id=self.id, listAll=True)
validationresult = validateList(vms)
if validationresult[0] == FAIL:
raise Exception("VM list validation failed: %s" % validationresult[2])
@@ -807,7 +806,7 @@ class Volume:
@classmethod
def create(cls, apiclient, services, zoneid=None, account=None,
- domainid=None, diskofferingid=None, projectid=None ,size=None):
+ domainid=None, diskofferingid=None, projectid=None, size=None):
"""Create Volume"""
cmd = createVolume.createVolumeCmd()
cmd.name = "-".join([services["diskname"], random_gen()])
@@ -985,6 +984,7 @@ class Volume:
[setattr(cmd, k, v) for k, v in kwargs.items()]
return(apiclient.migrateVolume(cmd))
+
class Snapshot:
"""Manage Snapshot Lifecycle
"""
@@ -1053,6 +1053,7 @@ class Snapshot:
except Exception as e:
return [FAIL, e]
+
class Template:
"""Manage template life cycle"""
@@ -1742,6 +1743,7 @@ class FireWallRule:
cmd.listall = True
return(apiclient.listFirewallRules(cmd))
+
class Autoscale:
"""Manage Auto scale"""
@@ -1957,10 +1959,10 @@ class ServiceOffering:
if domainid:
cmd.domainid = domainid
- if tags:
- cmd.tags = tags
- elif "tags" in services:
- cmd.tags = services["tags"]
+ if tags:
+ cmd.tags = tags
+ elif "tags" in services:
+ cmd.tags = services["tags"]
[setattr(cmd, k, v) for k, v in kwargs.items()]
return ServiceOffering(apiclient.createServiceOffering(cmd).__dict__)
@@ -2003,10 +2005,10 @@ class DiskOffering:
if domainid:
cmd.domainid = domainid
- if tags:
- cmd.tags = tags
- elif "tags" in services:
- cmd.tags = services["tags"]
+ if tags:
+ cmd.tags = tags
+ elif "tags" in services:
+ cmd.tags = services["tags"]
if "storagetype" in services:
cmd.storagetype = services["storagetype"]
@@ -2156,6 +2158,7 @@ class SnapshotPolicy:
cmd.listall = True
return(apiclient.listSnapshotPolicies(cmd))
+
class Hypervisor:
"""Manage Hypervisor"""
@@ -2515,11 +2518,40 @@ class Host:
@classmethod
def reconnect(cls, apiclient, **kwargs):
"""Reconnect the Host"""
-
+
cmd = reconnectHost.reconnectHostCmd()
[setattr(cmd, k, v) for k, v in kwargs.items()]
return(apiclient.reconnectHost(cmd))
+ @classmethod
+ def getState(cls, apiclient, hostid, state, resourcestate, timeout=600):
+ """List Host and check if its resource state is as expected
+ @returnValue - List[Result, Reason]
+ 1) Result - FAIL if there is any exception
+ in the operation or Host state does not change
+ to expected state in given time else PASS
+ 2) Reason - Reason for failure"""
+
+ returnValue = [FAIL, "VM state not trasited to %s,\
+ operation timed out" % state]
+
+ while timeout > 0:
+ try:
+ hosts = Host.list(apiclient,
+ id=hostid, listall=True)
+ validationresult = validateList(hosts)
+ if validationresult[0] == FAIL:
+ raise Exception("Host list validation failed: %s" % validationresult[2])
+ elif str(hosts[0].state).lower().decode("string_escape") == str(state).lower() and str(hosts[0].resourcestate).lower().decode("string_escape") == str(resourcestate).lower():
+ returnValue = [PASS, None]
+ break
+ except Exception as e:
+ returnValue = [FAIL, e]
+ break
+ time.sleep(60)
+ timeout -= 60
+ return returnValue
+
class StoragePool:
"""Manage Storage pools (Primary Storage)"""
@@ -2624,12 +2656,41 @@ class StoragePool:
return(apiclient.findStoragePoolsForMigration(cmd))
@classmethod
- def update(cls,apiclient, **kwargs):
+ def update(cls, apiclient, **kwargs):
"""Update storage pool"""
- cmd=updateStoragePool.updateStoragePoolCmd()
+ cmd = updateStoragePool.updateStoragePoolCmd()
[setattr(cmd, k, v) for k, v in kwargs.items()]
return apiclient.updateStoragePool(cmd)
+ @classmethod
+ def getState(cls, apiclient, poolid, state, timeout=600):
+ """List StoragePools and check if its state is as expected
+ @returnValue - List[Result, Reason]
+ 1) Result - FAIL if there is any exception
+ in the operation or pool state does not change
+ to expected state in given time else PASS
+ 2) Reason - Reason for failure"""
+
+ returnValue = [FAIL, "VM state not trasited to %s,\
+ operation timed out" % state]
+
+ while timeout > 0:
+ try:
+ pools = StoragePool.list(apiclient,
+ id=poolid, listAll=True)
+ validationresult = validateList(pools)
+ if validationresult[0] == FAIL:
+ raise Exception("Host list validation failed: %s" % validationresult[2])
+ elif str(pools[0].state).lower().decode("string_escape") == str(state).lower():
+ returnValue = [PASS, None]
+ break
+ except Exception as e:
+ returnValue = [FAIL, e]
+ break
+ time.sleep(60)
+ timeout -= 60
+ return returnValue
+
class Network:
"""Manage Network pools"""
@@ -4371,6 +4432,7 @@ class VmSnapshot:
"""Manage VM Snapshot life cycle"""
def __init__(self, items):
self.__dict__.update(items)
+
@classmethod
def create(cls, apiclient, vmid, snapshotmemory="false",
name=None, description=None):
@@ -4833,5 +4895,3 @@ class StorageNetworkIpRange:
cmd = listStorageNetworkIpRange.listStorageNetworkIpRangeCmd()
[setattr(cmd, k, v) for k, v in kwargs.items()]
return(apiclient.listStorageNetworkIpRange(cmd))
-
-