From 3dd01cde89cc232a523a12d03d95f4b0e120f4e8 Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Tue, 18 Jan 2022 17:38:21 -0500 Subject: [PATCH] Avoid duplicated entries when calling create_preload_data --- .../commands/create_preload_data.py | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/awx/main/management/commands/create_preload_data.py b/awx/main/management/commands/create_preload_data.py index 220781e0d4..178be8ed1f 100644 --- a/awx/main/management/commands/create_preload_data.py +++ b/awx/main/management/commands/create_preload_data.py @@ -23,44 +23,50 @@ class Command(BaseCommand): with impersonate(superuser): with disable_computed_fields(): if not Organization.objects.exists(): - o = Organization.objects.create(name='Default') + o, _ = Organization.objects.get_or_create(name='Default') - p = Project( + p, _ = Project.objects.get_or_create( name='Demo Project', scm_type='git', scm_url='https://github.com/ansible/ansible-tower-samples', scm_update_on_launch=True, scm_update_cache_timeout=0, - organization=o, ) - p.save(skip_update=True) + p.organization = o + p.save() ssh_type = CredentialType.objects.filter(namespace='ssh').first() - c = Credential.objects.create( + c, _ = Credential.objects.get_or_create( credential_type=ssh_type, name='Demo Credential', inputs={'username': superuser.username}, created_by=superuser ) c.admin_role.members.add(superuser) - public_galaxy_credential = Credential( + public_galaxy_credential, _ = Credential.objects.get_or_create( name='Ansible Galaxy', managed=True, credential_type=CredentialType.objects.get(kind='galaxy'), inputs={'url': 'https://galaxy.ansible.com/'}, ) - public_galaxy_credential.save() o.galaxy_credentials.add(public_galaxy_credential) - i = Inventory.objects.create(name='Demo Inventory', organization=o, created_by=superuser) + i, _ = Inventory.objects.get_or_create(name='Demo Inventory', organization=o, created_by=superuser) - Host.objects.create( + Host.objects.get_or_create( name='localhost', inventory=i, variables="ansible_connection: local\nansible_python_interpreter: '{{ ansible_playbook_python }}'", created_by=superuser, ) - jt = JobTemplate.objects.create(name='Demo Job Template', playbook='hello_world.yml', project=p, inventory=i) + jt = JobTemplate.objects.filter(name='Demo Job Template').first() + if jt: + jt.project = p + jt.inventory = i + jt.playbook = 'hello_world.yml' + jt.save() + else: + jt, _ = JobTemplate.objects.get_or_create(name='Demo Job Template', playbook='hello_world.yml', project=p, inventory=i) jt.credentials.add(c) print('Default organization added.')