Browse Source

Merge pull request #1388 from smunilla/minor_upgrades

a-o-i: Prompts to allow minor upgrades
Brenton Leanhardt 9 years ago
parent
commit
da21865de3
2 changed files with 32 additions and 10 deletions
  1. 23 7
      utils/src/ooinstall/cli_installer.py
  2. 9 3
      utils/src/ooinstall/openshift_ansible.py

+ 23 - 7
utils/src/ooinstall/cli_installer.py

@@ -722,14 +722,30 @@ def upgrade(ctx):
         click.echo("No hosts defined in: %s" % oo_cfg.config_path)
         sys.exit(1)
 
-    # Update config to reflect the version we're targetting, we'll write
-    # to disk once ansible completes successfully, not before.
     old_variant = oo_cfg.settings['variant']
     old_version = oo_cfg.settings['variant_version']
-    if oo_cfg.settings['variant'] == 'enterprise':
-        oo_cfg.settings['variant'] = 'openshift-enterprise'
-    version = find_variant(oo_cfg.settings['variant'])[1]
-    oo_cfg.settings['variant_version'] = version.name
+
+
+    message = """
+        This tool will help you upgrade your existing OpenShift installation.
+"""
+    click.echo(message)
+    click.echo("Version {} found. Do you want to update to the latest version of {} " \
+               "or migrate to the next major release?".format(old_version, old_version))
+    resp = click.prompt("(1) Update to latest {} (2) Migrate to next relese".format(old_version))
+
+    if resp == "2":
+        # TODO: Make this a lot more flexible
+        new_version = "3.1"
+        # Update config to reflect the version we're targetting, we'll write
+        # to disk once ansible completes successfully, not before.
+        if oo_cfg.settings['variant'] == 'enterprise':
+            oo_cfg.settings['variant'] = 'openshift-enterprise'
+        version = find_variant(oo_cfg.settings['variant'])[1]
+        oo_cfg.settings['variant_version'] = version.name
+    else:
+        new_version = old_version
+
     click.echo("Openshift will be upgraded from %s %s to %s %s on the following hosts:\n" % (
         old_variant, old_version, oo_cfg.settings['variant'],
         oo_cfg.settings['variant_version']))
@@ -743,7 +759,7 @@ def upgrade(ctx):
             click.echo("Upgrade cancelled.")
             sys.exit(0)
 
-    retcode = openshift_ansible.run_upgrade_playbook(verbose)
+    retcode = openshift_ansible.run_upgrade_playbook(old_version, new_version, verbose)
     if retcode > 0:
         click.echo("Errors encountered during upgrade, please check %s." %
             oo_cfg.settings['ansible_log_path'])

+ 9 - 3
utils/src/ooinstall/openshift_ansible.py

@@ -237,11 +237,17 @@ def run_uninstall_playbook(verbose=False):
     return run_ansible(playbook, inventory_file, facts_env, verbose)
 
 
-def run_upgrade_playbook(verbose=False):
+def run_upgrade_playbook(old_version, new_version, verbose=False):
     # TODO: do not hardcode the upgrade playbook, add ability to select the
     # right playbook depending on the type of upgrade.
-    playbook = os.path.join(CFG.settings['ansible_playbook_directory'],
-        'playbooks/byo/openshift-cluster/upgrades/v3_0_to_v3_1/upgrade.yml')
+    old_version = old_version.replace('.', '_')
+    new_version = old_version.replace('.', '_')
+    if old_version == new_version:
+        playbook = os.path.join(CFG.settings['ansible_playbook_directory'],
+            'playbooks/byo/openshift-cluster/upgrades/v{}_minor/upgrade.yml'.format(new_version))
+    else:
+        playbook = os.path.join(CFG.settings['ansible_playbook_directory'],
+            'playbooks/byo/openshift-cluster/upgrades/v{}_to_v{}/upgrade.yml'.format(old_version, new_version))
     # TODO: Upgrade inventory for upgrade?
     inventory_file = generate_inventory(CFG.hosts)
     facts_env = os.environ.copy()