summaryrefslogtreecommitdiffstats
path: root/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks/adhoc/upgrades/library/openshift_upgrade_config.py')
-rwxr-xr-xplaybooks/adhoc/upgrades/library/openshift_upgrade_config.py53
1 files changed, 49 insertions, 4 deletions
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)