mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +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)
 |