diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 531c6a869b..b7e5e1a62c 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -3599,7 +3599,7 @@ class WorkflowJobTemplateSerializer(JobTemplateMixin, LabelsListMixin, UnifiedJo class Meta: model = WorkflowJobTemplate fields = ('*', 'extra_vars', 'organization', 'survey_enabled', 'allow_simultaneous', - 'ask_variables_on_launch',) + 'ask_variables_on_launch', 'inventory', 'ask_inventory_on_launch',) def get_related(self, obj): res = super(WorkflowJobTemplateSerializer, self).get_related(obj) @@ -3643,7 +3643,8 @@ class WorkflowJobSerializer(LabelsListMixin, UnifiedJobSerializer): model = WorkflowJob fields = ('*', 'workflow_job_template', 'extra_vars', 'allow_simultaneous', 'job_template', 'is_sliced_job', - '-execution_node', '-event_processing_finished', '-controller_node',) + '-execution_node', '-event_processing_finished', '-controller_node', + 'inventory',) def get_related(self, obj): res = super(WorkflowJobSerializer, self).get_related(obj) diff --git a/awx/main/migrations/0050_v340_workflow_inventory.py b/awx/main/migrations/0050_v340_workflow_inventory.py new file mode 100644 index 0000000000..9d5e6a2cd5 --- /dev/null +++ b/awx/main/migrations/0050_v340_workflow_inventory.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.11 on 2018-09-27 18:47 +from __future__ import unicode_literals + +import awx.main.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0049_v330_validate_instance_capacity_adjustment'), + ] + + operations = [ + migrations.AddField( + model_name='workflowjob', + name='inventory', + field=models.ForeignKey(blank=True, default=None, help_text='Inventory applied to all job templates in workflow that prompt for inventory.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workflowjobs', to='main.Inventory'), + ), + migrations.AddField( + model_name='workflowjobtemplate', + name='ask_inventory_on_launch', + field=awx.main.fields.AskForField(default=False), + ), + migrations.AddField( + model_name='workflowjobtemplate', + name='inventory', + field=models.ForeignKey(blank=True, default=None, help_text='Inventory applied to all job templates in workflow that prompt for inventory.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='workflowjobtemplates', to='main.Inventory'), + ), + ] diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index ae4e6f431b..e774469216 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -34,7 +34,7 @@ from awx.main.models.notifications import ( JobNotificationMixin, ) from awx.main.utils import parse_yaml_or_json, getattr_dne -from awx.main.fields import ImplicitRoleField +from awx.main.fields import ImplicitRoleField, JSONField, AskForField from awx.main.models.mixins import ( ResourceMixin, SurveyJobTemplateMixin, @@ -43,7 +43,6 @@ from awx.main.models.mixins import ( CustomVirtualEnvMixin, RelatedJobsMixin, ) -from awx.main.fields import JSONField, AskForField logger = logging.getLogger('awx.main.models.jobs') diff --git a/awx/main/models/workflow.py b/awx/main/models/workflow.py index 1f1d776bd4..70a736e07d 100644 --- a/awx/main/models/workflow.py +++ b/awx/main/models/workflow.py @@ -24,7 +24,7 @@ from awx.main.models.rbac import ( ROLE_SINGLETON_SYSTEM_ADMINISTRATOR, ROLE_SINGLETON_SYSTEM_AUDITOR ) -from awx.main.fields import ImplicitRoleField +from awx.main.fields import ImplicitRoleField, AskForField from awx.main.models.mixins import ( ResourceMixin, SurveyJobTemplateMixin, @@ -280,6 +280,15 @@ class WorkflowJobOptions(BaseModel): allow_simultaneous = models.BooleanField( default=False ) + inventory = models.ForeignKey( + 'Inventory', + related_name='%(class)ss', + blank=True, + null=True, + default=None, + on_delete=models.SET_NULL, + help_text=_('Inventory applied to all job templates in workflow that prompt for inventory.'), + ) extra_vars_dict = VarsDictProperty('extra_vars', True) @@ -342,6 +351,10 @@ class WorkflowJobTemplate(UnifiedJobTemplate, WorkflowJobOptions, SurveyJobTempl on_delete=models.SET_NULL, related_name='workflows', ) + ask_inventory_on_launch = AskForField( + blank=True, + default=False, + ) admin_role = ImplicitRoleField(parent_role=[ 'singleton:' + ROLE_SINGLETON_SYSTEM_ADMINISTRATOR, 'organization.workflow_admin_role'