mirror of https://github.com/apache/cloudstack.git
pep8 deployDatacenter
This commit is contained in:
parent
4c51c60ef7
commit
a65d2153f1
|
|
@ -5,9 +5,9 @@
|
|||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
|
|
@ -24,12 +24,14 @@ from cloudstackAPI import *
|
|||
from os import path
|
||||
from optparse import OptionParser
|
||||
|
||||
|
||||
class deployDataCenters():
|
||||
|
||||
def __init__(self, cfgFile):
|
||||
if not path.exists(cfgFile) \
|
||||
and not path.exists(path.abspath(cfgFile)):
|
||||
raise IOError("config file %s not found. please specify a valid config file"%cfgFile)
|
||||
raise IOError("config file %s not found. please \
|
||||
specify a valid config file" % cfgFile)
|
||||
self.configFile = cfgFile
|
||||
|
||||
def addHosts(self, hosts, zoneId, podId, clusterId, hypervisor):
|
||||
|
|
@ -69,9 +71,9 @@ class deployDataCenters():
|
|||
clusterresponse = self.apiClient.addCluster(clustercmd)
|
||||
clusterId = clusterresponse[0].id
|
||||
|
||||
self.addHosts(cluster.hosts, zoneId, podId, clusterId,\
|
||||
self.addHosts(cluster.hosts, zoneId, podId, clusterId,
|
||||
cluster.hypervisor)
|
||||
self.createPrimaryStorages(cluster.primaryStorages, zoneId, podId,\
|
||||
self.createPrimaryStorages(cluster.primaryStorages, zoneId, podId,
|
||||
clusterId)
|
||||
|
||||
def createPrimaryStorages(self, primaryStorages, zoneId, podId, clusterId):
|
||||
|
|
@ -103,12 +105,12 @@ class deployDataCenters():
|
|||
podId = createpodResponse.id
|
||||
|
||||
if pod.guestIpRanges is not None and networkId is not None:
|
||||
self.createVlanIpRanges("Basic", pod.guestIpRanges, zoneId,\
|
||||
self.createVlanIpRanges("Basic", pod.guestIpRanges, zoneId,
|
||||
podId, networkId)
|
||||
|
||||
self.createClusters(pod.clusters, zoneId, podId)
|
||||
|
||||
def createVlanIpRanges(self, mode, ipranges, zoneId, podId=None,\
|
||||
def createVlanIpRanges(self, mode, ipranges, zoneId, podId=None,
|
||||
networkId=None, forvirtualnetwork=None):
|
||||
if ipranges is None:
|
||||
return
|
||||
|
|
@ -142,8 +144,8 @@ class deployDataCenters():
|
|||
secondarycmd.url = secondary.url
|
||||
secondarycmd.provider = secondary.provider
|
||||
secondarycmd.details = []
|
||||
|
||||
if isinstance(secondary.details, list):
|
||||
|
||||
if isinstance(secondary.details, list):
|
||||
for item in secondary.details:
|
||||
secondarycmd.details.append(item.__dict__)
|
||||
if secondarycmd.provider == "NFS":
|
||||
|
|
@ -201,63 +203,73 @@ class deployDataCenters():
|
|||
if vlan:
|
||||
upnet.vlan = vlan
|
||||
return self.apiClient.updatePhysicalNetwork(upnet)
|
||||
|
||||
|
||||
def enableProvider(self, provider_id):
|
||||
upnetprov = \
|
||||
updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
|
||||
upnetprov =\
|
||||
updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
|
||||
upnetprov.id = provider_id
|
||||
upnetprov.state = "Enabled"
|
||||
self.apiClient.updateNetworkServiceProvider(upnetprov)
|
||||
|
||||
def configureProviders(self, phynetwrk, providers):
|
||||
"""
|
||||
We will enable the virtualrouter elements for all zones. Other providers
|
||||
like NetScalers, SRX, etc are explicitly added/configured
|
||||
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 = listNetworkServiceProviders.\
|
||||
listNetworkServiceProvidersCmd()
|
||||
pnetprov.physicalnetworkid = phynetwrk.id
|
||||
pnetprov.state = "Disabled"
|
||||
pnetprov.name = provider.name
|
||||
pnetprovres = self.apiClient.listNetworkServiceProviders(pnetprov)
|
||||
|
||||
if pnetprovres and len(pnetprovres) > 0:
|
||||
if pnetprovres and len(pnetprovres) > 0:
|
||||
if provider.name == 'VirtualRouter'\
|
||||
or provider.name == 'VpcVirtualRouter':
|
||||
vrprov = listVirtualRouterElements.listVirtualRouterElementsCmd()
|
||||
vrprov = listVirtualRouterElements.\
|
||||
listVirtualRouterElementsCmd()
|
||||
vrprov.nspid = pnetprovres[0].id
|
||||
vrprovresponse = self.apiClient.listVirtualRouterElements(vrprov)
|
||||
vrprovresponse = self.apiClient.\
|
||||
listVirtualRouterElements(vrprov)
|
||||
vrprovid = vrprovresponse[0].id
|
||||
|
||||
|
||||
vrconfig = \
|
||||
configureVirtualRouterElement.configureVirtualRouterElementCmd()
|
||||
configureVirtualRouterElement.\
|
||||
configureVirtualRouterElementCmd()
|
||||
vrconfig.enabled = "true"
|
||||
vrconfig.id = vrprovid
|
||||
self.apiClient.configureVirtualRouterElement(vrconfig)
|
||||
self.enableProvider(pnetprovres[0].id)
|
||||
elif provider.name == 'InternalLbVm':
|
||||
internallbprov = listInternalLoadBalancerElements.listInternalLoadBalancerElementsCmd()
|
||||
internallbprov = listInternalLoadBalancerElements.\
|
||||
listInternalLoadBalancerElementsCmd()
|
||||
internallbprov.nspid = pnetprovres[0].id
|
||||
internallbresponse = self.apiClient.listInternalLoadBalancerElements(internallbprov)
|
||||
internallbresponse = self.apiClient.\
|
||||
listInternalLoadBalancerElements(internallbprov)
|
||||
internallbid = internallbresponse[0].id
|
||||
|
||||
internallbconfig = \
|
||||
configureInternalLoadBalancerElement.configureInternalLoadBalancerElementCmd()
|
||||
configureInternalLoadBalancerElement.\
|
||||
configureInternalLoadBalancerElementCmd()
|
||||
internallbconfig.enabled = "true"
|
||||
internallbconfig.id = internallbid
|
||||
self.apiClient.configureInternalLoadBalancerElement(internallbconfig)
|
||||
self.apiClient.\
|
||||
configureInternalLoadBalancerElement(internallbconfig)
|
||||
self.enableProvider(pnetprovres[0].id)
|
||||
elif provider.name == 'SecurityGroupProvider':
|
||||
self.enableProvider(pnetprovres[0].id)
|
||||
elif provider.name in ['Netscaler', 'JuniperSRX', 'F5BigIp']:
|
||||
netprov = addNetworkServiceProvider.addNetworkServiceProviderCmd()
|
||||
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 = addNetscalerLoadBalancer.\
|
||||
addNetscalerLoadBalancerCmd()
|
||||
dev.username = device.username
|
||||
dev.password = device.password
|
||||
dev.networkdevicetype = device.networkdevicetype
|
||||
|
|
@ -281,20 +293,27 @@ class deployDataCenters():
|
|||
dev.physicalnetworkid = phynetwrk.id
|
||||
self.apiClient.addF5LoadBalancer(dev)
|
||||
else:
|
||||
raise cloudstackException.InvalidParameterException("Device %s doesn't match any know provider type"%device)
|
||||
raise cloudstackException.\
|
||||
InvalidParameterException("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]
|
||||
[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.typ
|
||||
traffic_type.kvmnetworklabel = traffictype.kvm if traffictype.kvm is not None else None
|
||||
traffic_type.xennetworklabel = traffictype.xen if traffictype.xen is not None else None
|
||||
traffic_type.vmwarenetworklabel = traffictype.vmware if traffictype.vmware is not None else None
|
||||
traffic_type.simulatorlabel = traffictype.simulator if traffictype.simulator is not None else None
|
||||
traffic_type.kvmnetworklabel = traffictype.kvm\
|
||||
if traffictype.kvm is not None else None
|
||||
traffic_type.xennetworklabel = traffictype.xen\
|
||||
if traffictype.xen is not None else None
|
||||
traffic_type.vmwarenetworklabel = traffictype.vmware\
|
||||
if traffictype.vmware is not None else None
|
||||
traffic_type.simulatorlabel = traffictype.simulator\
|
||||
if traffictype.simulator is not None else None
|
||||
return self.apiClient.addTrafficType(traffic_type)
|
||||
|
||||
def enableZone(self, zoneid, allocation_state="Enabled"):
|
||||
|
|
@ -322,48 +341,59 @@ class deployDataCenters():
|
|||
createzone.networktype = zone.networktype
|
||||
if zone.securitygroupenabled != "true":
|
||||
createzone.guestcidraddress = zone.guestcidraddress
|
||||
|
||||
|
||||
zoneresponse = self.apiClient.createZone(createzone)
|
||||
zoneId = zoneresponse.id
|
||||
|
||||
for pnet in zone.physical_networks:
|
||||
phynetwrk = self.createPhysicalNetwork(pnet, zoneId)
|
||||
self.configureProviders(phynetwrk, pnet.providers)
|
||||
self.updatePhysicalNetwork(phynetwrk.id, "Enabled", vlan=pnet.vlan)
|
||||
self.updatePhysicalNetwork(phynetwrk.id, "Enabled",
|
||||
vlan=pnet.vlan)
|
||||
|
||||
if zone.networktype == "Basic":
|
||||
listnetworkoffering = listNetworkOfferings.listNetworkOfferingsCmd()
|
||||
listnetworkoffering.name = "DefaultSharedNetscalerEIPandELBNetworkOffering" \
|
||||
if len(filter(lambda x : x.typ == 'Public', zone.physical_networks[0].traffictypes)) > 0 \
|
||||
else "DefaultSharedNetworkOfferingWithSGService"
|
||||
if zone.networkofferingname is not None:
|
||||
listnetworkoffering.name = zone.networkofferingname
|
||||
listnetworkoffering =\
|
||||
listNetworkOfferings.listNetworkOfferingsCmd()
|
||||
listnetworkoffering.name =\
|
||||
"DefaultSharedNetscalerEIPandELBNetworkOffering" \
|
||||
if len(filter(lambda x:
|
||||
x.typ == 'Public',
|
||||
zone.physical_networks[0].
|
||||
traffictypes)) > 0 \
|
||||
else "DefaultSharedNetworkOfferingWithSGService"
|
||||
if zone.networkofferingname is not None:
|
||||
listnetworkoffering.name = zone.networkofferingname
|
||||
|
||||
listnetworkofferingresponse = \
|
||||
self.apiClient.listNetworkOfferings(listnetworkoffering)
|
||||
self.apiClient.listNetworkOfferings(listnetworkoffering)
|
||||
|
||||
guestntwrk = configGenerator.network()
|
||||
guestntwrk.displaytext = "guestNetworkForBasicZone"
|
||||
guestntwrk.name = "guestNetworkForBasicZone"
|
||||
guestntwrk.zoneid = zoneId
|
||||
guestntwrk.networkofferingid = \
|
||||
listnetworkofferingresponse[0].id
|
||||
|
||||
listnetworkofferingresponse[0].id
|
||||
|
||||
networkid = self.createnetworks([guestntwrk], zoneId)
|
||||
self.createpods(zone.pods, zoneId, networkid)
|
||||
if self.isEipElbZone(zone):
|
||||
self.createVlanIpRanges(zone.networktype, zone.ipranges, \
|
||||
zoneId, forvirtualnetwork=True)
|
||||
self.createVlanIpRanges(zone.networktype, zone.ipranges,
|
||||
zoneId, forvirtualnetwork=True)
|
||||
|
||||
if zone.networktype == "Advanced" and zone.securitygroupenabled != "true":
|
||||
isFreeZone = (zone.networktype == "Advanced"
|
||||
and zone.securitygroupenabled != "true")
|
||||
if ifFreeZone:
|
||||
self.createpods(zone.pods, zoneId)
|
||||
self.createVlanIpRanges(zone.networktype, zone.ipranges, \
|
||||
self.createVlanIpRanges(zone.networktype, zone.ipranges,
|
||||
zoneId)
|
||||
elif zone.networktype == "Advanced" and zone.securitygroupenabled == "true":
|
||||
listnetworkoffering = listNetworkOfferings.listNetworkOfferingsCmd()
|
||||
listnetworkoffering.name = "DefaultSharedNetworkOfferingWithSGService"
|
||||
if zone.networkofferingname is not None:
|
||||
listnetworkoffering.name = zone.networkofferingname
|
||||
elif (zone.networktype == "Advanced"
|
||||
and zone.securitygroupenabled == "true"):
|
||||
listnetworkoffering =\
|
||||
listNetworkOfferings.listNetworkOfferingsCmd()
|
||||
listnetworkoffering.name =\
|
||||
"DefaultSharedNetworkOfferingWithSGService"
|
||||
if zone.networkofferingname is not None:
|
||||
listnetworkoffering.name = zone.networkofferingname
|
||||
|
||||
listnetworkofferingresponse = \
|
||||
self.apiClient.listNetworkOfferings(listnetworkoffering)
|
||||
|
|
@ -371,7 +401,8 @@ class deployDataCenters():
|
|||
networkcmd = createNetwork.createNetworkCmd()
|
||||
networkcmd.displaytext = "Shared SG enabled network"
|
||||
networkcmd.name = "Shared SG enabled network"
|
||||
networkcmd.networkofferingid = listnetworkofferingresponse[0].id
|
||||
networkcmd.networkofferingid =\
|
||||
listnetworkofferingresponse[0].id
|
||||
networkcmd.zoneid = zoneId
|
||||
|
||||
ipranges = zone.ipranges
|
||||
|
|
@ -388,8 +419,8 @@ class deployDataCenters():
|
|||
self.createpods(zone.pods, zoneId, networkId)
|
||||
|
||||
self.createSecondaryStorages(zone.secondaryStorages, zoneId)
|
||||
self.createCacheStorages(zone.cacheStorages, zoneId)
|
||||
|
||||
self.createCacheStorages(zone.cacheStorages, zoneId)
|
||||
|
||||
enabled = getattr(zone, 'enabled', 'True')
|
||||
if enabled == 'True' or enabled is None:
|
||||
self.enableZone(zoneId, "Enabled")
|
||||
|
|
@ -399,9 +430,11 @@ class deployDataCenters():
|
|||
self.updateZoneDetails(zoneId, det)
|
||||
|
||||
return
|
||||
|
||||
|
||||
def isEipElbZone(self, zone):
|
||||
if zone.networktype == "Basic" and len(filter(lambda x : x.typ == 'Public', zone.physical_networks[0].traffictypes)) > 0:
|
||||
if (zone.networktype == "Basic"
|
||||
and len(filter(lambda x: x.typ == 'Public',
|
||||
zone.physical_networks[0].traffictypes)) > 0):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
@ -416,7 +449,7 @@ class deployDataCenters():
|
|||
registerUser = registerUserKeys.registerUserKeysCmd()
|
||||
registerUser.id = userId
|
||||
registerUserRes = \
|
||||
self.testClient.getApiClient().registerUserKeys(registerUser)
|
||||
self.testClient.getApiClient().registerUserKeys(registerUser)
|
||||
|
||||
apiKey = registerUserRes.apikey
|
||||
securityKey = registerUserRes.secretkey
|
||||
|
|
@ -435,8 +468,8 @@ class deployDataCenters():
|
|||
try:
|
||||
self.config = configGenerator.get_setup_config(self.configFile)
|
||||
except:
|
||||
raise cloudstackException.InvalidParameterException( \
|
||||
"Failed to load config %s"%self.configFile)
|
||||
raise cloudstackException.InvalidParameterException(
|
||||
"Failed to load config %s" % self.configFile)
|
||||
|
||||
mgt = self.config.mgtSvr[0]
|
||||
|
||||
|
|
@ -457,37 +490,38 @@ class deployDataCenters():
|
|||
if testClientLogFile is not None:
|
||||
testClientLogger = logging.getLogger("testclient.testengine.run")
|
||||
fh = logging.FileHandler(testClientLogFile)
|
||||
fh.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s"))
|
||||
fh.setFormatter(logging.
|
||||
Formatter("%(asctime)s - %(levelname)s - %(name)s\
|
||||
- %(message)s"))
|
||||
testClientLogger.addHandler(fh)
|
||||
testClientLogger.setLevel(logging.INFO)
|
||||
self.testClientLogger = testClientLogger
|
||||
|
||||
self.testClient = \
|
||||
cloudstackTestClient.cloudstackTestClient(mgt.mgtSvrIp, mgt.port, \
|
||||
mgt.user, mgt.passwd, \
|
||||
mgt.apiKey, \
|
||||
mgt.securityKey, \
|
||||
logging=self.testClientLogger)
|
||||
cloudstackTestClient.\
|
||||
cloudstackTestClient(mgt.mgtSvrIp, mgt.port, mgt.user, mgt.passwd,
|
||||
mgt.apiKey, mgt.securityKey,
|
||||
logging=self.testClientLogger)
|
||||
if mgt.apiKey is None:
|
||||
apiKey, securityKey = self.registerApiKey()
|
||||
self.testClient = \
|
||||
cloudstackTestClient.cloudstackTestClient(mgt.mgtSvrIp, 8080, \
|
||||
mgt.user, mgt.passwd, \
|
||||
apiKey, securityKey, \
|
||||
logging=self.testClientLogger)
|
||||
self.testClient = cloudstackTestClient.cloudstackTestClient(
|
||||
mgt.mgtSvrIp, 8080,
|
||||
mgt.user, mgt.passwd,
|
||||
apiKey, securityKey,
|
||||
logging=self.testClientLogger)
|
||||
|
||||
"""config database"""
|
||||
dbSvr = self.config.dbSvr
|
||||
if dbSvr is not None:
|
||||
self.testClient.dbConfigure(dbSvr.dbSvr, dbSvr.port, dbSvr.user, \
|
||||
dbSvr.passwd, dbSvr.db)
|
||||
self.testClient.dbConfigure(dbSvr.dbSvr, dbSvr.port, dbSvr.user,
|
||||
dbSvr.passwd, dbSvr.db)
|
||||
|
||||
self.apiClient = self.testClient.getApiClient()
|
||||
"""set hypervisor"""
|
||||
if mgt.hypervisor:
|
||||
self.apiClient.hypervisor = mgt.hypervisor
|
||||
else:
|
||||
self.apiClient.hypervisor = "XenServer" #Defaults to Xenserver
|
||||
self.apiClient.hypervisor = "XenServer" # Defaults to Xenserver
|
||||
|
||||
def updateConfiguration(self, globalCfg):
|
||||
if globalCfg is None:
|
||||
|
|
@ -501,10 +535,9 @@ class deployDataCenters():
|
|||
|
||||
def copyAttributesToCommand(self, source, command):
|
||||
|
||||
map(lambda attr : setattr(command, attr, getattr(source, attr, None)),
|
||||
filter(lambda attr : not attr.startswith("__") and
|
||||
attr not in [ "required", "isAsync" ], dir(command)))
|
||||
|
||||
map(lambda attr: setattr(command, attr, getattr(source, attr, None)),
|
||||
filter(lambda attr: not attr.startswith("__") and
|
||||
attr not in ["required", "isAsync"], dir(command)))
|
||||
|
||||
def configureS3(self, s3):
|
||||
if s3 is None:
|
||||
|
|
@ -524,7 +557,7 @@ if __name__ == "__main__":
|
|||
|
||||
parser = OptionParser()
|
||||
|
||||
parser.add_option("-i", "--input", action="store", \
|
||||
parser.add_option("-i", "--input", action="store",
|
||||
default="./datacenterCfg", dest="input", help="the path \
|
||||
where the json config file generated, by default is \
|
||||
./datacenterCfg")
|
||||
|
|
|
|||
Loading…
Reference in New Issue