You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/08/10 19:50:04 UTC
[32/36] git commit: support for traffic type and external devices
configuration
support for traffic type and external devices configuration
* traffictypes = 'Guest', 'Management', 'Public', 'Storage'
- corresponding nic labels are given in the labeldict
* External device providers JuniperSrx, NetScaler and F5 load balancing
can now be configured
* examples are shown in the configGenerator.py script for basic,
advanced and EIP/ELB based zones
Conflicts:
tools/marvin/marvin/configGenerator.py
tools/marvin/marvin/deployDataCenter.py
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/614131a9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/614131a9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/614131a9
Branch: refs/heads/vpc
Commit: 614131a9def4aa4da9085aab3907ffc169f0311f
Parents: c91463f
Author: Prasanna Santhanam <Pr...@citrix.com>
Authored: Thu Aug 9 14:12:45 2012 +0530
Committer: Prasanna Santhanam <Pr...@citrix.com>
Committed: Thu Aug 9 15:31:28 2012 +0530
----------------------------------------------------------------------
tools/marvin/marvin/configGenerator.py | 276 ++++++++++++++++++++++++--
tools/marvin/marvin/deployDataCenter.py | 184 +++++++++--------
2 files changed, 357 insertions(+), 103 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/614131a9/tools/marvin/marvin/configGenerator.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/configGenerator.py b/tools/marvin/marvin/configGenerator.py
index ad323ca..ba4b00b 100644
--- a/tools/marvin/marvin/configGenerator.py
+++ b/tools/marvin/marvin/configGenerator.py
@@ -68,21 +68,22 @@ class zone():
self.vlan = None
'''default public network, in advanced mode'''
self.ipranges = []
- self.networks = []
+ self.physical_networks = []
self.pods = []
self.secondaryStorages = []
- '''enable default virtual router provider'''
- vrouter = provider()
- vrouter.name = 'VirtualRouter'
- self.providers = [vrouter]
-class provider():
- def __init__(self):
- self.name = None
- self.state = None
- self.broadcastdomainrange = 'ZONE'
- self.zoneid = None
- self.servicelist = []
+class traffictype():
+ def __init__(self, typ, labeldict=None):
+ self.typ = typ #Guest/Management/Public
+ if labeldict:
+ self.xen = labeldict['xen'] if 'xen' in labeldict.keys() else None
+ self.kvm = labeldict['kvm'] if 'kvm' in labeldict.keys() else None
+ self.vmware = labeldict['vmware'] if 'vmware' in labeldict.keys() else None
+ #{
+ # 'xen' : 'cloud-xen',
+ # 'kvm' : 'cloud-kvm',
+ # 'vmware' : 'cloud-vmware'
+ #}
class pod():
def __init__(self):
@@ -124,7 +125,28 @@ class host():
self.hostmac = None
self.hosttags = None
self.memory = None
-
+
+class physical_network():
+ def __init__(self):
+ self.name = None
+ self.tags = []
+ self.traffictypes = []
+ self.broadcastdomainrange = 'Zone'
+ self.vlan = None
+ '''enable default virtual router provider'''
+ vrouter = provider()
+ vrouter.name = 'VirtualRouter'
+ self.providers = [vrouter]
+
+class provider():
+ def __init__(self, name=None):
+ self.name = name
+ self.state = None
+ self.broadcastdomainrange = 'ZONE'
+ self.zoneid = None
+ self.servicelist = []
+ self.devices = []
+
class network():
def __init__(self):
self.displaytext = None
@@ -156,6 +178,77 @@ class primaryStorage():
class secondaryStorage():
def __init__(self):
self.url = None
+
+class netscaler():
+ def __init__(self, hostname=None, username='nsroot', password='nsroot'):
+ self.hostname = hostname
+ self.username = username
+ self.password = password
+ self.networkdevicetype = 'NetscalerVPXLoadBalancer'
+ self.publicinterface = '1/1'
+ self.privateinterface = '1/1'
+ self.numretries = '2'
+ self.lbdevicecapacity = '50'
+ self.lbdevicededicated = 'false'
+
+ def getUrl(self):
+ return repr(self)
+
+ def __repr__(self):
+ req = zip(self.__dict__.keys(), self.__dict__.values())
+ return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) \
+ for r in req])
+
+class srx():
+ def __init__(self, hostname=None, username='root', password='admin'):
+ self.hostname = hostname
+ self.username = username
+ self.password = password
+ self.networkdevicetype = 'JuniperSRXFirewall'
+ self.publicinterface = '1/1'
+ self.privateinterface = '1/1'
+ self.numretries = '2'
+ self.fwdevicededicated = 'false'
+ self.timeout = '300'
+ self.publicnetwork = 'untrusted'
+ self.privatenetwork = 'trusted'
+
+ def getUrl(self):
+ return repr(self)
+
+ def __repr__(self):
+ req = zip(self.__dict__.keys(), self.__dict__.values())
+ return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) \
+ for r in req])
+
+class bigip():
+ def __init__(self, hostname=None, username='root', password='default'):
+ self.hostname = hostname
+ self.username = username
+ self.password = password
+ self.networkdevicetype = 'F5BigIpLoadBalancer'
+ self.publicinterface = '1/1'
+ self.privateinterface = '1/1'
+ self.numretries = '2'
+ self.lbdevicededicated = 'false'
+ self.lbdevicecapacity = '50'
+
+ def getUrl(self):
+ return repr(self)
+
+ def __repr__(self):
+ req = zip(self.__dict__.keys(), self.__dict__.values())
+ return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) \
+ for r in req])
+
+def getDeviceUrl(obj):
+ req = zip(obj.__dict__.keys(), obj.__dict__.values())
+ if obj.hostname:
+ return "http://" + obj.hostname+"?" + "&".join(["=".join([r[0], r[1]]) \
+ for r in req])
+ else:
+ return None
+
'''sample code to generate setup configuration file'''
def describe_setup_in_basic_mode():
@@ -171,6 +264,18 @@ def describe_setup_in_basic_mode():
z.networktype = 'Basic'
z.securitygroupenabled = 'True'
+ #If security groups are reqd
+ sgprovider = provider()
+ sgprovider.broadcastdomainrange = 'Pod'
+ sgprovider.name = 'SecurityGroupProvider'
+
+ pn = physical_network()
+ pn.name = "test-network"
+ pn.traffictypes = [traffictype("Guest"), traffictype("Management")]
+ pn.providers.append(sgprovider)
+
+ z.physical_networks.append(pn)
+
'''create 10 pods'''
for i in range(2):
p = pod()
@@ -211,7 +316,6 @@ def describe_setup_in_basic_mode():
'''add 2 primary storages'''
for m in range(2):
primary = primaryStorage()
- size=1*1024*1024*1024*1024
primary.name = "primary"+str(l) + str(i) + str(j) + str(m)
#primary.url = "nfs://localhost/path%s/size=%d"%(str(l) + str(i) + str(j) + str(m), size)
primary.url = "nfs://localhost/path%s"%(str(l) + str(i) + str(j) + str(m))
@@ -265,6 +369,129 @@ def describe_setup_in_basic_mode():
return zs
+def describe_setup_in_eip_mode():
+ """
+ Setting up an EIP/ELB enabled zone with netscaler provider
+ """
+ zs = cloudstackConfiguration()
+
+ for l in range(1):
+ z = zone()
+ z.dns1 = "8.8.8.8"
+ z.dns2 = "4.4.4.4"
+ z.internaldns1 = "192.168.110.254"
+ z.internaldns2 = "192.168.110.253"
+ z.name = "test"+str(l)
+ z.networktype = 'Basic'
+
+ #If security groups are reqd
+ sgprovider = provider()
+ sgprovider.broadcastdomainrange = 'Pod'
+ sgprovider.name = 'SecurityGroupProvider'
+
+ nsprovider = provider()
+ nsprovider.name = 'Netscaler'
+ ns = netscaler()
+ ns.hostname = '10.147.40.100'
+ nsprovider.devices.append(ns)
+
+ pn = physical_network()
+ pn.name = "test-network"
+ pn.traffictypes = [traffictype("Guest", {"xen": "cloud-guest"}), traffictype("Management"), traffictype("Public", { "xen": "cloud-public"})]
+ pn.providers.extend([sgprovider, nsprovider])
+ z.physical_networks.append(pn)
+
+ '''create 10 pods'''
+ for i in range(2):
+ p = pod()
+ p.name = "test" +str(l) + str(i)
+ p.gateway = "192.168.%d.1"%i
+ p.netmask = "255.255.255.0"
+ p.startip = "192.168.%d.150"%i
+ p.endip = "192.168.%d.220"%i
+
+ '''add two pod guest ip ranges'''
+ for j in range(2):
+ ip = iprange()
+ ip.gateway = p.gateway
+ ip.netmask = p.netmask
+ ip.startip = "192.168.%d.%d"%(i,j*20)
+ ip.endip = "192.168.%d.%d"%(i,j*20+10)
+
+ p.guestIpRanges.append(ip)
+
+ '''add 10 clusters'''
+ for j in range(2):
+ c = cluster()
+ c.clustername = "test"+str(l)+str(i) + str(j)
+ c.clustertype = "CloudManaged"
+ c.hypervisor = "Simulator"
+
+ '''add 10 hosts'''
+ for k in range(2):
+ h = host()
+ h.username = "root"
+ h.password = "password"
+ #h.url = "http://Sim/%d%d%d%d/cpucore=1&cpuspeed=8000&memory=%d&localstorage=%d"%(l,i,j,k,memory,localstorage)
+ h.url = "http://Sim/%d%d%d%d"%(l,i,j,k)
+ c.hosts.append(h)
+
+ '''add 2 primary storages'''
+ for m in range(2):
+ primary = primaryStorage()
+ primary.name = "primary"+str(l) + str(i) + str(j) + str(m)
+ #primary.url = "nfs://localhost/path%s/size=%d"%(str(l) + str(i) + str(j) + str(m), size)
+ primary.url = "nfs://localhost/path%s"%(str(l) + str(i) + str(j) + str(m))
+ c.primaryStorages.append(primary)
+
+ p.clusters.append(c)
+
+ z.pods.append(p)
+
+ '''add two secondary'''
+ for i in range(5):
+ secondary = secondaryStorage()
+ secondary.url = "nfs://localhost/path"+str(l) + str(i)
+ z.secondaryStorages.append(secondary)
+
+ zs.zones.append(z)
+
+ '''Add one mgt server'''
+ mgt = managementServer()
+ mgt.mgtSvrIp = "localhost"
+ zs.mgtSvr.append(mgt)
+
+ '''Add a database'''
+ db = dbServer()
+ db.dbSvr = "localhost"
+
+ zs.dbSvr = db
+
+ '''add global configuration'''
+ global_settings = {'expunge.delay': '60',
+ 'expunge.interval': '60',
+ 'expunge.workers': '3',
+ }
+ for k,v in global_settings.iteritems():
+ cfg = configuration()
+ cfg.name = k
+ cfg.value = v
+ zs.globalConfig.append(cfg)
+
+ ''''add loggers'''
+ testClientLogger = logger()
+ testClientLogger.name = "TestClient"
+ testClientLogger.file = "/tmp/testclient.log"
+
+ testCaseLogger = logger()
+ testCaseLogger.name = "TestCase"
+ testCaseLogger.file = "/tmp/testcase.log"
+
+ zs.logger.append(testClientLogger)
+ zs.logger.append(testCaseLogger)
+
+ return zs
+
'''sample code to generate setup configuration file'''
def describe_setup_in_advanced_mode():
zs = cloudstackConfiguration()
@@ -279,6 +506,24 @@ def describe_setup_in_advanced_mode():
z.networktype = 'Advanced'
z.guestcidraddress = "10.1.1.0/24"
z.vlan = "100-2000"
+
+ pn = physical_network()
+ pn.name = "test-network"
+ pn.traffictypes = [traffictype("Guest"), traffictype("Management"), traffictype("Public")]
+
+ vpcprovider = provider('VpcVirtualRouter')
+
+ nsprovider = provider('Netscaler')
+ nsprovider.devices.append(netscaler(hostname='10.147.40.100'))
+
+ srxprovider = provider('JuniperSRX')
+ srxprovider.devices.append(srx(hostname='10.147.40.3'))
+
+ f5provider = provider('F5BigIp')
+ f5provider.devices.append(bigip(hostname='10.147.40.3'))
+
+ pn.providers.extend([vpcprovider, nsprovider, srxprovider, f5provider])
+ z.physical_networks.append(pn)
'''create 10 pods'''
for i in range(2):
@@ -310,7 +555,6 @@ def describe_setup_in_advanced_mode():
'''add 2 primary storages'''
for m in range(2):
primary = primaryStorage()
- size=1*1024*1024*1024*1024
primary.name = "primary"+str(l) + str(i) + str(j) + str(m)
#primary.url = "nfs://localhost/path%s/size=%d"%(str(l) + str(i) + str(j) + str(m), size)
primary.url = "nfs://localhost/path%s"%(str(l) + str(i) + str(j) + str(m))
@@ -406,3 +650,5 @@ if __name__ == "__main__":
config = describe_setup_in_basic_mode()
generate_setup_config(config, options.output)
+
+
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/614131a9/tools/marvin/marvin/deployDataCenter.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/deployDataCenter.py b/tools/marvin/marvin/deployDataCenter.py
index 4284d12..68e2350 100644
--- a/tools/marvin/marvin/deployDataCenter.py
+++ b/tools/marvin/marvin/deployDataCenter.py
@@ -88,7 +88,7 @@ class deployDataCenters():
primarycmd.clusterid = clusterId
self.apiClient.createStoragePool(primarycmd)
- def createpods(self, pods, zone, zoneId, networkId=None):
+ def createpods(self, pods, zoneId, networkId=None):
if pods is None:
return
for pod in pods:
@@ -140,7 +140,7 @@ class deployDataCenters():
secondarycmd.zoneid = zoneId
self.apiClient.addSecondaryStorage(secondarycmd)
- def createnetworks(self, networks, zoneId, mode):
+ def createnetworks(self, networks, zoneId):
if networks is None:
return
for network in networks:
@@ -162,13 +162,13 @@ class deployDataCenters():
networkId = networkcmdresponse.id
return networkId
- def createPhysicalNetwork(self, name, zoneid, vlan=None):
+ def createPhysicalNetwork(self, net, zoneid):
phynet = createPhysicalNetwork.createPhysicalNetworkCmd()
phynet.zoneid = zoneid
- phynet.name = name
- if vlan:
- phynet.vlan = vlan
- return self.apiClient.createPhysicalNetwork(phynet)
+ phynet.name = net.name
+ phynetwrk = self.apiClient.createPhysicalNetwork(phynet)
+ self.addTrafficTypes(phynetwrk.id, net.traffictypes)
+ return phynetwrk
def updatePhysicalNetwork(self, networkid, state="Enabled", vlan=None):
upnet = updatePhysicalNetwork.updatePhysicalNetworkCmd()
@@ -177,75 +177,86 @@ class deployDataCenters():
if vlan:
upnet.vlan = vlan
return self.apiClient.updatePhysicalNetwork(upnet)
-
- def configureProviders(self, phynetwrk, zone):
- pnetprov = listNetworkServiceProviders.listNetworkServiceProvidersCmd()
- pnetprov.physicalnetworkid = phynetwrk.id
- pnetprov.state = "Disabled"
- pnetprov.name = "VirtualRouter"
- pnetprovres = self.apiClient.listNetworkServiceProviders(pnetprov)
-
- vrprov = listVirtualRouterElements.listVirtualRouterElementsCmd()
- vrprov.nspid = pnetprovres[0].id
- vrprovresponse = self.apiClient.listVirtualRouterElements(vrprov)
- vrprovid = vrprovresponse[0].id
-
- vrconfig = \
- configureVirtualRouterElement.configureVirtualRouterElementCmd()
- vrconfig.enabled = "true"
- vrconfig.id = vrprovid
- vrconfigresponse = \
- self.apiClient.configureVirtualRouterElement(vrconfig)
-
+
+ def enableProvider(self, provider_id):
upnetprov = \
updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
- upnetprov.id = vrprov.nspid
+ upnetprov.id = provider_id
upnetprov.state = "Enabled"
- upnetprovresponse = \
self.apiClient.updateNetworkServiceProvider(upnetprov)
- if zone.networktype == "Basic" and zone.securitygroupenabled:
- sgprovider = configGenerator.provider()
- sgprovider.name = "SecurityGroupProvider"
- zone.providers.append(sgprovider)
-
- if zone.networktype == "Advanced":
+ def configureProviders(self, phynetwrk, providers):
+ """
+ We will enable the virtualrouter elements for all zones. Other providers
+ like NetScalers, SRX, etc are explicitly added/configured
+ """
+
+ for provider in providers:
pnetprov = listNetworkServiceProviders.listNetworkServiceProvidersCmd()
pnetprov.physicalnetworkid = phynetwrk.id
pnetprov.state = "Disabled"
- pnetprov.name = "VpcVirtualRouter"
+ pnetprov.name = provider.name
pnetprovres = self.apiClient.listNetworkServiceProviders(pnetprov)
-
- if pnetprovres and len(pnetprovres) > 0:
- vpcvrprov = listVirtualRouterElements.listVirtualRouterElementsCmd()
- vpcvrprov.nspid = pnetprovres[0].id
- vpcvrprovresponse = self.apiClient.listVirtualRouterElements(vpcvrprov)
- vpcvrprovid = vpcvrprovresponse[0].id
+
+ if pnetprovres and len(pnetprovres) > 0:
+ if provider.name == 'VirtualRouter'\
+ or provider.name == 'VpcVirtualRouter':
+ vrprov = listVirtualRouterElements.listVirtualRouterElementsCmd()
+ vrprov.nspid = pnetprovres[0].id
+ vrprovresponse = self.apiClient.listVirtualRouterElements(vrprov)
+ vrprovid = vrprovresponse[0].id
- vpcvrconfig = \
- configureVirtualRouterElement.configureVirtualRouterElementCmd()
- vpcvrconfig.enabled = "true"
- vpcvrconfig.id = vpcvrprovid
- vpcvrconfigresponse = \
- self.apiClient.configureVirtualRouterElement(vpcvrconfig)
-
- upnetprov = \
- updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
- upnetprov.id = vpcvrprov.nspid
- upnetprov.state = "Enabled"
- upnetprovresponse = \
- self.apiClient.updateNetworkServiceProvider(upnetprov)
-
- def addTrafficTypes(self, physical_network_id, traffictypes=None, \
- network_labels=None):
- [self.addTrafficType(physical_network_id, traffictype) for \
- traffictype in traffictypes]
-
- def addTrafficType(self, physical_network_id, traffictype, \
- network_label=None):
+ vrconfig = \
+ configureVirtualRouterElement.configureVirtualRouterElementCmd()
+ vrconfig.enabled = "true"
+ vrconfig.id = vrprovid
+ self.apiClient.configureVirtualRouterElement(vrconfig)
+ self.enableProvider(pnetprovres[0].id)
+ elif provider.name in ['Netscaler', 'JuniperSRX', 'F5BigIp']:
+ netprov = addNetworkServiceProvider.addNetworkServiceProviderCmd()
+ netprov.name = provider.name
+ netprov.physicalnetworkid = phynetwrk.id
+ result = self.apiClient.addNetworkServiceProvider(netprov)
+ for device in provider.devices:
+ if provider.name == 'Netscaler':
+ dev = addNetscalerLoadBalancer.addNetscalerLoadBalancerCmd()
+ dev.username = device.username
+ dev.password = device.password
+ dev.networkdevicetype = device.networkdevicetype
+ dev.url = configGenerator.getDeviceUrl(device)
+ dev.physicalnetworkid = phynetwrk.id
+ self.apiClient.addNetscalerLoadBalancer(dev)
+ elif provider.name == 'JuniperSRX':
+ dev = addSrxFirewall.addSrxFirewallCmd()
+ dev.username = device.username
+ dev.password = device.password
+ dev.networkdevicetype = device.networkdevicetype
+ dev.url = configGenerator.getDeviceUrl(device)
+ dev.physicalnetworkid = phynetwrk.id
+ self.apiClient.addSrxFirewall(dev)
+ elif provider.name == 'F5BigIp':
+ dev = addF5LoadBalancer.addF5LoadBalancerCmd()
+ dev.username = device.username
+ dev.password = device.password
+ dev.networkdevicetype = device.networkdevicetype
+ dev.url = configGenerator.getDeviceUrl(device)
+ dev.physicalnetworkid = phynetwrk.id
+ self.apiClient.addF5LoadBalancer(dev)
+ else:
+ print "Device %s doesn't match any know provider type"%device
+ self.enableProvider(result.id)
+
+ def addTrafficTypes(self, physical_network_id, traffictypes):
+ [self.addTrafficType(physical_network_id, traffic_type) for traffic_type in traffictypes]
+
+ def addTrafficType(self, physical_network_id, traffictype):
traffic_type = addTrafficType.addTrafficTypeCmd()
traffic_type.physicalnetworkid = physical_network_id
- traffic_type.traffictype = traffictype
+ traffic_type.traffictype = traffictype.typ
+ if traffictype.labeldict:
+ traffic_type.kvmnetworklabel = traffictype.labeldict.xen
+ traffic_type.xennetworklabel = traffictype.labeldict.kvm
+ traffic_type.vmwarenetworklabel = traffictype.labeldict.vmware
return self.apiClient.addTrafficType(traffic_type)
def enableZone(self, zoneid, allocation_state="Enabled"):
@@ -265,31 +276,21 @@ class deployDataCenters():
createzone.securitygroupenabled = zone.securitygroupenabled
createzone.networktype = zone.networktype
createzone.guestcidraddress = zone.guestcidraddress
-
+
zoneresponse = self.apiClient.createZone(createzone)
zoneId = zoneresponse.id
- phynetwrk = self.createPhysicalNetwork(zone.name + "-pnet", \
- zoneId)
-
- self.configureProviders(phynetwrk, zone)
- self.updatePhysicalNetwork(phynetwrk.id, "Enabled", vlan=zone.vlan)
+ for pnet in zone.physical_networks:
+ phynetwrk = self.createPhysicalNetwork(pnet, zoneId)
+ self.configureProviders(phynetwrk, pnet.providers)
+ self.updatePhysicalNetwork(phynetwrk.id, "Enabled", vlan=zone.vlan)
if zone.networktype == "Basic":
- self.addTrafficTypes(phynetwrk.id, ["Guest", "Management"])
+ listnetworkoffering = listNetworkOfferings.listNetworkOfferingsCmd()
- listnetworkoffering = \
- listNetworkOfferings.listNetworkOfferingsCmd()
-
- if zone.securitygroupenabled:
- listnetworkoffering.name = \
- "DefaultSharedNetworkOfferingWithSGService"
- else:
- # need both name and display text for single result
- listnetworkoffering.name = \
- "DefaultSharedNetworkOffering"
- listnetworkoffering.displaytext = \
- "Offering for Shared networks"
+ listnetworkoffering.name = "DefaultSharedNetscalerEIPandELBNetworkOffering" \
+ if len(filter(lambda x : x.typ == 'Public', zone.physical_networks.traffictypes)) > 0 \
+ else "DefaultSharedNetworkOfferingWithSGService"
listnetworkofferingresponse = \
self.apiClient.listNetworkOfferings(listnetworkoffering)
@@ -300,19 +301,26 @@ class deployDataCenters():
guestntwrk.zoneid = zoneId
guestntwrk.networkofferingid = \
listnetworkofferingresponse[0].id
- networkid = self.createnetworks([guestntwrk], zoneId, zone.networktype)
- self.createpods(zone.pods, zone, zoneId, networkid)
+
+ networkid = self.createnetworks([guestntwrk], zoneId)
+ self.createpods(zone.pods, zoneId, networkid)
+ if self.isEipElbZone(zone):
+ self.createVlanIpRanges(zone.networktype, zone.ipranges, \
+ zoneId)
if zone.networktype == "Advanced":
- self.createpods(zone.pods, zone, zoneId)
- self.addTrafficTypes(phynetwrk.id, ["Guest", "Public", \
- "Management"])
+ self.createpods(zone.pods, zoneId)
self.createVlanIpRanges(zone.networktype, zone.ipranges, \
zoneId)
self.createSecondaryStorages(zone.secondaryStorages, zoneId)
self.enableZone(zoneId, "Enabled")
return
+
+ def isEipElbZone(self, zone):
+ if zone.networktype == "Basic" and len(filter(lambda x : x.typ == 'Public', zone.physical_networks.traffictypes)) > 0:
+ return True
+ return False
def registerApiKey(self):
listuser = listUsers.listUsersCmd()