mirror of
https://github.com/ansible/awx.git
synced 2026-02-24 14:36:00 -03:30
76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
from awxkit.utils import update_payload, PseudoNamespace
|
|
from awxkit.api.pages import Inventory, Credential
|
|
from awxkit.api.mixins import HasCreate, DSAdapter
|
|
from awxkit.utils import not_provided as np
|
|
from awxkit.api.resources import resources
|
|
|
|
from .jobs import UnifiedJob
|
|
from . import page
|
|
|
|
|
|
class AdHocCommand(HasCreate, UnifiedJob):
|
|
|
|
dependencies = [Inventory, Credential]
|
|
|
|
def relaunch(self, payload={}):
|
|
"""Relaunch the command using the related->relaunch endpoint"""
|
|
# navigate to relaunch_pg
|
|
relaunch_pg = self.get_related('relaunch')
|
|
|
|
# relaunch the command
|
|
result = relaunch_pg.post(payload)
|
|
|
|
# return the corresponding command_pg
|
|
return self.walk(result.url)
|
|
|
|
def payload(self, inventory, credential, module_name='ping', **kwargs):
|
|
payload = PseudoNamespace(inventory=inventory.id, credential=credential.id, module_name=module_name)
|
|
|
|
optional_fields = ('diff_mode', 'extra_vars', 'module_args', 'job_type', 'limit', 'forks', 'verbosity')
|
|
return update_payload(payload, optional_fields, kwargs)
|
|
|
|
def create_payload(self, module_name='ping', module_args=np, job_type=np, limit=np, verbosity=np, inventory=Inventory, credential=Credential, **kwargs):
|
|
|
|
self.create_and_update_dependencies(inventory, credential)
|
|
|
|
payload = self.payload(
|
|
module_name=module_name,
|
|
module_args=module_args,
|
|
job_type=job_type,
|
|
limit=limit,
|
|
verbosity=verbosity,
|
|
inventory=self.ds.inventory,
|
|
credential=self.ds.credential,
|
|
**kwargs
|
|
)
|
|
payload.ds = DSAdapter(self.__class__.__name__, self._dependency_store)
|
|
return payload
|
|
|
|
def create(self, module_name='ping', module_args=np, job_type=np, limit=np, verbosity=np, inventory=Inventory, credential=Credential, **kwargs):
|
|
|
|
payload = self.create_payload(
|
|
module_name=module_name,
|
|
module_args=module_args,
|
|
job_type=job_type,
|
|
limit=limit,
|
|
verbosity=verbosity,
|
|
inventory=inventory,
|
|
credential=credential,
|
|
**kwargs
|
|
)
|
|
return self.update_identity(AdHocCommands(self.connection).post(payload))
|
|
|
|
|
|
page.register_page([resources.ad_hoc_command], AdHocCommand)
|
|
|
|
|
|
class AdHocCommands(page.PageList, AdHocCommand):
|
|
|
|
pass
|
|
|
|
|
|
page.register_page(
|
|
[resources.ad_hoc_commands, resources.inventory_related_ad_hoc_commands, resources.group_related_ad_hoc_commands, resources.host_related_ad_hoc_commands],
|
|
AdHocCommands,
|
|
)
|