mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	* refactor: remove trailing whitespace from Python files * Add the GitHub Super-Linter Add Python flake8 linting for W291 trailing whitespace * Add licenses
		
			
				
	
	
		
			158 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| # Licensed to the Apache Software Foundation (ASF) under one
 | |
| # or more contributor license agreements.  See the NOTICE file
 | |
| # distributed with this work for additional information
 | |
| # regarding copyright ownership.  The ASF licenses this file
 | |
| # 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
 | |
| # KIND, either express or implied.  See the License for the
 | |
| # specific language governing permissions and limitations
 | |
| # under the License.
 | |
| '''
 | |
| ############################################################
 | |
| # Experimental state of scripts
 | |
| #    * Need to be reviewed
 | |
| #    * Only a sandbox
 | |
| ############################################################
 | |
| '''
 | |
| import random
 | |
| import marvin
 | |
| from ConfigParser import SafeConfigParser
 | |
| from optparse import OptionParser
 | |
| from marvin.configGenerator import *
 | |
| 
 | |
| 
 | |
| def getGlobalSettings(config):
 | |
|    for k, v in dict(config.items('globals')).iteritems():
 | |
|         cfg = configuration()
 | |
|         cfg.name = k
 | |
|         cfg.value = v
 | |
|         yield cfg
 | |
| 
 | |
| 
 | |
| def describeDevcloudKvmResources(config):
 | |
|     zs = cloudstackConfiguration()
 | |
| 
 | |
|     z = zone()
 | |
|     z.dns1 = config.get('environment', 'dns')
 | |
|     z.internaldns1 = config.get('environment', 'dns')
 | |
|     z.name = 'Devcloud-%s'%(config.get('cloudstack', 'hypervisor'))
 | |
|     z.networktype = 'Advanced'
 | |
|     z.guestcidraddress = '10.1.1.0/24'
 | |
|     z.localstorageenabled = 'true'
 | |
| 
 | |
|     vpcprovider = provider()
 | |
|     vpcprovider.name = 'VpcVirtualRouter'
 | |
| 
 | |
|     pn = physical_network()
 | |
|     pn.name = "eth0"
 | |
|     pn.vlan = config.get('cloudstack', 'pnet.vlan')
 | |
|     pn.tags = ["devcloud-guest"]
 | |
|     pn.traffictypes = [traffictype("Guest", {"kvm" :"kvm-guest" }), traffictype("Management")]
 | |
|     pn.providers.append(vpcprovider)
 | |
| 
 | |
|     pn2 = physical_network()
 | |
|     pn2.name = "eth1"
 | |
|     pn2.vlan = config.get('cloudstack', 'pnet2.vlan')
 | |
|     pn2.tags = ["devcloud-public"]
 | |
|     pn2.traffictypes = [traffictype("Public", {"kvm" : "kvm-public"})]
 | |
|     pn2.providers.append(vpcprovider)
 | |
| 
 | |
|     z.physical_networks.append(pn)
 | |
|     z.physical_networks.append(pn2)
 | |
| 
 | |
|     p = pod()
 | |
|     p.name = 'POD0'
 | |
|     p.gateway = config.get('cloudstack', 'private.gateway')
 | |
|     p.startip =  config.get('cloudstack', 'private.pod.startip')
 | |
|     p.endip =  config.get('cloudstack', 'private.pod.endip')
 | |
|     p.netmask = config.get('cloudstack', 'private.netmask')
 | |
| 
 | |
|     v = iprange()
 | |
|     v.gateway = config.get('cloudstack', 'public.gateway')
 | |
|     v.startip = config.get('cloudstack', 'public.vlan.startip')
 | |
|     v.endip = config.get('cloudstack', 'public.vlan.endip')
 | |
|     v.netmask = config.get('cloudstack', 'public.netmask')
 | |
|     v.vlan = config.get('cloudstack', 'public.vlan')
 | |
|     z.ipranges.append(v)
 | |
| 
 | |
|     c = cluster()
 | |
|     c.clustername = 'C0'
 | |
|     c.hypervisor = config.get('cloudstack', 'hypervisor')
 | |
|     c.clustertype = 'CloudManaged'
 | |
| 
 | |
|     h = host()
 | |
|     h.username = 'root'
 | |
|     h.password = config.get('cloudstack', 'host.password')
 | |
|     h.url = 'http://%s'%(config.get('cloudstack', 'host'))
 | |
|     c.hosts.append(h)
 | |
| 
 | |
|     ps = primaryStorage()
 | |
|     ps.name = 'PS0'
 | |
|     ps.url = config.get('cloudstack', 'primary.pool')
 | |
|     c.primaryStorages.append(ps)
 | |
| 
 | |
|     p.clusters.append(c)
 | |
|     z.pods.append(p)
 | |
| 
 | |
|     secondary = secondaryStorage()
 | |
|     secondary.url = config.get('cloudstack', 'secondary.pool')
 | |
|     z.secondaryStorages.append(secondary)
 | |
| 
 | |
|     '''Add zone'''
 | |
|     zs.zones.append(z)
 | |
| 
 | |
|     '''Add mgt server'''
 | |
|     mgt = managementServer()
 | |
|     mgt.mgtSvrIp = config.get('environment', 'mshost')
 | |
|     mgt.user = config.get('environment', 'mshost.user')
 | |
|     mgt.passwd = config.get('environment', 'mshost.passwd')
 | |
|     zs.mgtSvr.append(mgt)
 | |
| 
 | |
|     '''Add a database'''
 | |
|     db = dbServer()
 | |
|     db.dbSvr = config.get('environment', 'mysql.host')
 | |
|     db.user = config.get('environment', 'mysql.cloud.user')
 | |
|     db.passwd = config.get('environment', 'mysql.cloud.passwd')
 | |
|     zs.dbSvr = db
 | |
| 
 | |
|     '''Add some configuration'''
 | |
|     [zs.globalConfig.append(cfg) for cfg in getGlobalSettings(config)]
 | |
| 
 | |
|     ''''add loggers'''
 | |
|     testClientLogger = logger()
 | |
|     testClientLogger.name = 'TestClient'
 | |
|     testClientLogger.file = 'testclient.log'
 | |
| 
 | |
|     testCaseLogger = logger()
 | |
|     testCaseLogger.name = 'TestCase'
 | |
|     testCaseLogger.file = 'testcase.log'
 | |
| 
 | |
|     zs.logger.append(testClientLogger)
 | |
|     zs.logger.append(testCaseLogger)
 | |
|     return zs
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     parser = OptionParser()
 | |
|     parser.add_option('-i', '--input', action='store', default='setup.properties', \
 | |
|                       dest='input', help='file containing environment setup information')
 | |
|     parser.add_option('-o', '--output', action='store', default='./devcloud-kvm-advanced.cfg', \
 | |
|                       dest='output', help='path where environment json will be generated')
 | |
| 
 | |
| 
 | |
|     (opts, args) = parser.parse_args()
 | |
| 
 | |
|     cfg_parser = SafeConfigParser()
 | |
|     cfg_parser.read(opts.input)
 | |
| 
 | |
|     cfg = describeDevcloudKvmResources(cfg_parser)
 | |
|     generate_setup_config(cfg, opts.output)
 |