X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=deploy%2Freap.py;h=7d996314b12bf5dc93b5331740f996f7d38a09c1;hb=afd2b0ce63fdf67e99d8404d54d3138ffe608217;hp=2155f3faa60fc3be488976be06d00b9d611d6117;hpb=e9dade97d97f0d80fef3dd7d73b83cbe84eebf31;p=fuel.git diff --git a/deploy/reap.py b/deploy/reap.py old mode 100755 new mode 100644 index 2155f3faa..7d996314b --- a/deploy/reap.py +++ b/deploy/reap.py @@ -1,7 +1,8 @@ #!/usr/bin/python ############################################################################### -# Copyright (c) 2015 Ericsson AB and others. +# Copyright (c) 2015, 2016 Ericsson AB and others. # szilard.cserey@ericsson.com +# peter.barabas@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 @@ -14,6 +15,7 @@ import os import yaml import glob import shutil +import tempfile from common import ( N, @@ -56,6 +58,8 @@ adapter: # ipmiIp # ipmiUser # ipmiPass +# and you *MAY* provide (optional, not added by reap.py): +# ipmiPort # - libvirt adapter you need to provide: # libvirtName: # libvirtTemplate: [libvirt/vms/controller.xml | libvirt/vms/compute.xml] @@ -73,17 +77,21 @@ DHA_2 = ''' # which may not be correct - please adjust as needed. ''' -DISKS = {'fuel': '50G', - 'controller': '60G', - 'compute': '50G'} +TEMPLATER = 'templater.py' + +DISKS = {'fuel': '100G', + 'controller': '100G', + 'compute': '100G'} class Reap(object): - def __init__(self, dea_file, dha_file, comment): + def __init__(self, dea_file, dha_file, comment, base_dea, template): self.dea_file = dea_file self.dha_file = dha_file self.comment = comment + self.base_dea = base_dea + self.template = template self.temp_dir = None self.env = None self.env_id = None @@ -91,8 +99,10 @@ class Reap(object): def get_env(self): env_list = parse(exec_cmd('fuel env')) - if len(env_list) > 1: - err('Not exactly one environment') + if len(env_list) == 0: + err('No environment deployed') + elif len(env_list) > 1: + err('More than 1 environment deployed') self.env = env_list[0] self.env_id = self.env[E['id']] @@ -134,9 +144,8 @@ class Reap(object): def reap_transformation(self, node_id, roles, transformations): main_role = 'controller' if 'controller' in roles else 'compute' - node_file = glob.glob('%s/deployment_%s/*%s_%s.yaml' - % (self.temp_dir, self.env_id, - main_role, node_id)) + node_file = glob.glob('%s/deployment_%s/%s.yaml' + % (self.temp_dir, self.env_id, node_id)) tr_name = None with open(node_file[0]) as f: node_config = yaml.load(f) @@ -220,13 +229,8 @@ class Reap(object): % (self.temp_dir, self.env_id)) network = self.read_yaml(network_file) - # ha_compact not understood by Fuel when deploying...OD - if self.env[E['mode']] == 'ha_compact': - self.env[E['mode']] = 'ha' - env = {'environment': {'name': self.env[E['name']], - 'mode': self.env[E['mode']], 'net_segment_type': network['networking_parameters']['segmentation_type']}} self.write_yaml(self.dea_file, env) @@ -247,7 +251,7 @@ class Reap(object): fuel[key] = data[key] for key in fuel['ADMIN_NETWORK'].keys(): if key not in ['ipaddress', 'netmask', - 'dhcp_pool_start', 'dhcp_pool_end']: + 'dhcp_pool_start', 'dhcp_pool_end', 'ssh_network']: del fuel['ADMIN_NETWORK'][key] self.write_yaml(self.dea_file, {'fuel': fuel}) @@ -294,7 +298,8 @@ class Reap(object): def intro(self): delete(self.dea_file) delete(self.dha_file) - self.temp_dir = exec_cmd('mktemp -d') + + self.temp_dir = tempfile.mkdtemp() date = time.strftime('%c') self.write(self.dea_file, DEA_1.format(date=date, comment=self.comment), False) @@ -311,10 +316,16 @@ class Reap(object): self.download_config('settings') self.download_config('network') + def create_base_dea(self): + exec_cmd('python %s %s %s %s' + % (TEMPLATER, self.dea_file, self.template, self.base_dea)) + def finale(self): log('DEA file is available at %s' % self.dea_file) log('DHA file is available at %s (this is just a template)' % self.dha_file) + if self.base_dea: + log('DEA base file is available at %s' % self.base_dea) shutil.rmtree(self.temp_dir) def reap(self): @@ -324,16 +335,11 @@ class Reap(object): self.reap_fuel_settings() self.reap_network_settings() self.reap_settings() + if self.base_dea: + self.create_base_dea() self.finale() -def usage(): - print ''' - Usage: - python reap.py - ''' - - def parse_arguments(): parser = ArgParser(prog='python %s' % __file__) parser.add_argument('dea_file', nargs='?', action='store', @@ -343,14 +349,26 @@ def parse_arguments(): default='dha.yaml', help='Deployment Hardware Adapter: dha.yaml') parser.add_argument('comment', nargs='?', action='store', help='Comment') + parser.add_argument('-base_dea', + dest='base_dea', + help='Create specified base DEA file from "dea_file"') + parser.add_argument('-template', + dest='template', + nargs='?', + default='base_dea_template.yaml', + help='Base DEA is generated from this template') args = parser.parse_args() - return (args.dea_file, args.dha_file, args.comment) + return (args.dea_file, + args.dha_file, + args.comment, + args.base_dea, + args.template) def main(): - dea_file, dha_file, comment = parse_arguments() + dea_file, dha_file, comment, base_dea, template = parse_arguments() - r = Reap(dea_file, dha_file, comment) + r = Reap(dea_file, dha_file, comment, base_dea, template) r.reap()