diff --git a/awx/main/management/commands/register_default_execution_environments.py b/awx/main/management/commands/register_default_execution_environments.py index faaa91ae29..67d101bba3 100644 --- a/awx/main/management/commands/register_default_execution_environments.py +++ b/awx/main/management/commands/register_default_execution_environments.py @@ -1,6 +1,8 @@ # Copyright (c) 2015 Ansible, Inc. # All Rights Reserved import sys +from distutils.util import strtobool +from argparse import RawTextHelpFormatter from django.core.management.base import BaseCommand from django.conf import settings @@ -16,6 +18,12 @@ class Command(BaseCommand): Note that settings.DEFAULT_EXECUTION_ENVIRONMENTS is and ordered list, the first in the list will be used for project updates and system jobs. """ + # Preserves newlines in the help text + def create_parser(self, *args, **kwargs): + parser = super(Command, self).create_parser(*args, **kwargs) + parser.formatter_class = RawTextHelpFormatter + return parser + def add_arguments(self, parser): parser.add_argument( "--registry-url", @@ -37,7 +45,7 @@ class Command(BaseCommand): ) parser.add_argument( "--verify-ssl", - type=bool, + type=lambda x: bool(strtobool(str(x))), default=True, help="Verify SSL when authenticating with the container registry", ) @@ -50,33 +58,36 @@ class Command(BaseCommand): if not options.get("registry_password"): sys.stderr.write("Registry password must be provided when providing registry username\n") sys.exit(1) + if not options.get("registry_url"): sys.stderr.write("Registry url must be provided when providing registry username\n") sys.exit(1) - registry_cred_inputs = { + + registry_cred_type = CredentialType.objects.filter(kind="registry") + if not registry_cred_type.exists(): + sys.stderr.write("No registry credential type found") + sys.exit(1) + + registry_cred, created = Credential.objects.get_or_create( + name="Default Execution Environment Registry Credential", managed_by_tower=True, credential_type=registry_cred_type[0] + ) + + if created: + print("Default Execution Environment Credential registered.") + + inputs = { "host": options.get("registry_url"), "password": options.get("registry_password"), "username": options.get("registry_username"), "verify_ssl": options.get("verify_ssl"), } - registry_cred_type = CredentialType.objects.filter(kind="registry") - if not registry_cred_type.exists(): - sys.stderr.write("No registry credential type found") - sys.exit(1) - registry_cred, created = Credential.objects.get_or_create( - name="Default Execution Environment Registry Credential", - managed_by_tower=True, - credential_type=registry_cred_type[0], - defaults={"inputs": registry_cred_inputs}, - ) - if created: - changed = True - print("Default Execution Environment Credential registered.") - elif registry_cred.inputs != registry_cred_inputs: - registry_cred.inputs = registry_cred_inputs - registry_cred.save() - changed = True - print("Default Execution Environment Credential updated.") + + registry_cred.inputs = inputs + registry_cred.save() + changed = True + + if not created: + print('Updated Default Execution Environment Credential') for ee in reversed(settings.DEFAULT_EXECUTION_ENVIRONMENTS): _, created = ExecutionEnvironment.objects.update_or_create(