mirror of
https://github.com/ansible/awx.git
synced 2026-05-09 18:37:36 -02:30
Add support for instance_groups and labels on schedule create
This commit is contained in:
@@ -3218,13 +3218,12 @@ class JobCreateScheduleSerializer(LabelsListMixin, BaseSerializer):
|
|||||||
try:
|
try:
|
||||||
config = obj.launch_config
|
config = obj.launch_config
|
||||||
ret = config.prompts_dict(display=True)
|
ret = config.prompts_dict(display=True)
|
||||||
if 'inventory' in ret:
|
for field_name in ('inventory', 'execution_environment'):
|
||||||
ret['inventory'] = self._summarize('inventory', ret['inventory'])
|
if field_name in ret:
|
||||||
if 'execution_environment' in ret:
|
ret[field_name] = self._summarize(field_name, ret[field_name])
|
||||||
ret['execution_environment'] = self._summarize('execution_environment', ret['execution_environment'])
|
for field_name, singular in (('credentials', 'credential'), ('instance_groups', 'instance_group')):
|
||||||
if 'credentials' in ret:
|
if field_name in ret:
|
||||||
all_creds = [self._summarize('credential', cred) for cred in ret['credentials']]
|
ret[field_name] = [self._summarize(singular, cred) for cred in ret[field_name]]
|
||||||
ret['credentials'] = all_creds
|
|
||||||
if 'labels' in ret:
|
if 'labels' in ret:
|
||||||
ret['labels'] = self._summary_field_labels(obj)
|
ret['labels'] = self._summary_field_labels(obj)
|
||||||
return ret
|
return ret
|
||||||
|
|||||||
@@ -3728,13 +3728,18 @@ class JobCreateSchedule(RetrieveAPIView):
|
|||||||
inventory=config.inventory,
|
inventory=config.inventory,
|
||||||
char_prompts=config.char_prompts,
|
char_prompts=config.char_prompts,
|
||||||
credentials=set(config.credentials.all()),
|
credentials=set(config.credentials.all()),
|
||||||
|
labels=set(config.labels.all()),
|
||||||
|
instance_groups=list(config.instance_groups.all()),
|
||||||
)
|
)
|
||||||
if not request.user.can_access(models.Schedule, 'add', schedule_data):
|
if not request.user.can_access(models.Schedule, 'add', schedule_data):
|
||||||
raise PermissionDenied()
|
raise PermissionDenied()
|
||||||
|
|
||||||
creds_list = schedule_data.pop('credentials')
|
related_fields = ('credentials', 'labels', 'instance_groups')
|
||||||
|
related = [schedule_data.pop(relationship) for relationship in related_fields]
|
||||||
schedule = models.Schedule.objects.create(**schedule_data)
|
schedule = models.Schedule.objects.create(**schedule_data)
|
||||||
schedule.credentials.add(*creds_list)
|
for relationship, items in zip(related_fields, related):
|
||||||
|
for item in items:
|
||||||
|
getattr(schedule, relationship).add(item)
|
||||||
|
|
||||||
data = serializers.ScheduleSerializer(schedule, context=self.get_serializer_context()).data
|
data = serializers.ScheduleSerializer(schedule, context=self.get_serializer_context()).data
|
||||||
data.serializer.instance = None # hack to avoid permissions.py assuming this is Job model
|
data.serializer.instance = None # hack to avoid permissions.py assuming this is Job model
|
||||||
|
|||||||
Reference in New Issue
Block a user