Преглед на файлове

Add uninstall subcommand.

Devan Goodwin преди 9 години
родител
ревизия
201fd2f37d
променени са 2 файла, в които са добавени 28 реда и са изтрити 4 реда
  1. 17 4
      utils/src/ooinstall/cli_installer.py
  2. 11 0
      utils/src/ooinstall/install_transactions.py

+ 17 - 4
utils/src/ooinstall/cli_installer.py

@@ -431,16 +431,30 @@ def cli(ctx, unattended, configuration, ansible_playbook_directory, ansible_conf
     oo_cfg.settings['ansible_log_path'] = ctx.obj['ansible_log_path']
 
     ctx.obj['oo_cfg'] = oo_cfg
+    install_transactions.set_config(oo_cfg)
 
 
 @click.command()
 @click.pass_context
 def uninstall(ctx):
-    #oo_cfg = ctx.obj['oo_cfg']
-    click.echo("Running uninstall command.")
+    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 uninstalled from the following hosts:\n")
     if not ctx.obj['unattended']:
         # Prompt interactively to confirm:
-        pass
+        for host in oo_cfg.hosts:
+            click.echo("  * %s" % host.name)
+        proceed = click.confirm("\nDo you wish to proceed?")
+        if not proceed:
+            click.echo("Uninstall cancelled.")
+            sys.exit(0)
+
+    install_transactions.run_uninstall_playbook()
+
 
 
 @click.command()
@@ -448,7 +462,6 @@ def uninstall(ctx):
 @click.pass_context
 def install(ctx, force):
     oo_cfg = ctx.obj['oo_cfg']
-    install_transactions.set_config(oo_cfg)
 
     if ctx.obj['unattended']:
         error_if_missing_info(oo_cfg)

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

@@ -126,9 +126,20 @@ def run_main_playbook(hosts, hosts_to_run_on):
         facts_env['ANSIBLE_CONFIG'] = CFG.settings['ansible_config']
     return run_ansible(main_playbook_path, inventory_file, facts_env)
 
+
 def run_ansible(playbook, inventory, env_vars):
     return subprocess.call(['ansible-playbook',
                              '--inventory-file={}'.format(inventory),
                              playbook],
                              env=env_vars)
 
+def run_uninstall_playbook():
+    playbook = os.path.join(CFG.settings['ansible_playbook_directory'],
+        'playbooks/adhoc/uninstall.yml')
+    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)