Avoid duplicated entries when calling create_preload_data

This commit is contained in:
Marcelo Moreira de Mello
2022-01-18 17:38:21 -05:00
parent 495394084d
commit 3dd01cde89

View File

@@ -23,44 +23,50 @@ class Command(BaseCommand):
with impersonate(superuser): with impersonate(superuser):
with disable_computed_fields(): with disable_computed_fields():
if not Organization.objects.exists(): 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', name='Demo Project',
scm_type='git', scm_type='git',
scm_url='https://github.com/ansible/ansible-tower-samples', scm_url='https://github.com/ansible/ansible-tower-samples',
scm_update_on_launch=True, scm_update_on_launch=True,
scm_update_cache_timeout=0, 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() 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 credential_type=ssh_type, name='Demo Credential', inputs={'username': superuser.username}, created_by=superuser
) )
c.admin_role.members.add(superuser) c.admin_role.members.add(superuser)
public_galaxy_credential = Credential( public_galaxy_credential, _ = Credential.objects.get_or_create(
name='Ansible Galaxy', name='Ansible Galaxy',
managed=True, managed=True,
credential_type=CredentialType.objects.get(kind='galaxy'), credential_type=CredentialType.objects.get(kind='galaxy'),
inputs={'url': 'https://galaxy.ansible.com/'}, inputs={'url': 'https://galaxy.ansible.com/'},
) )
public_galaxy_credential.save()
o.galaxy_credentials.add(public_galaxy_credential) 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', name='localhost',
inventory=i, inventory=i,
variables="ansible_connection: local\nansible_python_interpreter: '{{ ansible_playbook_python }}'", variables="ansible_connection: local\nansible_python_interpreter: '{{ ansible_playbook_python }}'",
created_by=superuser, 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) jt.credentials.add(c)
print('Default organization added.') print('Default organization added.')