From 82f2783c979f32fcc2061a3e8f66067ed18a363a Mon Sep 17 00:00:00 2001 From: mabashian Date: Tue, 24 Apr 2018 10:26:54 -0400 Subject: [PATCH 1/3] Mark prompt strings for translation --- awx/ui/client/features/templates/templates.strings.js | 2 ++ awx/ui/client/src/scheduler/schedulerAdd.controller.js | 6 ++++-- awx/ui/client/src/scheduler/schedulerEdit.controller.js | 6 ++++-- awx/ui/client/src/scheduler/schedulerForm.partial.html | 2 +- .../steps/other-prompts/prompt-other-prompts.partial.html | 2 +- .../workflows/workflow-maker/workflow-maker.controller.js | 2 ++ .../workflows/workflow-maker/workflow-maker.partial.html | 2 +- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/awx/ui/client/features/templates/templates.strings.js b/awx/ui/client/features/templates/templates.strings.js index f275e522a0..896cfd87bd 100644 --- a/awx/ui/client/features/templates/templates.strings.js +++ b/awx/ui/client/features/templates/templates.strings.js @@ -28,6 +28,7 @@ function TemplatesStrings (BaseString) { SURVEY: t.s('Survey'), PREVIEW: t.s('Preview'), LAUNCH: t.s('LAUNCH'), + CONFIRM: t.s('CONFIRM'), SELECTED: t.s('SELECTED'), NO_CREDENTIALS_SELECTED: t.s('No credentials selected'), NO_INVENTORY_SELECTED: t.s('No inventory selected'), @@ -51,6 +52,7 @@ function TemplatesStrings (BaseString) { CHOOSE_JOB_TYPE: t.s('Choose a job type'), CHOOSE_VERBOSITY: t.s('Choose a verbosity'), EXTRA_VARIABLES: t.s('Extra Variables'), + EXTRA_VARIABLES_HELP: t.s('

Pass extra command line variables to the playbook. This is the -e or --extra-vars command line parameter for ansible-playbook. Provide key/value pairs using either YAML or JSON.

JSON:
{
"somevar": "somevalue",
"password": "magic"
}
YAML:
---
somevar: somevalue
password: magic
'), PLEASE_ENTER_ANSWER: t.s('Please enter an answer.'), PLEASE_SELECT_VALUE: t.s('Please select a value'), VALID_INTEGER: t.s('Please enter an answer that is a valid integer.'), diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index cd55b73ea0..33d7a2a622 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -8,12 +8,12 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', '$scope', '$rootScope', 'CreateSelect2', 'ParseTypeChange', 'GetBasePath', 'Rest', 'ParentObject', 'JobTemplateModel', '$q', 'Empty', 'SchedulePost', 'ProcessErrors', 'SchedulerInit', '$location', 'PromptService', 'RRuleToAPI', 'moment', - 'WorkflowJobTemplateModel', + 'WorkflowJobTemplateModel', 'TemplatesStrings', function($filter, $state, $stateParams, $http, Wait, $scope, $rootScope, CreateSelect2, ParseTypeChange, GetBasePath, Rest, ParentObject, JobTemplate, $q, Empty, SchedulePost, ProcessErrors, SchedulerInit, $location, PromptService, RRuleToAPI, moment, - WorkflowJobTemplate + WorkflowJobTemplate, TemplatesStrings ) { var base = $scope.base || $location.path().replace(/^\//, '').split('/')[0], @@ -88,6 +88,8 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', $scope.hideForm = true; + $scope.promptActionText = TemplatesStrings.get('prompt.CONFIRM'); + // extra_data field is not manifested in the UI when scheduling a Management Job if ($state.current.name === 'jobTemplateSchedules.add'){ $scope.parseType = 'yaml'; diff --git a/awx/ui/client/src/scheduler/schedulerEdit.controller.js b/awx/ui/client/src/scheduler/schedulerEdit.controller.js index 6376664145..8b1d3c083a 100644 --- a/awx/ui/client/src/scheduler/schedulerEdit.controller.js +++ b/awx/ui/client/src/scheduler/schedulerEdit.controller.js @@ -1,11 +1,11 @@ export default ['$filter', '$state', '$stateParams', 'Wait', '$scope', 'moment', '$rootScope', '$http', 'CreateSelect2', 'ParseTypeChange', 'ParentObject', 'ProcessErrors', 'Rest', 'GetBasePath', 'SchedulerInit', 'SchedulePost', 'JobTemplateModel', '$q', 'Empty', 'PromptService', 'RRuleToAPI', -'WorkflowJobTemplateModel', +'WorkflowJobTemplateModel', 'TemplatesStrings', function($filter, $state, $stateParams, Wait, $scope, moment, $rootScope, $http, CreateSelect2, ParseTypeChange, ParentObject, ProcessErrors, Rest, GetBasePath, SchedulerInit, SchedulePost, JobTemplate, $q, Empty, PromptService, RRuleToAPI, - WorkflowJobTemplate + WorkflowJobTemplate, TemplatesStrings ) { let schedule, scheduler, scheduleCredentials = []; @@ -21,6 +21,8 @@ function($filter, $state, $stateParams, Wait, $scope, moment, $scope.hideForm = true; $scope.parseType = 'yaml'; + $scope.promptActionText = TemplatesStrings.get('prompt.CONFIRM'); + $scope.processSchedulerEndDt = function(){ // set the schedulerEndDt to be equal to schedulerStartDt + 1 day @ midnight var dt = new Date($scope.schedulerUTCTime); diff --git a/awx/ui/client/src/scheduler/schedulerForm.partial.html b/awx/ui/client/src/scheduler/schedulerForm.partial.html index bb68bfbaaf..8930245501 100644 --- a/awx/ui/client/src/scheduler/schedulerForm.partial.html +++ b/awx/ui/client/src/scheduler/schedulerForm.partial.html @@ -686,5 +686,5 @@ ng-disabled="!schedulerIsValid || promptModalMissingReqFields"> Save - + diff --git a/awx/ui/client/src/templates/prompt/steps/other-prompts/prompt-other-prompts.partial.html b/awx/ui/client/src/templates/prompt/steps/other-prompts/prompt-other-prompts.partial.html index dcbf7f5a92..9d731d185f 100644 --- a/awx/ui/client/src/templates/prompt/steps/other-prompts/prompt-other-prompts.partial.html +++ b/awx/ui/client/src/templates/prompt/steps/other-prompts/prompt-other-prompts.partial.html @@ -93,7 +93,7 @@
From cf38faa899043b89081ce31d7c0f7d55e7ea9438 Mon Sep 17 00:00:00 2001 From: mabashian Date: Wed, 25 Apr 2018 11:41:20 -0400 Subject: [PATCH 2/3] Use string interpolation rather than passing action text in via a var --- awx/ui/client/src/scheduler/schedulerAdd.controller.js | 3 +-- awx/ui/client/src/scheduler/schedulerEdit.controller.js | 2 +- awx/ui/client/src/scheduler/schedulerForm.partial.html | 2 +- awx/ui/client/src/templates/prompt/prompt.directive.js | 2 +- .../workflows/workflow-maker/workflow-maker.controller.js | 2 -- .../workflows/workflow-maker/workflow-maker.partial.html | 2 +- 6 files changed, 5 insertions(+), 8 deletions(-) diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index 33d7a2a622..c00df03e27 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -33,6 +33,7 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', }; $scope.preventCredsWithPasswords = true; + $scope.strings = TemplatesStrings; /* * This is a workaround for the angular-scheduler library inserting `ll` into fields after an @@ -88,8 +89,6 @@ export default ['$filter', '$state', '$stateParams', '$http', 'Wait', $scope.hideForm = true; - $scope.promptActionText = TemplatesStrings.get('prompt.CONFIRM'); - // extra_data field is not manifested in the UI when scheduling a Management Job if ($state.current.name === 'jobTemplateSchedules.add'){ $scope.parseType = 'yaml'; diff --git a/awx/ui/client/src/scheduler/schedulerEdit.controller.js b/awx/ui/client/src/scheduler/schedulerEdit.controller.js index 8b1d3c083a..ec0a24842a 100644 --- a/awx/ui/client/src/scheduler/schedulerEdit.controller.js +++ b/awx/ui/client/src/scheduler/schedulerEdit.controller.js @@ -21,7 +21,7 @@ function($filter, $state, $stateParams, Wait, $scope, moment, $scope.hideForm = true; $scope.parseType = 'yaml'; - $scope.promptActionText = TemplatesStrings.get('prompt.CONFIRM'); + $scope.strings = TemplatesStrings; $scope.processSchedulerEndDt = function(){ // set the schedulerEndDt to be equal to schedulerStartDt + 1 day @ midnight diff --git a/awx/ui/client/src/scheduler/schedulerForm.partial.html b/awx/ui/client/src/scheduler/schedulerForm.partial.html index 8930245501..9313db7f71 100644 --- a/awx/ui/client/src/scheduler/schedulerForm.partial.html +++ b/awx/ui/client/src/scheduler/schedulerForm.partial.html @@ -686,5 +686,5 @@ ng-disabled="!schedulerIsValid || promptModalMissingReqFields"> Save - + diff --git a/awx/ui/client/src/templates/prompt/prompt.directive.js b/awx/ui/client/src/templates/prompt/prompt.directive.js index b09a3bcc84..e151760bb7 100644 --- a/awx/ui/client/src/templates/prompt/prompt.directive.js +++ b/awx/ui/client/src/templates/prompt/prompt.directive.js @@ -5,7 +5,7 @@ export default [ 'templateUrl', scope: { promptData: '=', onFinish: '&', - actionText: '@actionText', + actionText: '@', preventCredsWithPasswords: '<' }, templateUrl: templateUrl('templates/prompt/prompt'), diff --git a/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js index aa6a321f3b..a4119b4a79 100644 --- a/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js +++ b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.controller.js @@ -16,8 +16,6 @@ export default ['$scope', 'WorkflowService', 'GetBasePath', 'TemplatesService', $scope.strings = TemplatesStrings; $scope.preventCredsWithPasswords = true; - $scope.promptActionText = $scope.strings.get('prompt.CONFIRM'); - $scope.workflowMakerFormConfig = { nodeMode: "idle", activeTab: "jobs", diff --git a/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.partial.html b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.partial.html index 3fa1abff37..aca4d30f13 100644 --- a/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.partial.html +++ b/awx/ui/client/src/templates/workflows/workflow-maker/workflow-maker.partial.html @@ -129,5 +129,5 @@ - + From ac4697e93b658727ac0584580eee9440b056efb8 Mon Sep 17 00:00:00 2001 From: mabashian Date: Wed, 25 Apr 2018 12:01:10 -0400 Subject: [PATCH 3/3] Fixed bug displaying default cred with password when creating a schedule --- .../src/templates/prompt/prompt.controller.js | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/awx/ui/client/src/templates/prompt/prompt.controller.js b/awx/ui/client/src/templates/prompt/prompt.controller.js index 1a20ca1d2c..59cc2092db 100644 --- a/awx/ui/client/src/templates/prompt/prompt.controller.js +++ b/awx/ui/client/src/templates/prompt/prompt.controller.js @@ -73,16 +73,40 @@ export default [ 'Rest', 'GetBasePath', 'ProcessErrors', 'CredentialTypeModel', if(vm.promptDataClone.launchConf.passwords_needed_to_start) { vm.promptDataClone.launchConf.passwords_needed_to_start.forEach((passwordNeeded) => { - if(passwordNeeded === "ssh_password") { - vm.promptDataClone.prompts.credentials.passwords.ssh = {}; - } - if(passwordNeeded === "become_password") { - vm.promptDataClone.prompts.credentials.passwords.become = {}; - } - if(passwordNeeded === "ssh_key_unlock") { - vm.promptDataClone.prompts.credentials.passwords.ssh_key_unlock = {}; - } - if(passwordNeeded.startsWith("vault_password")) { + if (passwordNeeded === "ssh_password") { + vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => { + defaultCredential.passwords_needed.forEach((neededPassword) => { + if (neededPassword === "ssh_password") { + vm.promptDataClone.prompts.credentials.passwords.ssh = { + id: defaultCredential.id, + name: defaultCredential.name + }; + } + }); + }); + } else if (passwordNeeded === "become_password") { + vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => { + defaultCredential.passwords_needed.forEach((neededPassword) => { + if (neededPassword === "become_password") { + vm.promptDataClone.prompts.credentials.passwords.become = { + id: defaultCredential.id, + name: defaultCredential.name + }; + } + }); + }); + } else if (passwordNeeded === "ssh_key_unlock") { + vm.promptDataClone.prompts.credentials.value.forEach((defaultCredential) => { + defaultCredential.passwords_needed.forEach((neededPassword) => { + if (neededPassword === "ssh_key_unlock") { + vm.promptDataClone.prompts.credentials.passwords.ssh_key_unlock = { + id: defaultCredential.id, + name: defaultCredential.name + }; + } + }); + }); + } else if (passwordNeeded.startsWith("vault_password")) { let vault_id = null; if (passwordNeeded.includes('.')) { vault_id = passwordNeeded.split(/\.(.+)/)[1];