From 152605caecb438cdf0030b9b64ad6e6c6824d444 Mon Sep 17 00:00:00 2001 From: Harpreet Kataria Date: Mon, 24 Jul 2017 12:03:03 -0400 Subject: [PATCH] Added input field for max playbook_ttl value Added new input field on both Provisioning & retirement tabs to allow user to enter maximum playbook_ttl numeric value. https://www.pivotaltracker.com/story/show/147956383 --- .../catalog/catalog_item_form_controller.js | 9 +++++++++ app/controllers/catalog_controller.rb | 2 ++ app/views/catalog/_sandt_tree_show.html.haml | 10 ++++++++++ .../_ansible_form_options_angular.html.haml | 14 ++++++++++++++ spec/controllers/catalog_controller_spec.rb | 8 ++++++++ .../catalog/catalog_item_form_controller_spec.js | 1 + 6 files changed, 44 insertions(+) diff --git a/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js b/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js index 1ec56a2856c..ec9720b522a 100644 --- a/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js +++ b/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js @@ -15,6 +15,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog provisioning_machine_credential_id: '', provisioning_network_credential_id: '', provisioning_cloud_credential_id: '', + provisioning_playbook_ttl: '', provisioning_inventory: 'localhost', provisioning_dialog_existing: 'existing', provisioning_dialog_id: '', @@ -30,6 +31,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog retirement_machine_credential_id: '', retirement_network_credential_id: '', retirement_cloud_credential_id: '', + retirement_playbook_ttl: '', retirement_inventory: 'localhost', retirement_key: '', retirement_value: '', @@ -123,6 +125,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog vm.catalogItemModel.provisioning_machine_credential_id = configData.provision.credential_id; vm.catalogItemModel.provisioning_network_credential_id = configData.provision.network_credential_id; vm.catalogItemModel.provisioning_cloud_credential_id = setIfDefined(configData.provision.cloud_credential_id); + vm.catalogItemModel.provisioning_playbook_ttl = configData.provision.playbook_ttl; vm.catalogItemModel.provisioning_inventory = configData.provision.hosts; vm.catalogItemModel.provisioning_dialog_existing = configData.provision.dialog_id ? "existing" : "create"; vm.catalogItemModel.provisioning_dialog_id = configData.provision.dialog_id; @@ -164,6 +167,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog vm.catalogItemModel.retirement_network_credential_id = configData.retirement.network_credential_id; vm.catalogItemModel.retirement_cloud_credential_id = setIfDefined(configData.retirement.cloud_credential_id); + vm.catalogItemModel.retirement_playbook_ttl = configData.retirement.playbook_ttl; vm.catalogItemModel.retirement_inventory = configData.retirement.hosts; vm.catalogItemModel.retirement_key = ''; vm.catalogItemModel.retirement_value = ''; @@ -247,6 +251,8 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog } } } + if (vm.catalogItemModel.provisioning_playbook_ttl !== undefined) + catalog_item['config_info']['provision']['playbook_ttl'] = configData.provisioning_playbook_ttl; catalog_item['config_info']['provision']['become_enabled'] = configData.provisioning_become_enabled; if (configData.provisioning_network_credential_id !== '') catalog_item['config_info']['provision']['network_credential_id'] = configData.provisioning_network_credential_id; @@ -271,6 +277,8 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog retirement['credential_id'] = configData.retirement_machine_credential_id; } if (vm.catalogItemModel.retirement_playbook_id !== undefined && configData.retirement_playbook_id !== '') { + if (vm.catalogItemModel.retirement_playbook_ttl !== undefined) + retirement['playbook_ttl'] = configData.retirement_playbook_ttl; retirement['hosts'] = configData.retirement_inventory; retirement['extra_vars'] = formatExtraVars(configData.retirement_variables); catalog_item['config_info']['retirement']['become_enabled'] = configData.retirement_become_enabled; @@ -569,6 +577,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog vm.retirement_cloud_type = vm.provisioning_cloud_type; vm._retirement_cloud_type = vm.provisioning_cloud_type; vm.catalogItemModel.retirement_cloud_credential_id = vm.catalogItemModel.provisioning_cloud_credential_id; + vm.catalogItemModel.retirement_playbook_ttl = vm.catalogItemModel.provisioning_playbook_ttl; vm.catalogItemModel.retirement_inventory = vm.catalogItemModel.provisioning_inventory; vm.catalogItemModel.retirement_become_enabled = vm.catalogItemModel.provisioning_become_enabled; vm.catalogItemModel.retirement_verbosity = vm.catalogItemModel.provisioning_verbosity; diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 76dd7067258..99f8cc0dd38 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -1860,6 +1860,7 @@ def fetch_playbook_details playbook_details[:provisioning][:network_credential] = fetch_name_from_object(ManageIQ::Providers::EmbeddedAnsible::AutomationManager::NetworkCredential, provision[:network_credential_id]) if provision[:network_credential_id] playbook_details[:provisioning][:cloud_credential] = fetch_name_from_object(ManageIQ::Providers::EmbeddedAnsible::AutomationManager::CloudCredential, provision[:cloud_credential_id]) if provision[:cloud_credential_id] fetch_dialog(playbook_details, provision[:dialog_id], :provisioning) + playbook_details[:provisioning][:playbook_ttl] = provision[:playbook_ttl] playbook_details[:provisioning][:verbosity] = provision[:verbosity] playbook_details[:provisioning][:become_enabled] = provision[:become_enabled] == true ? _('Yes') : _('No') @@ -1874,6 +1875,7 @@ def fetch_playbook_details playbook_details[:retirement][:network_credential] = fetch_name_from_object(ManageIQ::Providers::EmbeddedAnsible::AutomationManager::NetworkCredential, retirement[:network_credential_id]) if retirement[:network_credential_id] playbook_details[:retirement][:cloud_credential] = fetch_name_from_object(ManageIQ::Providers::EmbeddedAnsible::AutomationManager::CloudCredential, retirement[:cloud_credential_id]) if retirement[:cloud_credential_id] end + playbook_details[:retirement][:playbook_ttl] = retirement[:playbook_ttl] playbook_details[:retirement][:verbosity] = retirement[:verbosity] playbook_details[:retirement][:become_enabled] = retirement[:become_enabled] == true ? _('Yes') : _('No') end diff --git a/app/views/catalog/_sandt_tree_show.html.haml b/app/views/catalog/_sandt_tree_show.html.haml index 2866420f034..e2fce60dc3e 100644 --- a/app/views/catalog/_sandt_tree_show.html.haml +++ b/app/views/catalog/_sandt_tree_show.html.haml @@ -237,6 +237,11 @@ = _('Cloud Credential') .col-md-9 = h(provisioning[:cloud_credential]) + .form-group + %label.col-md-3.control-label + = _('Max TTL (mins)') + .col-md-9 + = h(@record.config_info[:provision][:playbook_ttl]) .form-group %label.col-md-3.control-label = _('Hosts') @@ -316,6 +321,11 @@ = _('Cloud Credential') .col-md-9 = h(retirement[:cloud_credential]) + .form-group + %label.col-md-3.control-label + = _('Max TTL (mins)') + .col-md-9 + = h(@record.config_info[:retirement][:playbook_ttl]) .form-group %label.col-md-3.control-label = _('Hosts') diff --git a/app/views/layouts/angular/_ansible_form_options_angular.html.haml b/app/views/layouts/angular/_ansible_form_options_angular.html.haml index c4d2d29cb54..49b54af2b8d 100644 --- a/app/views/layouts/angular/_ansible_form_options_angular.html.haml +++ b/app/views/layouts/angular/_ansible_form_options_angular.html.haml @@ -107,6 +107,20 @@ "checkchange" => true} %span.help-block{"ng-show" => "angularForm.#{prefix}_inventory.$error.miqrequired"} = _("Required") + + .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_playbook_ttl.$invalid}"} + %label.col-md-3.control-label{"for" => "#{prefix}_playbook_ttl"} + = _("Max TTL (mins)") + .col-md-9 + %input.form-control{:type => "text", + 'ng-model' => "#{ng_model}.#{prefix}_playbook_ttl", + :name => "#{prefix}_playbook_ttl", + :maxlength => 50, + "ng-pattern" => "/^\s*$|^[-+]?[0-9]+$/", + "checkchange" => true} + %span{"style"=>"color:red", "ng-show" => "angularForm.#{prefix}_playbook_ttl.$invalid"} + = _("Max TTL value must be numeric") + #escalate_privilege{"ng-if" => "vm.retirement_playbook_selected('#{prefix}')"} .form-group %label.col-md-3.control-label diff --git a/spec/controllers/catalog_controller_spec.rb b/spec/controllers/catalog_controller_spec.rb index a8688bd181e..c1b8a911b31 100644 --- a/spec/controllers/catalog_controller_spec.rb +++ b/spec/controllers/catalog_controller_spec.rb @@ -768,6 +768,7 @@ :repository_id => repository.id, :playbook_id => playbook.id, :dialog_id => dialog.id, + :playbook_ttl => nil, :verbosity => 4 }, :retirement => { @@ -776,6 +777,7 @@ :credential_id => auth.id, :repository_id => repository.id, :playbook_id => playbook.id, + :playbook_ttl => nil, :verbosity => 0 } } @@ -791,6 +793,7 @@ :dialog => "Some Label", :dialog_id => dialog.id, :become_enabled => "No", + :playbook_ttl => nil, :verbosity => 4 }, :retirement => { @@ -799,6 +802,7 @@ :playbook => playbook.name, :machine_credential => auth.name, :become_enabled => "No", + :playbook_ttl => nil, :verbosity => 0 } } @@ -818,6 +822,7 @@ :repository_id => 1, :playbook_id => playbook.id, :dialog_id => 2, + :playbook_ttl => nil, :verbosity => 4 }, :retirement => { @@ -826,6 +831,7 @@ :credential_id => auth.id, :repository_id => repository.id, :playbook_id => 2, + :playbook_ttl => nil, :verbosity => 0 } } @@ -839,6 +845,7 @@ :playbook => playbook.name, :machine_credential => auth.name, :become_enabled => "No", + :playbook_ttl => nil, :verbosity => 4 }, :retirement => { @@ -847,6 +854,7 @@ :playbook => nil, :machine_credential => auth.name, :become_enabled => "No", + :playbook_ttl => nil, :verbosity => 0 } } diff --git a/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js b/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js index e7bbf02bc75..46bfc99e43e 100644 --- a/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js +++ b/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js @@ -28,6 +28,7 @@ describe('catalogItemFormController', function() { repository_id: undefined, playbook_id: 10000000000493, credential_id: 10000000000090, + playbook_ttl: 100, hosts: 'localhost', verbosity: '0', extra_vars: {