2020"""
2121
2222import marvin
23+ from utils import is_server_ssh_ready , random_gen
2324from marvin .cloudstackAPI import *
2425from marvin .codes import (FAILED , FAIL , PASS , RUNNING , STOPPED ,
2526 STARTING , DESTROYED , EXPUNGING ,
@@ -613,6 +614,12 @@ def delete(self, apiclient):
613614 cmd .id = self .id
614615 apiclient .destroyVirtualMachine (cmd )
615616
617+ def expung (self , apiclient ):
618+ """Expung an Instance"""
619+ cmd = expungeVirtualMachine .expungeVirtualMachineCmd ()
620+ cmd .id = self .id
621+ apiclient .expungeVirtualMachine (cmd )
622+
616623 def migrate (self , apiclient , hostid = None ):
617624 """migrate an Instance"""
618625 cmd = migrateVirtualMachine .migrateVirtualMachineCmd ()
@@ -1498,6 +1505,18 @@ def create(cls, apiclient, services, ipaddressid=None,
14981505 cmd .vpcid = vpcid
14991506 return StaticNATRule (apiclient .createFirewallRule (cmd ).__dict__ )
15001507
1508+ @classmethod
1509+ def createIpForwardingRule (cls , apiclient , startport , endport , protocol , ipaddressid , openfirewall ):
1510+ """Creates static ip forwarding rule"""
1511+
1512+ cmd = createIpForwardingRule .createIpForwardingRuleCmd ()
1513+ cmd .startport = startport
1514+ cmd .endport = endport
1515+ cmd .protocol = protocol
1516+ cmd .openfirewall = openfirewall
1517+ cmd .ipaddressid = ipaddressid
1518+ return StaticNATRule (apiclient .createIpForwardingRule (cmd ).__dict__ )
1519+
15011520 def delete (self , apiclient ):
15021521 """Delete IP forwarding rule"""
15031522 cmd = deleteIpForwardingRule .deleteIpForwardingRuleCmd ()
@@ -1629,6 +1648,162 @@ def list(cls, apiclient, **kwargs):
16291648 cmd .listall = True
16301649 return (apiclient .listFirewallRules (cmd ))
16311650
1651+ class Autoscale :
1652+
1653+ """Manage Auto scale"""
1654+
1655+ def __init__ (self , items ):
1656+ self .__dict__ .update (items )
1657+
1658+ @classmethod
1659+ def listCounters (cls , apiclient , ** kwargs ):
1660+ """Lists all available Counters."""
1661+
1662+ cmd = listCounters .listCountersCmd ()
1663+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1664+ return (apiclient .listCounters (cmd ))
1665+
1666+ @classmethod
1667+ def createCondition (cls , apiclient , counterid , relationaloperator , threshold ):
1668+ """creates condition."""
1669+
1670+ cmd = createCondition .createConditionCmd ()
1671+ cmd .counterid = counterid
1672+ cmd .relationaloperator = relationaloperator
1673+ cmd .threshold = threshold
1674+ return (apiclient .createCondition (cmd ))
1675+
1676+ @classmethod
1677+ def listConditions (cls , apiclient , ** kwargs ):
1678+ """Lists all available Conditions."""
1679+
1680+ cmd = listConditions .listConditionsCmd ()
1681+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1682+ return (apiclient .listConditions (cmd ))
1683+
1684+ @classmethod
1685+ def listAutoscalePolicies (cls , apiclient , ** kwargs ):
1686+ """Lists all available Autoscale Policies."""
1687+
1688+ cmd = listAutoScalePolicies .listAutoScalePoliciesCmd ()
1689+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1690+ return (apiclient .listAutoScalePolicies (cmd ))
1691+
1692+ @classmethod
1693+ def createAutoscalePolicy (cls , apiclient , action , conditionids , duration , quiettime = None ):
1694+ """creates condition."""
1695+
1696+ cmd = createAutoScalePolicy .createAutoScalePolicyCmd ()
1697+ cmd .action = action
1698+ cmd .conditionids = conditionids
1699+ cmd .duration = duration
1700+ if quiettime :
1701+ cmd .quiettime = quiettime
1702+
1703+ return (apiclient .createAutoScalePolicy (cmd ))
1704+
1705+ @classmethod
1706+ def updateAutoscalePolicy (cls , apiclient , id , ** kwargs ):
1707+ """Updates Autoscale Policy."""
1708+
1709+ cmd = updateAutoScalePolicy .updateAutoScalePolicyCmd ()
1710+ cmd .id = id
1711+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1712+ return (apiclient .updateAutoScalePolicy (cmd ))
1713+
1714+ @classmethod
1715+ def listAutoscaleVmPofiles (cls , apiclient , ** kwargs ):
1716+ """Lists all available AutoscaleVM Profiles."""
1717+
1718+ cmd = listAutoScaleVmProfiles .listAutoScaleVmProfilesCmd ()
1719+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1720+ return (apiclient .listAutoScaleVmProfiles (cmd ))
1721+
1722+ @classmethod
1723+ def createAutoscaleVmProfile (cls , apiclient , serviceofferingid , zoneid , templateid ,
1724+ autoscaleuserid = None , destroyvmgraceperiod = None , counterparam = None ):
1725+ """creates Autoscale VM Profile."""
1726+
1727+ cmd = createAutoScaleVmProfile .createAutoScaleVmProfileCmd ()
1728+ cmd .serviceofferingid = serviceofferingid
1729+ cmd .zoneid = zoneid
1730+ cmd .templateid = templateid
1731+ if autoscaleuserid :
1732+ cmd .autoscaleuserid = autoscaleuserid
1733+
1734+ if destroyvmgraceperiod :
1735+ cmd .destroyvmgraceperiod = destroyvmgraceperiod
1736+
1737+ if counterparam :
1738+ for name , value in counterparam .items ():
1739+ cmd .counterparam .append ({
1740+ 'name' : name ,
1741+ 'value' : value
1742+ })
1743+
1744+ return (apiclient .createAutoScaleVmProfile (cmd ))
1745+
1746+ @classmethod
1747+ def updateAutoscaleVMProfile (cls , apiclient , id , ** kwargs ):
1748+ """Updates Autoscale Policy."""
1749+
1750+ cmd = updateAutoScaleVmProfile .updateAutoScaleVmProfileCmd ()
1751+ cmd .id = id
1752+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1753+ return (apiclient .updateAutoScaleVmProfile (cmd ))
1754+
1755+ @classmethod
1756+ def createAutoscaleVmGroup (cls , apiclient , lbruleid , minmembers , maxmembers ,
1757+ scaledownpolicyids , scaleuppolicyids , vmprofileid , interval = None ):
1758+ """creates Autoscale VM Group."""
1759+
1760+ cmd = createAutoScaleVmGroup .createAutoScaleVmGroupCmd ()
1761+ cmd .lbruleid = lbruleid
1762+ cmd .minmembers = minmembers
1763+ cmd .maxmembers = maxmembers
1764+ cmd .scaledownpolicyids = scaledownpolicyids
1765+ cmd .scaleuppolicyids = scaleuppolicyids
1766+ cmd .vmprofileid = vmprofileid
1767+ if interval :
1768+ cmd .interval = interval
1769+
1770+ return (apiclient .createAutoScaleVmGroup (cmd ))
1771+
1772+ @classmethod
1773+ def listAutoscaleVmGroup (cls , apiclient , ** kwargs ):
1774+ """Lists all available AutoscaleVM Group."""
1775+
1776+ cmd = listAutoScaleVmGroups .listAutoScaleVmGroupsCmd ()
1777+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1778+ return (apiclient .listAutoScaleVmGroups (cmd ))
1779+
1780+ @classmethod
1781+ def enableAutoscaleVmGroup (cls , apiclient , id , ** kwargs ):
1782+ """Enables AutoscaleVM Group."""
1783+
1784+ cmd = enableAutoScaleVmGroup .enableAutoScaleVmGroupCmd ()
1785+ cmd .id = id
1786+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1787+ return (apiclient .enableAutoScaleVmGroup (cmd ))
1788+
1789+ @classmethod
1790+ def disableAutoscaleVmGroup (cls , apiclient , id , ** kwargs ):
1791+ """Disables AutoscaleVM Group."""
1792+
1793+ cmd = disableAutoScaleVmGroup .disableAutoScaleVmGroupCmd ()
1794+ cmd .id = id
1795+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1796+ return (apiclient .disableAutoScaleVmGroup (cmd ))
1797+
1798+ @classmethod
1799+ def updateAutoscaleVMGroup (cls , apiclient , id , ** kwargs ):
1800+ """Updates Autoscale VM Group."""
1801+
1802+ cmd = updateAutoScaleVmGroup .updateAutoScaleVmGroupCmd ()
1803+ cmd .id = id
1804+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
1805+ return (apiclient .updateAutoScaleVmGroup (cmd ))
1806+
16321807
16331808class ServiceOffering :
16341809
@@ -2003,6 +2178,18 @@ def list(cls, apiclient, **kwargs):
20032178 cmd .listall = True
20042179 return (apiclient .listLoadBalancerRules (cmd ))
20052180
2181+ @classmethod
2182+ def listLoadBalancerRuleInstances (cls , apiclient , id , applied = None , ** kwargs ):
2183+ """Lists load balancing rule Instances"""
2184+
2185+ cmd = listLoadBalancerRuleInstances .listLoadBalancerRuleInstancesCmd ()
2186+ cmd .id = id
2187+ if applied :
2188+ cmd .applied = applied
2189+
2190+ [setattr (cmd , k , v ) for k , v in kwargs .items ()]
2191+ return apiclient .listLoadBalancerRuleInstances (cmd )
2192+
20062193
20072194class Cluster :
20082195
@@ -2498,7 +2685,7 @@ def __init__(self, items):
24982685
24992686 @classmethod
25002687 def create (cls , apiclient , publicipid , account = None , domainid = None ,
2501- projectid = None , networkid = None , vpcid = None ):
2688+ projectid = None , networkid = None , vpcid = None , openfirewall = None ):
25022689 """Create VPN for Public IP address"""
25032690 cmd = createRemoteAccessVpn .createRemoteAccessVpnCmd ()
25042691 cmd .publicipid = publicipid
@@ -2512,6 +2699,8 @@ def create(cls, apiclient, publicipid, account=None, domainid=None,
25122699 cmd .networkid = networkid
25132700 if vpcid :
25142701 cmd .vpcid = vpcid
2702+ if openfirewall :
2703+ cmd .openfirewall = openfirewall
25152704 return Vpn (apiclient .createRemoteAccessVpn (cmd ).__dict__ )
25162705
25172706 def delete (self , apiclient ):
0 commit comments