mirror of
https://github.com/ZwareBear/awx.git
synced 2026-04-03 14:41:49 -05:00
This change adds related Labels to the Workflow Job Template document that is exported by the AWX CLI. Previously, exporting and then importing Workflow Job Templates would not retain their related Labels.
70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
from awxkit.utils import random_title, PseudoNamespace
|
|
from awxkit.api.mixins import HasCreate, DSAdapter
|
|
from awxkit.api.resources import resources
|
|
from awxkit.api.pages import Organization
|
|
from . import base
|
|
from . import page
|
|
|
|
|
|
class Label(HasCreate, base.Base):
|
|
|
|
dependencies = [Organization]
|
|
NATURAL_KEY = ('organization', 'name')
|
|
|
|
def silent_delete(self):
|
|
"""Label pages do not support DELETE requests. Here, we override the base page object
|
|
silent_delete method to account for this.
|
|
"""
|
|
pass
|
|
|
|
def payload(self, organization, **kwargs):
|
|
payload = PseudoNamespace(
|
|
name=kwargs.get('name') or 'Label - {}'.format(
|
|
random_title()),
|
|
description=kwargs.get('description') or random_title(10),
|
|
organization=organization.id)
|
|
return payload
|
|
|
|
def create_payload(
|
|
self,
|
|
name='',
|
|
description='',
|
|
organization=Organization,
|
|
**kwargs):
|
|
self.create_and_update_dependencies(organization)
|
|
payload = self.payload(
|
|
organization=self.ds.organization,
|
|
name=name,
|
|
description=description,
|
|
**kwargs)
|
|
payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store)
|
|
return payload
|
|
|
|
def create(
|
|
self,
|
|
name='',
|
|
description='',
|
|
organization=Organization,
|
|
**kwargs):
|
|
payload = self.create_payload(
|
|
name=name,
|
|
description=description,
|
|
organization=organization,
|
|
**kwargs)
|
|
return self.update_identity(Labels(self.connection).post(payload))
|
|
|
|
|
|
page.register_page([resources.label,
|
|
(resources.labels, 'post')], Label)
|
|
|
|
|
|
class Labels(page.PageList, Label):
|
|
|
|
pass
|
|
|
|
|
|
page.register_page([resources.labels,
|
|
resources.job_labels,
|
|
resources.job_template_labels,
|
|
resources.workflow_job_template_labels], Labels)
|