diff options
Diffstat (limited to 'ci/genBundle.py')
-rw-r--r-- | ci/genBundle.py | 97 |
1 files changed, 58 insertions, 39 deletions
diff --git a/ci/genBundle.py b/ci/genBundle.py index 8c7d3a3c..ffa1119d 100644 --- a/ci/genBundle.py +++ b/ci/genBundle.py @@ -1,84 +1,103 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +""" +This script generates a juju deployer bundle based on +scenario name, and lab config file. + +Parameters: + -s, --scenario : scenario name + -l, --lab : lab config file +""" + from optparse import OptionParser from jinja2 import Environment, FileSystemLoader -from pprint import pprint as pp import os import random import yaml -import sys, traceback +import sys -## -## Parse parameters -## +# +# Parse parameters +# parser = OptionParser() -parser.add_option("-s", "--scenario", dest="scenario", help ="scenario name") -parser.add_option("-l", "--lab", dest="lab", help ="lab config file") +parser.add_option("-s", "--scenario", dest="scenario", help="scenario name") +parser.add_option("-l", "--lab", dest="lab", help="lab config file") (options, args) = parser.parse_args() scenario = options.scenario labconfig_file = options.lab -## -## Set Path and configs path -## +# +# Set Path and configs path +# scenarioconfig_file = 'default_deployment_config.yaml' # Capture our current directory TPL_DIR = os.path.dirname(os.path.abspath(__file__))+'/bundle_tpl' -## -## Prepare variables -## +# +# Prepare variables +# # Prepare a storage for passwords passwords_store = dict() -## -## Local Functions -## +# +# Local Functions +# + def load_yaml(filepath): + """Load YAML file""" with open(filepath, 'r') as stream: try: return yaml.load(stream) except yaml.YAMLError as exc: print(exc) -## -## Templates functions -## +# +# Templates functions +# + def unit_qty(): + """Return quantity of units to deploy""" global config if config['os']['ha']['mode'] == 'ha': return config['os']['ha']['cluster_size'] else: return 1 + def unit_ceph_qty(): + """Return size of the ceph cluster""" global config if config['os']['ha']['mode'] == 'ha': return config['os']['ha']['cluster_size'] else: return 2 -def to_select( qty = False ): + +def to_select(qty=False): + """Return a random list of machines numbers to deploy""" global config if not qty: - qty = config['os']['ha']['cluster_size'] if config['os']['ha']['mode'] == 'ha' else 1 + qty = config['os']['ha']['cluster_size'] if \ + config['os']['ha']['mode'] == 'ha' else 1 if config['os']['ha']['mode'] == 'ha': - return random.sample(range(0,config['opnfv']['units']), qty ) + return random.sample(range(0, config['opnfv']['units']), qty) else: - return random.sample(range(0,2),qty ) + return random.sample(range(0, 2), qty) + def get_password(key, length=16, special=False): + """Return a new random password or a already created one""" global passwords_store if key not in passwords_store.keys(): alphabet = "abcdefghijklmnopqrstuvwxyz" upperalphabet = alphabet.upper() - char_list = alphabet + upperalphabet + char_list = alphabet + upperalphabet + '0123456789' pwlist = [] if special: char_list += "+-,;./:?!*" @@ -88,16 +107,16 @@ def get_password(key, length=16, special=False): passwords_store[key] = "".join(pwlist) return passwords_store[key] -## -## Config import -## +# +# Config import +# -#Load scenario Config +# Load scenario Config config = load_yaml(scenarioconfig_file) -#Load lab Config +# Load lab Config config.update(load_yaml(labconfig_file)) -#We transform array to hash for an easier work +# We transform array to hash for an easier work config['opnfv']['spaces_dict'] = dict() for space in config['opnfv']['spaces']: config['opnfv']['spaces_dict'][space['type']] = space @@ -105,9 +124,9 @@ config['opnfv']['storage_dict'] = dict() for storage in config['opnfv']['storage']: config['opnfv']['storage_dict'][storage['type']] = storage -## -## Parse scenario name -## +# +# Parse scenario name +# # Set default scenario name if not scenario: @@ -127,9 +146,9 @@ except ValueError as err: '"os-<controller>-<nfvfeature>-<mode>[-<extrastuff>]" format') sys.exit(1) -## -## Update config with scenario name -## +# +# Update config with scenario name +# # change ha mode config['os']['ha']['mode'] = hamode @@ -169,9 +188,9 @@ if 'trusty' in extra: # pp(config) -## -## Transform template to bundle.yaml according to config -## +# +# Transform template to bundle.yaml according to config +# # Create the jinja2 environment. env = Environment(loader=FileSystemLoader(TPL_DIR), |