From d44d28beba4b12744395634697e7e7bd890599fc Mon Sep 17 00:00:00 2001 From: mabashian Date: Mon, 23 Apr 2018 15:27:52 -0400 Subject: [PATCH] Populate JT schedule add with default extra vars when promptable. Hide schedule vars for everything except JT's with promptable extra vars --- .../src/scheduler/schedulerAdd.controller.js | 46 +++++++++---------- .../src/scheduler/schedulerEdit.controller.js | 45 +++++++++--------- 2 files changed, 42 insertions(+), 49 deletions(-) diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index 4e34389a7e..347aab9727 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -89,7 +89,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', // extra_data field is not manifested in the UI when scheduling a Management Job if ($state.current.name === 'jobTemplateSchedules.add'){ $scope.parseType = 'yaml'; - $scope.extraVars = '---'; + $scope.extraVars = ParentObject.extra_vars === '' ? '---' : ParentObject.extra_vars; ParseTypeChange({ scope: $scope, @@ -114,20 +114,20 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', $scope.$watchGroup(promptValuesToWatch, function() { let missingPromptValue = false; - if($scope.missingSurveyValue) { + if ($scope.missingSurveyValue) { missingPromptValue = true; - } else if(!$scope.promptData.prompts.inventory.value || !$scope.promptData.prompts.inventory.value.id) { + } else if (!$scope.promptData.prompts.inventory.value || !$scope.promptData.prompts.inventory.value.id) { missingPromptValue = true; } $scope.promptModalMissingReqFields = missingPromptValue; }); }; - if(!launchConf.ask_variables_on_launch) { + if (!launchConf.ask_variables_on_launch) { $scope.noVars = true; } - if(!launchConf.survey_enabled && + if (!launchConf.survey_enabled && !launchConf.ask_inventory_on_launch && !launchConf.ask_credential_on_launch && !launchConf.ask_verbosity_on_launch && @@ -149,11 +149,11 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', // Promptable variables will happen in the schedule form launchConf.ignore_ask_variables = true; - if(launchConf.ask_inventory_on_launch && !_.has(launchConf, 'defaults.inventory')) { + if (launchConf.ask_inventory_on_launch && !_.has(launchConf, 'defaults.inventory')) { $scope.promptModalMissingReqFields = true; } - if(launchConf.survey_enabled) { + if (launchConf.survey_enabled) { // go out and get the survey questions jobTemplate.getSurveyQuestions(ParentObject.id) .then((surveyQuestionRes) => { @@ -178,7 +178,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', $scope.$watch('promptData.surveyQuestions', () => { let missingSurveyValue = false; _.each($scope.promptData.surveyQuestions, (question) => { - if(question.required && (Empty(question.model) || question.model === [])) { + if (question.required && (Empty(question.model) || question.model === [])) { missingSurveyValue = true; } }); @@ -187,8 +187,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', watchForPromptChanges(); }); - } - else { + } else { $scope.promptData = { launchConf: responses[1].data, launchOptions: responses[0].data, @@ -272,18 +271,18 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', } }); } - else if ($state.current.name === 'projectSchedules.add'){ - $scope.noVars = true; - } - else if ($state.current.name === 'inventories.edit.inventory_sources.edit.schedules.add'){ + + if ($state.current.name === 'workflowJobTemplateSchedules.add' || + $state.current.name === 'projectSchedules.add' || + $state.current.name === 'inventories.edit.inventory_sources.edit.schedules.add' + ){ $scope.noVars = true; } job_type = $scope.parentObject.job_type; if (!Empty($stateParams.id) && base !== 'system_job_templates' && base !== 'inventories' && !schedule_url) { schedule_url = GetBasePath(base) + $stateParams.id + '/schedules/'; - } - else if(base === "inventories"){ + } else if (base === "inventories"){ if (!schedule_url){ Rest.setUrl(GetBasePath('groups') + $stateParams.id + '/'); Rest.get() @@ -297,10 +296,9 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', }); }); } - } - else if (base === 'system_job_templates') { + } else if (base === 'system_job_templates') { schedule_url = GetBasePath(base) + $stateParams.id + '/schedules/'; - if(job_type === "cleanup_facts"){ + if (job_type === "cleanup_facts"){ $scope.isFactCleanup = true; $scope.keep_unit_choices = [{ "label" : "Days", @@ -330,8 +328,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', $scope.prompt_for_days_facts_form.granularity_keep_amount.$setViewValue(1); $scope.keep_unit = $scope.keep_unit_choices[0]; $scope.granularity_keep_unit = $scope.granularity_keep_unit_choices[1]; - } - else { + } else { $scope.cleanupJob = true; } } @@ -350,15 +347,14 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', }); $scope.scheduleTimeChange(); }); - if($scope.schedulerUTCTime) { + if ($scope.schedulerUTCTime) { // The UTC time is already set processSchedulerEndDt(); - } - else { + } else { // We need to wait for it to be set by angular-scheduler because the following function depends // on it var schedulerUTCTimeWatcher = $scope.$watch('schedulerUTCTime', function(newVal) { - if(newVal) { + if (newVal) { // Remove the watcher schedulerUTCTimeWatcher(); processSchedulerEndDt(); diff --git a/awx/ui/client/src/scheduler/schedulerEdit.controller.js b/awx/ui/client/src/scheduler/schedulerEdit.controller.js index f82d89cd46..11edac1c29 100644 --- a/awx/ui/client/src/scheduler/schedulerEdit.controller.js +++ b/awx/ui/client/src/scheduler/schedulerEdit.controller.js @@ -127,7 +127,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment, $scope.extraVars = (data.extra_data === '' || _.isEmpty(data.extra_data)) ? '---' : '---\n' + jsyaml.safeDump(data.extra_data); - if(schedule.extra_data.hasOwnProperty('granularity')){ + if (schedule.extra_data.hasOwnProperty('granularity')){ $scope.isFactCleanup = true; } if (schedule.extra_data.hasOwnProperty('days')){ @@ -196,16 +196,15 @@ function($filter, $state, $stateParams, Wait, $scope, moment, scheduler.setRRule(schedule.rrule); scheduler.setName(schedule.name); - if($scope.isFactCleanup || $scope.cleanupJob){ + if ($scope.isFactCleanup || $scope.cleanupJob){ var a,b, prompt_for_days, keep_unit, granularity, granularity_keep_unit; - if($scope.cleanupJob){ + if ($scope.cleanupJob){ $scope.schedulerPurgeDays = Number(schedule.extra_data.days); - } - else if($scope.isFactCleanup){ + } else if ($scope.isFactCleanup){ $scope.keep_unit_choices = [{ "label" : "Days", "value" : "d" @@ -272,9 +271,9 @@ function($filter, $state, $stateParams, Wait, $scope, moment, $scope.$watchGroup(promptValuesToWatch, function() { let missingPromptValue = false; - if($scope.missingSurveyValue) { + if ($scope.missingSurveyValue) { missingPromptValue = true; - } else if(!$scope.promptData.prompts.inventory.value || !$scope.promptData.prompts.inventory.value.id) { + } else if (!$scope.promptData.prompts.inventory.value || !$scope.promptData.prompts.inventory.value.id) { missingPromptValue = true; } $scope.promptModalMissingReqFields = missingPromptValue; @@ -292,8 +291,8 @@ function($filter, $state, $stateParams, Wait, $scope, moment, const credentialHasScheduleOverride = (templateDefaultCred) => { let credentialHasOverride = false; scheduleCredentials.forEach((scheduleCred) => { - if(templateDefaultCred.credential_type === scheduleCred.credential_type) { - if( + if (templateDefaultCred.credential_type === scheduleCred.credential_type) { + if ( (!templateDefaultCred.vault_id && !scheduleCred.inputs.vault_id) || (templateDefaultCred.vault_id && scheduleCred.inputs.vault_id && templateDefaultCred.vault_id === scheduleCred.inputs.vault_id) ) { @@ -305,9 +304,9 @@ function($filter, $state, $stateParams, Wait, $scope, moment, return credentialHasOverride; }; - if(_.has(launchConf, 'defaults.credentials')) { + if (_.has(launchConf, 'defaults.credentials')) { launchConf.defaults.credentials.forEach((defaultCred) => { - if(!credentialHasScheduleOverride(defaultCred)) { + if (!credentialHasScheduleOverride(defaultCred)) { defaultCredsWithoutOverrides.push(defaultCred); } }); @@ -315,11 +314,11 @@ function($filter, $state, $stateParams, Wait, $scope, moment, prompts.credentials.value = defaultCredsWithoutOverrides.concat(scheduleCredentials); - if(!launchConf.ask_variables_on_launch) { + if (!launchConf.ask_variables_on_launch) { $scope.noVars = true; } - if(!launchConf.survey_enabled && + if (!launchConf.survey_enabled && !launchConf.ask_inventory_on_launch && !launchConf.ask_credential_on_launch && !launchConf.ask_verbosity_on_launch && @@ -341,11 +340,11 @@ function($filter, $state, $stateParams, Wait, $scope, moment, // Promptable variables will happen in the schedule form launchConf.ignore_ask_variables = true; - if(launchConf.ask_inventory_on_launch && !_.has(launchConf, 'defaults.inventory') && !_.has(data, 'summary_fields.inventory')) { + if (launchConf.ask_inventory_on_launch && !_.has(launchConf, 'defaults.inventory') && !_.has(data, 'summary_fields.inventory')) { $scope.promptModalMissingReqFields = true; } - if(responses[1].data.survey_enabled) { + if (responses[1].data.survey_enabled) { // go out and get the survey questions jobTemplate.getSurveyQuestions(ParentObject.id) .then((surveyQuestionRes) => { @@ -378,7 +377,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment, $scope.$watch('promptData.surveyQuestions', () => { let missingSurveyValue = false; _.each($scope.promptData.surveyQuestions, (question) => { - if(question.required && (Empty(question.model) || question.model === [])) { + if (question.required && (Empty(question.model) || question.model === [])) { missingSurveyValue = true; } }); @@ -387,8 +386,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment, watchForPromptChanges(); }); - } - else { + } else { $scope.promptData = { launchConf: launchConf, launchOptions: launchOptions, @@ -472,13 +470,12 @@ function($filter, $state, $stateParams, Wait, $scope, moment, // extra_data field is not manifested in the UI when scheduling a Management Job if ($state.current.name !== 'managementJobsList.schedule.add' && $state.current.name !== 'managementJobsList.schedule.edit'){ - if ($state.current.name === 'projectSchedules.edit'){ + if ($state.current.name === 'projectSchedules.edit' || + $state.current.name === 'inventories.edit.inventory_sources.edit.schedules.edit' || + $state.current.name === 'workflowJobTemplateSchedules.add' + ){ $scope.noVars = true; - } - else if ($state.current.name === 'inventories.edit.inventory_sources.edit.schedules.edit'){ - $scope.noVars = true; - } - else { + } else { ParseTypeChange({ scope: $scope, variable: 'extraVars',