diff options
Diffstat (limited to 'deploy/cloud/deploy.py')
-rw-r--r-- | deploy/cloud/deploy.py | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/deploy/cloud/deploy.py b/deploy/cloud/deploy.py new file mode 100644 index 000000000..14d6a9621 --- /dev/null +++ b/deploy/cloud/deploy.py @@ -0,0 +1,94 @@ +############################################################################### +# Copyright (c) 2015 Ericsson AB and others. +# szilard.cserey@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################### + + +import yaml +import io + +from dea import DeploymentEnvironmentAdapter +from configure_environment import ConfigureEnvironment +from deployment import Deployment + +from common import ( + R, + exec_cmd, + parse, + check_file_exists, + commafy, + ArgParser, +) + +YAML_CONF_DIR = '/var/lib/opnfv' + + +class Deploy(object): + + def __init__(self, dea_file, no_health_check): + self.dea = DeploymentEnvironmentAdapter(dea_file) + self.no_health_check = no_health_check + self.macs_per_blade = {} + self.blades = self.dea.get_node_ids() + self.blade_node_dict = self.dea.get_blade_node_map() + self.node_roles_dict = {} + self.env_id = None + self.wanted_release = self.dea.get_property('wanted_release') + + def assign_roles_to_cluster_node_ids(self): + self.node_roles_dict = {} + for blade, node in self.blade_node_dict.iteritems(): + roles = commafy(self.dea.get_node_role(blade)) + self.node_roles_dict[node] = (roles, blade) + + def configure_environment(self): + release_list = parse(exec_cmd('fuel release -l')) + for release in release_list: + if release[R['name']] == self.wanted_release: + break + config_env = ConfigureEnvironment(self.dea, YAML_CONF_DIR, + release[R['id']], + self.node_roles_dict) + config_env.configure_environment() + self.env_id = config_env.env_id + + def deploy_cloud(self): + dep = Deployment(self.dea, YAML_CONF_DIR, self.env_id, + self.node_roles_dict, self.no_health_check) + dep.deploy() + + def deploy(self): + + self.assign_roles_to_cluster_node_ids() + + self.configure_environment() + + self.deploy_cloud() + + +def parse_arguments(): + parser = ArgParser(prog='python %s' % __file__) + parser.add_argument('-nh', dest='no_health_check', action='store_true', + default=False, + help='Don\'t run health check after deployment') + parser.add_argument('dea_file', action='store', + help='Deployment Environment Adapter: dea.yaml') + args = parser.parse_args() + check_file_exists(args.dea_file) + + kwargs = {'dea_file': args.dea_file, + 'no_health_check': args.no_health_check} + return kwargs + + +def main(): + kwargs = parse_arguments() + deploy = Deploy(**kwargs) + deploy.deploy() + +if __name__ == '__main__': + main() |