mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
Fixing the framework for 3.0 /Acton API
* changes for bug 12964 - physical network creation is separated from createZone * removed redundant comments * PEP8 Compliance
This commit is contained in:
parent
659810d5a8
commit
05aa61432b
@ -4,13 +4,15 @@ import cloudstackException
|
||||
import cloudstackTestClient
|
||||
import sys
|
||||
import logging
|
||||
from cloudstackAPI import *
|
||||
from cloudstackAPI import *
|
||||
from optparse import OptionParser
|
||||
|
||||
|
||||
class deployDataCenters():
|
||||
|
||||
def __init__(self, cfgFile):
|
||||
self.configFile = cfgFile
|
||||
|
||||
|
||||
def addHosts(self, hosts, zoneId, podId, clusterId, hypervisor):
|
||||
if hosts is None:
|
||||
return
|
||||
@ -30,11 +32,11 @@ class deployDataCenters():
|
||||
hostcmd.zoneid = zoneId
|
||||
hostcmd.hypervisor = hypervisor
|
||||
self.apiClient.addHost(hostcmd)
|
||||
|
||||
|
||||
def createClusters(self, clusters, zoneId, podId):
|
||||
if clusters is None:
|
||||
return
|
||||
|
||||
|
||||
for cluster in clusters:
|
||||
clustercmd = addCluster.addClusterCmd()
|
||||
clustercmd.clustername = cluster.clustername
|
||||
@ -47,9 +49,11 @@ class deployDataCenters():
|
||||
clustercmd.zoneid = zoneId
|
||||
clusterresponse = self.apiClient.addCluster(clustercmd)
|
||||
clusterId = clusterresponse[0].id
|
||||
|
||||
self.addHosts(cluster.hosts, zoneId, podId, clusterId, cluster.hypervisor)
|
||||
self.createPrimaryStorages(cluster.primaryStorages, zoneId, podId, clusterId)
|
||||
|
||||
self.addHosts(cluster.hosts, zoneId, podId, clusterId,\
|
||||
cluster.hypervisor)
|
||||
self.createPrimaryStorages(cluster.primaryStorages, zoneId, podId,\
|
||||
clusterId)
|
||||
|
||||
def createPrimaryStorages(self, primaryStorages, zoneId, podId, clusterId):
|
||||
if primaryStorages is None:
|
||||
@ -64,7 +68,7 @@ class deployDataCenters():
|
||||
primarycmd.zoneid = zoneId
|
||||
primarycmd.clusterid = clusterId
|
||||
self.apiClient.createStoragePool(primarycmd)
|
||||
|
||||
|
||||
def createpods(self, pods, zone, zoneId):
|
||||
if pods is None:
|
||||
return
|
||||
@ -78,14 +82,15 @@ class deployDataCenters():
|
||||
createpod.zoneid = zoneId
|
||||
createpodResponse = self.apiClient.createPod(createpod)
|
||||
podId = createpodResponse.id
|
||||
|
||||
|
||||
if pod.guestIpRanges is not None:
|
||||
self.createVlanIpRanges("Basic", pod.guestIpRanges, zoneId, podId)
|
||||
|
||||
self.createVlanIpRanges("Basic", pod.guestIpRanges, zoneId,\
|
||||
podId)
|
||||
|
||||
self.createClusters(pod.clusters, zoneId, podId)
|
||||
|
||||
|
||||
def createVlanIpRanges(self, mode, ipranges, zoneId, podId=None, networkId=None):
|
||||
|
||||
def createVlanIpRanges(self, mode, ipranges, zoneId, podId=None,\
|
||||
networkId=None):
|
||||
if ipranges is None:
|
||||
return
|
||||
for iprange in ipranges:
|
||||
@ -104,9 +109,9 @@ class deployDataCenters():
|
||||
vlanipcmd.forvirtualnetwork = "false"
|
||||
else:
|
||||
vlanipcmd.forvirtualnetwork = "true"
|
||||
|
||||
|
||||
self.apiClient.createVlanIpRange(vlanipcmd)
|
||||
|
||||
|
||||
def createSecondaryStorages(self, secondaryStorages, zoneId):
|
||||
if secondaryStorages is None:
|
||||
return
|
||||
@ -115,7 +120,7 @@ class deployDataCenters():
|
||||
secondarycmd.url = secondary.url
|
||||
secondarycmd.zoneid = zoneId
|
||||
self.apiClient.addSecondaryStorage(secondarycmd)
|
||||
|
||||
|
||||
def createnetworks(self, networks, zoneId, mode):
|
||||
if networks is None:
|
||||
return
|
||||
@ -136,24 +141,17 @@ class deployDataCenters():
|
||||
|
||||
networkcmdresponse = self.apiClient.createNetwork(networkcmd)
|
||||
networkId = networkcmdresponse.id
|
||||
|
||||
self.createVlanIpRanges(mode, ipranges, zoneId, networkId=networkId)
|
||||
|
||||
def enablePhysicalNetwork(self, zoneid, vlan=None):
|
||||
pnets = listPhysicalNetworks.listPhysicalNetworksCmd()
|
||||
pnets.zoneid = zoneid
|
||||
pnets.state = 'Disabled'
|
||||
pnetsresponse = self.apiClient.listPhysicalNetworks(pnets)
|
||||
self.createVlanIpRanges(mode, ipranges, zoneId, networkId)
|
||||
|
||||
upnet = updatePhysicalNetwork.updatePhysicalNetworkCmd()
|
||||
upnet.state = 'Enabled'
|
||||
upnet.id = pnetsresponse[0].id
|
||||
''' enable guest VLAN in Advanced mode '''
|
||||
def createPhysicalNetwork(self, name, zoneid, vlan=None):
|
||||
phynet = createPhysicalNetwork.createPhysicalNetworkCmd()
|
||||
phynet.zoneid = zoneid
|
||||
phynet.name = name
|
||||
phynet.state = "Enabled"
|
||||
if vlan:
|
||||
upnet.vlan = vlan
|
||||
upnetresponse = self.apiClient.updatePhysicalNetwork(upnet)
|
||||
|
||||
return pnetsresponse
|
||||
phynet.vlan = vlan
|
||||
return self.apiClient.createPhysicalNetwork(phynet)
|
||||
|
||||
def configureProviders(self, phynetwrk, providers, networktype):
|
||||
pnetprov = listNetworkServiceProviders.listNetworkServiceProvidersCmd()
|
||||
@ -167,33 +165,47 @@ class deployDataCenters():
|
||||
vrprovresponse = self.apiClient.listVirtualRouterElements(vrprov)
|
||||
vrprovid = vrprovresponse[0].id
|
||||
|
||||
#Configure VirtualRouter Element
|
||||
vrconfig = configureVirtualRouterElement.configureVirtualRouterElementCmd()
|
||||
vrconfig = \
|
||||
configureVirtualRouterElement.configureVirtualRouterElementCmd()
|
||||
vrconfig.enabled = 'true'
|
||||
vrconfig.id = vrprovid
|
||||
vrconfigresponse = self.apiClient.configureVirtualRouterElement(vrconfig)
|
||||
vrconfigresponse = \
|
||||
self.apiClient.configureVirtualRouterElement(vrconfig)
|
||||
|
||||
#Enable VirtualRouter provider by default
|
||||
vrprovider = configGenerator.provider()
|
||||
vrprovider.name = 'VirtualRouter'
|
||||
providers.append(vrprovider)
|
||||
|
||||
#Enable additional providers in this physical network by name
|
||||
for prov in providers:
|
||||
pnetprov = listNetworkServiceProviders.listNetworkServiceProvidersCmd()
|
||||
pnetprov = \
|
||||
listNetworkServiceProviders.listNetworkServiceProvidersCmd()
|
||||
pnetprov.physicalnetworkid = phynetwrk[0].id
|
||||
pnetprov.name = prov.name
|
||||
pnetprov.state = 'Disabled'
|
||||
pnetprovs = self.apiClient.listNetworkServiceProviders(pnetprov)
|
||||
|
||||
upnetprov = updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
|
||||
upnetprov = \
|
||||
updateNetworkServiceProvider.updateNetworkServiceProviderCmd()
|
||||
upnetprov.id = pnetprovs[0].id
|
||||
upnetprov.state = 'Enabled'
|
||||
upnetprovresponse = self.apiClient.updateNetworkServiceProvider(upnetprov)
|
||||
|
||||
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):
|
||||
traffic_type = addTrafficType.addTrafficTypeCmd()
|
||||
traffic_type.physicalnetworkid = physical_network_id
|
||||
traffic_type.traffictype = traffictype
|
||||
self.apiClient.addTrafficType(traffic_type)
|
||||
|
||||
def createZones(self, zones):
|
||||
for zone in zones:
|
||||
'''create a zone'''
|
||||
createzone = createZone.createZoneCmd()
|
||||
createzone.dns1 = zone.dns1
|
||||
createzone.dns2 = zone.dns2
|
||||
@ -202,37 +214,48 @@ class deployDataCenters():
|
||||
createzone.name = zone.name
|
||||
createzone.securitygroupenabled = zone.securitygroupenabled
|
||||
createzone.networktype = zone.networktype
|
||||
|
||||
|
||||
zoneresponse = self.apiClient.createZone(createzone)
|
||||
zoneId = zoneresponse.id
|
||||
|
||||
'''enable physical networks and providers'''
|
||||
phynetwrk = self.enablePhysicalNetwork(zoneId, zone.vlan)
|
||||
self.configureProviders(phynetwrk, zone.providers, zone.networktype)
|
||||
phynetwrk = self.createPhysicalNetwork(zone.name + "-pnet", \
|
||||
zoneId, zone.vlan)
|
||||
if zone.networktype = "Advanced":
|
||||
self.addTrafficTypes(phynetwrk.id, ["Guest", "Public", \
|
||||
"Management"])
|
||||
elif zone.networktype = "Basic":
|
||||
self.addTrafficTypes(phynetwrk.id, ["Guest", "Public", \
|
||||
"Management", "Storage"])
|
||||
|
||||
self.configureProviders(phynetwrk, zone.providers, \
|
||||
zone.networktype)
|
||||
|
||||
if zone.networktype == "Basic":
|
||||
'''create the guest network from the sharednetworkoffering'''
|
||||
listnetworkoffering = listNetworkOfferings.listNetworkOfferingsCmd()
|
||||
listnetworkoffering.name = "DefaultSharedNetworkOfferingWithSGService"
|
||||
listnetworkofferingresponse = self.apiClient.listNetworkOfferings(listnetworkoffering)
|
||||
listnetworkoffering = \
|
||||
listNetworkOfferings.listNetworkOfferingsCmd()
|
||||
|
||||
listnetworkoffering.name = \
|
||||
"DefaultSharedNetworkOfferingWithSGService"
|
||||
|
||||
listnetworkofferingresponse = \
|
||||
self.apiClient.listNetworkOfferings(listnetworkoffering)
|
||||
|
||||
guestntwrk = configGenerator.network()
|
||||
guestntwrk.displaytext = "guestNetworkForBasicZone"
|
||||
guestntwrk.name = "guestNetworkForBasicZone"
|
||||
guestntwrk.zoneid = zoneId
|
||||
guestntwrk.networkofferingid = listnetworkofferingresponse[0].id
|
||||
guestntwrk.networkofferingid = \
|
||||
listnetworkofferingresponse[0].id
|
||||
self.createnetworks([guestntwrk], zoneId, zone.networktype)
|
||||
|
||||
'''create pods'''
|
||||
|
||||
self.createpods(zone.pods, zone, zoneId)
|
||||
|
||||
|
||||
if zone.networktype == "Advanced":
|
||||
'''create pubic network'''
|
||||
self.createVlanIpRanges(zone.networktype, zone.ipranges, zoneId)
|
||||
|
||||
'''create secondary storage'''
|
||||
self.createVlanIpRanges(zone.networktype, zone.ipranges, \
|
||||
zoneId)
|
||||
|
||||
self.createSecondaryStorages(zone.secondaryStorages, zoneId)
|
||||
|
||||
|
||||
def registerApiKey(self):
|
||||
listuser = listUsers.listUsersCmd()
|
||||
listuser.account = "admin"
|
||||
@ -243,23 +266,26 @@ class deployDataCenters():
|
||||
if apiKey is None:
|
||||
registerUser = registerUserKeys.registerUserKeysCmd()
|
||||
registerUser.id = userId
|
||||
registerUserRes = self.testClient.getApiClient().registerUserKeys(registerUser)
|
||||
registerUserRes = \
|
||||
self.testClient.getApiClient().registerUserKeys(registerUser)
|
||||
|
||||
apiKey = registerUserRes.apikey
|
||||
securityKey = registerUserRes.secretkey
|
||||
|
||||
|
||||
self.config.mgtSvr[0].port = 8080
|
||||
self.config.mgtSvr[0].apiKey = apiKey
|
||||
self.config.mgtSvr[0].securityKey = securityKey
|
||||
return apiKey, securityKey
|
||||
|
||||
|
||||
def loadCfg(self):
|
||||
try:
|
||||
self.config = configGenerator.get_setup_config(self.configFile)
|
||||
self.config = configGenerator.get_setup_config(self.configFile)
|
||||
except:
|
||||
raise cloudstackException.InvalidParameterException("Failed to load cofig" + sys.exc_info())
|
||||
raise cloudstackException.InvalidParameterException( \
|
||||
"Failed to load cofig" + sys.exc_info())
|
||||
|
||||
mgt = self.config.mgtSvr[0]
|
||||
|
||||
|
||||
loggers = self.config.logger
|
||||
testClientLogFile = None
|
||||
self.testCaseLogFile = None
|
||||
@ -272,7 +298,7 @@ class deployDataCenters():
|
||||
self.testCaseLogFile = log.file
|
||||
elif log.name == "TestResult":
|
||||
self.testResultLogFile = log.file
|
||||
|
||||
|
||||
testClientLogger = None
|
||||
if testClientLogFile is not None:
|
||||
testClientLogger = logging.getLogger("testClient")
|
||||
@ -280,45 +306,56 @@ class deployDataCenters():
|
||||
testClientLogger.addHandler(fh)
|
||||
testClientLogger.setLevel(logging.DEBUG)
|
||||
self.testClientLogger = testClientLogger
|
||||
|
||||
self.testClient = cloudstackTestClient.cloudstackTestClient(mgt.mgtSvrIp, mgt.port, mgt.apiKey, mgt.securityKey, logging=self.testClientLogger)
|
||||
|
||||
self.testClient =
|
||||
cloudstackTestClient.cloudstackTestClient(mgt.mgtSvrIp, mgt.port, \
|
||||
mgt.apiKey, \
|
||||
mgt.securityKey, \
|
||||
logging=self.testClientLogger)
|
||||
if mgt.apiKey is None:
|
||||
apiKey, securityKey = self.registerApiKey()
|
||||
self.testClient.close()
|
||||
self.testClient = cloudstackTestClient.cloudstackTestClient(mgt.mgtSvrIp, 8080, apiKey, securityKey, logging=self.testClientLogger)
|
||||
|
||||
self.testClient =
|
||||
cloudstackTestClient.cloudstackTestClient(mgt.mgtSvrIp, 8080, \
|
||||
apiKey, securityKey, \
|
||||
logging=self.testClientLogger)
|
||||
|
||||
'''config database'''
|
||||
dbSvr = self.config.dbSvr
|
||||
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()
|
||||
|
||||
|
||||
def updateConfiguration(self, globalCfg):
|
||||
if globalCfg is None:
|
||||
return None
|
||||
|
||||
|
||||
for config in globalCfg:
|
||||
updateCfg = updateConfiguration.updateConfigurationCmd()
|
||||
updateCfg.name = config.name
|
||||
updateCfg.value = config.value
|
||||
self.apiClient.updateConfiguration(updateCfg)
|
||||
|
||||
|
||||
def deploy(self):
|
||||
self.loadCfg()
|
||||
self.createZones(self.config.zones)
|
||||
self.updateConfiguration(self.config.globalConfig)
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
||||
parser = OptionParser()
|
||||
|
||||
parser.add_option("-i", "--intput", action="store", default="./datacenterCfg", dest="input", help="the path where the json config file generated, by default is ./datacenterCfg")
|
||||
|
||||
|
||||
parser.add_option("-i", "--intput", action="store", \
|
||||
default="./datacenterCfg", dest="input", help="the path \
|
||||
where the json config file generated, by default is \
|
||||
./datacenterCfg")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
deploy = deployDataCenters(options.input)
|
||||
deploy.deploy()
|
||||
|
||||
|
||||
deploy = deployDataCenters(options.input)
|
||||
deploy.deploy()
|
||||
|
||||
'''
|
||||
create = createStoragePool.createStoragePoolCmd()
|
||||
create.clusterid = 1
|
||||
@ -326,7 +363,7 @@ if __name__ == "__main__":
|
||||
create.name = "fdffdf"
|
||||
create.url = "nfs://jfkdjf/fdkjfkd"
|
||||
create.zoneid = 2
|
||||
|
||||
|
||||
deploy = deployDataCenters("./datacenterCfg")
|
||||
deploy.loadCfg()
|
||||
deploy.apiClient.createStoragePool(create)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user