From cbf98f53b0975a829a5720c33149c7014d5bd7cd Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Tue, 3 Nov 2015 09:27:13 -0400 Subject: Implement master-config.yaml upgrade for v1beta3 apiLevel removal. --- .../upgrades/library/openshift_upgrade_config.py | 53 ++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) (limited to 'playbooks/adhoc/upgrades/library') diff --git a/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py b/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py index 157fbc5c2..f41c6fb59 100755 --- a/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py +++ b/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py @@ -2,6 +2,12 @@ # -*- coding: utf-8 -*- # vim: expandtab:tabstop=4:shiftwidth=4 +import os +import shutil +import yaml + +from datetime import datetime + """Ansible module for modifying OpenShift configs during an upgrade""" DOCUMENTATION = ''' @@ -14,14 +20,53 @@ requirements: [ ] EXAMPLES = ''' ''' +def get_cfg_dir(): + cfg_path = '/etc/origin/' + if not os.path.exists(cfg_path): + cfg_path = '/etc/openshift/' + return cfg_path + def upgrade_master_3_0_to_3_1(backup): - pass + changed = False + + # Facts do not get transferred to the hosts where custom modules run, + # need to make some assumptions here. + master_config = os.path.join(get_cfg_dir(), 'master/master-config.yaml') + + f = open(master_config, 'r') + config = yaml.safe_load(f.read()) + f.close() + + # Remove v1beta3 from apiLevels: + if 'apiLevels' in config and \ + 'v1beta3' in config['apiLevels']: + config['apiLevels'].remove('v1beta3') + changed = True + if 'kubernetesMasterConfig' in config and \ + 'apiLevels' in config['kubernetesMasterConfig'] and \ + 'v1beta3' in config['kubernetesMasterConfig']['apiLevels']: + config['kubernetesMasterConfig']['apiLevels'].remove('v1beta3') + changed = True + + if changed: + if backup: + timestamp = datetime.now().strftime('%Y%m%d%H%M%S') + basedir = os.path.split(master_config)[0] + backup_file = os.path.join(basedir, 'master-config.yaml.bak-%s' + % timestamp) + shutil.copyfile(master_config, backup_file) + # Write the modified config: + out_file = open(master_config, 'w') + out_file.write(yaml.safe_dump(config, default_flow_style=False)) + out_file.close() + + return changed def upgrade_master(from_version, to_version, backup): if from_version == '3.0': if to_version == '3.1': - upgrade_master_3_0_to_3_1(backup) + return upgrade_master_3_0_to_3_1(backup) def main(): @@ -41,15 +86,15 @@ def main(): supports_check_mode=True, ) - changed = False from_version = module.params['from_version'] to_version = module.params['to_version'] role = module.params['role'] backup = module.params['backup'] + changed = False if role == 'master': - upgrade_master(from_version, to_version, backup) + changed = upgrade_master(from_version, to_version, backup) return module.exit_json(changed=changed) -- cgit v1.2.3