summaryrefslogtreecommitdiffstats
path: root/playbooks/adhoc/upgrades/library
diff options
context:
space:
mode:
authorDevan Goodwin <dgoodwin@redhat.com>2015-11-05 08:35:53 -0400
committerJason DeTiberus <jdetiber@redhat.com>2015-11-05 17:10:51 -0500
commitfe4e9a4ca7028aa877fdd3895225a67b026aea11 (patch)
treea212bfbb7f443335ace471256e07cb25ab139c12 /playbooks/adhoc/upgrades/library
parentc73ec7b6b27483aea4bb53db0db9837ff9781d24 (diff)
downloadopenshift-fe4e9a4ca7028aa877fdd3895225a67b026aea11.tar.gz
openshift-fe4e9a4ca7028aa877fdd3895225a67b026aea11.tar.bz2
openshift-fe4e9a4ca7028aa877fdd3895225a67b026aea11.tar.xz
openshift-fe4e9a4ca7028aa877fdd3895225a67b026aea11.zip
Upgrade improvements
- Push config dir logic out of module and use host variables instead. - Backup master config with ansible utility. - Add error handling for the upgrade config module. - Add verbose option to installer. - Return details on what we changed when upgrading config. - Cleanup use of first master. - Don't install upgrade rpms to check what version we'll upgrade to.
Diffstat (limited to 'playbooks/adhoc/upgrades/library')
-rwxr-xr-xplaybooks/adhoc/upgrades/library/openshift_upgrade_config.py53
1 files changed, 25 insertions, 28 deletions
diff --git a/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py b/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
index 60f4fd8b8..0894efa52 100755
--- a/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
+++ b/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
@@ -5,11 +5,8 @@
"""Ansible module for modifying OpenShift configs during an upgrade"""
import os
-import shutil
import yaml
-from datetime import datetime
-
DOCUMENTATION = '''
---
module: openshift_upgrade_config
@@ -20,21 +17,14 @@ requirements: [ ]
EXAMPLES = '''
'''
-def get_cfg_dir():
- """Return the correct config directory to use."""
- 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):
+def upgrade_master_3_0_to_3_1(module, config_base, backup):
"""Main upgrade method for 3.0 to 3.1."""
- changed = False
+ changes = []
# 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')
+ master_config = os.path.join(config_base, 'master/master-config.yaml')
master_cfg_file = open(master_config, 'r')
config = yaml.safe_load(master_cfg_file.read())
@@ -45,6 +35,7 @@ def upgrade_master_3_0_to_3_1(backup):
'v1beta3' in config['apiLevels']:
config['apiLevels'].remove('v1beta3')
changed = True
+ changes.append("master-config.yaml: removed v1beta3 from apiLevels")
if 'apiLevels' in config['kubernetesMasterConfig'] and \
'v1beta3' in config['kubernetesMasterConfig']['apiLevels']:
config['kubernetesMasterConfig']['apiLevels'].remove('v1beta3')
@@ -57,27 +48,26 @@ def upgrade_master_3_0_to_3_1(backup):
# 'certFile': 'master.proxy-client.crt',
# 'keyFile': 'master.proxy-client.key'
# }
+# changes.append("master-config.yaml: added proxyClientInfo")
- if changed:
+ if len(changes) > 0:
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)
+ # TODO: Check success:
+ module.backup_local(master_config)
+
# 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
+ return changes
-def upgrade_master(from_version, to_version, backup):
+def upgrade_master(module, config_base, from_version, to_version, backup):
"""Upgrade entry point."""
if from_version == '3.0':
if to_version == '3.1':
- return upgrade_master_3_0_to_3_1(backup)
+ return upgrade_master_3_0_to_3_1(module, config_base, backup)
def main():
@@ -89,6 +79,7 @@ def main():
module = AnsibleModule(
argument_spec=dict(
+ config_base=dict(required=True),
from_version=dict(required=True, choices=['3.0']),
to_version=dict(required=True, choices=['3.1']),
role=dict(required=True, choices=['master']),
@@ -101,12 +92,18 @@ def main():
to_version = module.params['to_version']
role = module.params['role']
backup = module.params['backup']
-
- changed = False
- if role == 'master':
- changed = upgrade_master(from_version, to_version, backup)
-
- return module.exit_json(changed=changed)
+ config_base = module.params['config_base']
+
+ try:
+ changes = []
+ if role == 'master':
+ changes = upgrade_master(module, config_base, from_version,
+ to_version, backup)
+
+ changed = len(changes) > 0
+ return module.exit_json(changed=changed, changes=changes)
+ except Exception, e:
+ return module.fail_json(msg=str(e))
# ignore pylint errors related to the module_utils import
# pylint: disable=redefined-builtin, unused-wildcard-import, wildcard-import