Browse Source

Block upgrade if targetting enterprise deployment type.

enterprise is being phased out in favor of openshift-enterprise, you need to
specify where you wish to go.
Devan Goodwin 9 years ago
parent
commit
7197aba51d

+ 8 - 0
playbooks/adhoc/upgrades/upgrade.yml

@@ -1,4 +1,12 @@
 ---
+- name: Verify deployment type
+  hosts: masters
+  tasks:
+  # Checking the global deployment type rather than host facts, this is about
+  # what the user is requesting.
+    - fail: msg="Deployment type enterprise not supported for upgrade"
+      when: deployment_type == "enterprise"
+
 - name: Re-Run cluster configuration to apply latest configuration changes
   include: ../../common/openshift-cluster/config.yml
   vars:

+ 21 - 0
utils/src/ooinstall/cli_installer.py

@@ -459,6 +459,26 @@ def uninstall(ctx):
     install_transactions.run_uninstall_playbook()
 
 
+@click.command()
+@click.pass_context
+def upgrade(ctx):
+    oo_cfg = ctx.obj['oo_cfg']
+
+    if len(oo_cfg.hosts) == 0:
+        click.echo("No hosts defined in: %s" % oo_cfg['configuration'])
+        sys.exit(1)
+
+    click.echo("OpenShift will be upgraded on the following hosts:\n")
+    if not ctx.obj['unattended']:
+        # Prompt interactively to confirm:
+        for host in oo_cfg.hosts:
+            click.echo("  * %s" % host.name)
+        proceed = click.confirm("\nDo you wish to proceed?")
+        if not proceed:
+            click.echo("Upgrade cancelled.")
+            sys.exit(0)
+    install_transactions.run_upgrade_playbook()
+
 
 @click.command()
 @click.option('--force', '-f', is_flag=True, default=False)
@@ -523,6 +543,7 @@ http://docs.openshift.com/enterprise/latest/admin_guide/overview.html
         click.pause()
 
 cli.add_command(install)
+cli.add_command(upgrade)
 cli.add_command(uninstall)
 
 if __name__ == '__main__':

+ 12 - 0
utils/src/ooinstall/install_transactions.py

@@ -143,3 +143,15 @@ def run_uninstall_playbook():
     if 'ansible_config' in CFG.settings:
         facts_env['ANSIBLE_CONFIG'] = CFG.settings['ansible_config']
     return run_ansible(playbook, inventory_file, facts_env)
+
+def run_upgrade_playbook():
+    playbook = os.path.join(CFG.settings['ansible_playbook_directory'],
+        'playbooks/adhoc/upgrades/upgrade.yml')
+    # TODO: Upgrade inventory for upgrade?
+    inventory_file = generate_inventory(CFG.hosts)
+    facts_env = os.environ.copy()
+    if 'ansible_log_path' in CFG.settings:
+        facts_env['ANSIBLE_LOG_PATH'] = CFG.settings['ansible_log_path']
+    if 'ansible_config' in CFG.settings:
+        facts_env['ANSIBLE_CONFIG'] = CFG.settings['ansible_config']
+    return run_ansible(playbook, inventory_file, facts_env)