X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=deploy%2Ftransplant_fuel_settings.py;h=ee915fdbee83cdb9ab5bdd7ffeff1f609f465343;hb=8e67db574f00ede98f53819ca9f2be99089012dd;hp=e57a4fbc653238f3728200012e79dca1c3c327f5;hpb=ce32b60906075b9471e9ebdb035998fd20afacc6;p=fuel.git diff --git a/deploy/transplant_fuel_settings.py b/deploy/transplant_fuel_settings.py index e57a4fbc6..ee915fdbe 100644 --- a/deploy/transplant_fuel_settings.py +++ b/deploy/transplant_fuel_settings.py @@ -11,13 +11,18 @@ import sys import io import yaml +import re +import os from dea import DeploymentEnvironmentAdapter from common import ( check_file_exists, + exec_cmd, + log, ) ASTUTE_YAML = '/etc/fuel/astute.yaml' +FUEL_BOOTSTRAP_CLI_YAML = '/opt/opnfv/fuel_bootstrap_cli.yaml' def usage(): @@ -35,27 +40,78 @@ def parse_arguments(): check_file_exists(dea_file) return dea_file +def write_ifcfg_file(key, fuel_conf): + config = ('BOOTPROTO=none\n' + 'ONBOOT=yes\n' + 'TYPE=Ethernet\n' + 'NM_CONTROLLED=yes\n') + for skey in ('ipaddress', 'device', 'netmask', 'gateway'): + if not fuel_conf[key].get(skey): + log('Warning: missing key %s for %s' % (skey, key)) + config += '%s=\n' % skey.upper() + elif skey == 'ipaddress': + config += 'IPADDR=%s\n' % fuel_conf[key][skey] + else: + config += '%s=%s\n' % (skey.upper(), fuel_conf[key][skey]) + + fname = os.path.join('/etc/sysconfig/network-scripts/', + key.lower().replace('_','-')) + with open(fname, 'wc') as f: + f.write(config) def transplant(dea, astute): fuel_conf = dea.get_fuel_config() + require_network_restart = False for key in fuel_conf.iterkeys(): if key == 'ADMIN_NETWORK': for skey in fuel_conf[key].iterkeys(): astute[key][skey] = fuel_conf[key][skey] + elif re.match('^IFCFG', key): + log('Adding interface configuration for: %s' % key.lower()) + require_network_restart = True + write_ifcfg_file(key, fuel_conf) + if astute.has_key(key): + astute.pop(key, None) else: astute[key] = fuel_conf[key] + if require_network_restart: + admin_ifcfg = '/etc/sysconfig/network-scripts/ifcfg-eth0' + exec_cmd('echo "DEFROUTE=no" >> %s' % admin_ifcfg) + log('At least one interface was reconfigured, restart network manager') + exec_cmd('systemctl restart network') return astute +def transplant_bootstrap(astute, fuel_bootstrap_cli): + if 'BOOTSTRAP' in astute: + for skey in astute['BOOTSTRAP'].iterkeys(): + # FIXME: astute.yaml repos point to public ones instead of + # local mirrors, this filter should be removed when in sync + if skey != 'repos': + fuel_bootstrap_cli[skey] = astute['BOOTSTRAP'][skey] + return fuel_bootstrap_cli + def main(): dea_file = parse_arguments() check_file_exists(ASTUTE_YAML) + # Temporarily disabled for Fuel 10. + # check_file_exists(FUEL_BOOTSTRAP_CLI_YAML) dea = DeploymentEnvironmentAdapter(dea_file) + log('Reading astute file %s' % ASTUTE_YAML) with io.open(ASTUTE_YAML) as stream: astute = yaml.load(stream) + log('Initiating transplant') transplant(dea, astute) with io.open(ASTUTE_YAML, 'w') as stream: yaml.dump(astute, stream, default_flow_style=False) + log('Transplant done') + # Update bootstrap config yaml with info from DEA/astute.yaml + # Temporarily disabled for Fuel 10. + # with io.open(FUEL_BOOTSTRAP_CLI_YAML) as stream: + # fuel_bootstrap_cli = yaml.load(stream) + # transplant_bootstrap(astute, fuel_bootstrap_cli) + # with io.open(FUEL_BOOTSTRAP_CLI_YAML, 'w') as stream: + # yaml.dump(fuel_bootstrap_cli, stream, default_flow_style=False) if __name__ == '__main__':