diff --git a/awx/ui/client/src/templates/job_templates/add-job-template/job-template-add.controller.js b/awx/ui/client/src/templates/job_templates/add-job-template/job-template-add.controller.js index bb3891278f..561d7581f1 100644 --- a/awx/ui/client/src/templates/job_templates/add-job-template/job-template-add.controller.js +++ b/awx/ui/client/src/templates/job_templates/add-job-template/job-template-add.controller.js @@ -39,6 +39,7 @@ $scope.can_edit = true; $scope.allow_callbacks = false; $scope.playbook_options = []; + $scope.webhook_service_options = []; $scope.mode = "add"; $scope.parseType = 'yaml'; $scope.credentialNotPresent = false; @@ -131,6 +132,14 @@ multiple: false, opts: $scope.custom_virtualenvs_options }); + CreateSelect2({ + element:'#webhook-service-select', + addNew: false, + multiple: false, + scope: $scope, + options: 'webhook_service_options', + model: 'webhook_service' + }); } }); @@ -151,7 +160,13 @@ variable: 'job_type_options', callback: 'choicesReadyVerbosity' }); - + GetChoices({ + scope: $scope, + url: defaultUrl, + field: 'webhook_service', + variable: 'webhook_service_options', + callback: 'choicesReadyVerbosity' + }); $scope.labelOptions = availableLabels .map((i) => ({label: i.name, value: i.id})); $scope.$emit("choicesReadyVerbosity"); diff --git a/awx/ui/client/src/templates/job_templates/edit-job-template/job-template-edit.controller.js b/awx/ui/client/src/templates/job_templates/edit-job-template/job-template-edit.controller.js index 4512dfd622..3d76ebd3ee 100644 --- a/awx/ui/client/src/templates/job_templates/edit-job-template/job-template-edit.controller.js +++ b/awx/ui/client/src/templates/job_templates/edit-job-template/job-template-edit.controller.js @@ -61,7 +61,9 @@ export default $scope.sufficientRoleForNotifToggle = isNotificationAdmin; $scope.sufficientRoleForNotif = isNotificationAdmin || $scope.user_is_system_auditor; $scope.playbook_options = null; + $scope.webhook_service_options = null; $scope.playbook = null; + $scope.webhook_service = null; $scope.mode = 'edit'; $scope.parseType = 'yaml'; $scope.showJobType = false; @@ -177,6 +179,7 @@ export default // watch for changes to 'verbosity', ensure we keep our select2 in sync when it changes. $scope.$watch('verbosity', sync_verbosity_select2); + $scope.$watch('webhook_service', sync_webhook_service_select2); } callback = function() { @@ -202,7 +205,19 @@ export default })); } + function sync_webhook_service_select2() { + select2LoadDefer.push(CreateSelect2({ + element:'#webhook-service-select', + addNew: false, + multiple: false, + scope: $scope, + options: 'webhook_service_options', + model: 'webhook_service' + })); + } + function jobTemplateLoadFinished(){ + //$scope.webhook_service = jobTemplateData.webhook_service; select2LoadDefer.push(CreateSelect2({ element:'#job_template_job_type', multiple: false @@ -225,6 +240,14 @@ export default multiple: false, opts: $scope.custom_virtualenvs_options })); + select2LoadDefer.push(CreateSelect2({ + element:'#webhook-service-select', + addNew: false, + multiple: false, + scope: $scope, + options: 'webhook_service_options', + model: 'webhook_service' + })); if (!launchHasBeenEnabled) { $q.all(select2LoadDefer).then(() => { @@ -498,6 +521,14 @@ export default callback: 'choicesReady' }); + GetChoices({ + scope: $scope, + url: defaultUrl, + field: 'webhook_service', + variable: 'webhook_service_options', + callback: 'choicesReady' + }); + $scope.labelOptions = availableLabels .map((i) => ({label: i.name, value: i.id})); diff --git a/awx/ui/client/src/templates/job_templates/job-template.form.js b/awx/ui/client/src/templates/job_templates/job-template.form.js index 83b2d953eb..fb29d0b1fd 100644 --- a/awx/ui/client/src/templates/job_templates/job-template.form.js +++ b/awx/ui/client/src/templates/job_templates/job-template.form.js @@ -391,6 +391,21 @@ function(NotificationsList, i18n) { alwaysShowAsterisk: true } }, + webhook_service: { + label: i18n._('Webhook Service'), + type:'select', + defaultText: i18n._('Choose a Webhook Service'), + ngOptions: 'svc.label for svc in webhook_service_options track by svc.value', + ngShow: true, + ngDisabled: "!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate) || !canGetAllRelatedResources", + id: 'webhook-service-select', + required: false, + column: 1, + awPopOver: "

" + i18n._("Select a webhook service.") + "

", + dataTitle: i18n._('Webhook Service'), + dataPlacement: 'right', + dataContainer: "body", + }, extra_vars: { label: i18n._('Extra Variables'), type: 'textarea',