mirror of
https://github.com/ansible/tower-cli.git
synced 2026-02-06 00:48:50 +01:00
Fixed displaying name of credential when saying that its managed by Tower Added schedule checking Now looks at custom credential types trying to find required password and applies password rules to them
63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
import click
|
|
from tower_cli.cli.transfer import common
|
|
from tower_cli.cli.transfer.logging_command import LoggingCommand
|
|
from tower_cli.exceptions import TowerCLIError
|
|
import tower_cli
|
|
|
|
|
|
class Cleaner(LoggingCommand):
|
|
|
|
def __init__(self, no_color):
|
|
self.no_color = no_color
|
|
|
|
def go_ham(self, all=False, asset_input=None):
|
|
stdout = click.get_text_stream('stdout')
|
|
stdin = click.get_text_stream('stdin')
|
|
|
|
assets_from_input = common.get_assets_from_input(all, asset_input)
|
|
|
|
stdout.write("Please confirm that you want to clean the Tower instance by typing 'YES': ")
|
|
response = stdin.readline()
|
|
|
|
if response.strip() != 'YES':
|
|
stdout.write("\nAborting request to empty the instance\n")
|
|
return
|
|
|
|
self.print_intro()
|
|
|
|
for asset_type in common.SEND_ORDER[::-1]:
|
|
if asset_type not in assets_from_input:
|
|
continue
|
|
|
|
identifier = common.get_identity(asset_type)
|
|
|
|
assets_to_remove = []
|
|
if assets_from_input[asset_type]['all']:
|
|
resources = tower_cli.get_resource(asset_type).list(all_pages=True)
|
|
if 'results' not in resources:
|
|
continue
|
|
assets_to_remove = assets_to_remove + resources['results']
|
|
else:
|
|
for name in assets_from_input[asset_type]['names']:
|
|
try:
|
|
resource = tower_cli.get_resource(asset_type).get(**{identifier: name})
|
|
assets_to_remove.append(resource)
|
|
except TowerCLIError:
|
|
self.print_header_row(asset_type, name)
|
|
self.log_ok("Asset does not exist")
|
|
|
|
for asset in assets_to_remove:
|
|
self.print_header_row(asset_type, asset[identifier])
|
|
|
|
if 'managed_by_tower' in asset and asset['managed_by_tower']:
|
|
self.log_warn("{} is managed by tower and can not be deleted".format(asset[identifier]))
|
|
continue
|
|
|
|
try:
|
|
tower_cli.get_resource(asset_type).delete(asset['id'])
|
|
self.log_change("Asset removed")
|
|
except Exception as e:
|
|
self.log_error("Unable to delete : {}".format(e))
|
|
|
|
self.print_recap()
|