From c909847d258af6586e44fa7e320d11115414db6e Mon Sep 17 00:00:00 2001 From: Harpreet Kataria Date: Wed, 8 Mar 2017 13:54:09 -0500 Subject: [PATCH] Added remove resources option in the form on Retirement tab Added an option to ask user if they want to remove resources as part of service retirement, If playbook is not selected options are "Yes/No", when playbook is selected options are "No/Pre/Post", default is set to "No". Fixed existing JS spec test. https://www.pivotaltracker.com/story/show/141238703 --- .../catalog/catalog_item_form_controller.js | 46 +++++++++++++++---- .../_ansible_form_options_angular.html.haml | 12 +++++ .../catalog_item_form_controller_spec.js | 3 ++ 3 files changed, 51 insertions(+), 10 deletions(-) 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 7b9d06a83d60..19ec36d8595c 100644 --- a/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js +++ b/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js @@ -38,8 +38,10 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog retirement_variables: {}, retirement_editMode: false, retirement_cloud_type: '', + retirement_remove_resources: 'no', cloud_types: ["Amazon", "Azure", "Google", "Openstack", "Vmware"] }; + getRemoveResourcesTypes(); vm.formId = catalogItemFormId; vm.afterGet = false; vm.model = "catalogItemModel"; @@ -69,6 +71,13 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog } }; + var getRemoveResourcesTypes = function() { + if (angular.isUndefined(vm.catalogItemModel.retirement_playbook_id) || vm.catalogItemModel.retirement_playbook_id === '') + vm.catalogItemModel['remove_resources_types'] = {"No": "no", "Yes": "yes"}; + else + vm.catalogItemModel['remove_resources_types'] = {"No": "no", "Pre": "pre", "Post": "post"}; + } + var getConfigInfo = function(configData) { vm.catalogItemModel.provisioning_repository_id = configData.provision.repository_id; vm.catalogItemModel.provisioning_playbook_id = configData.provision.playbook_id; @@ -84,6 +93,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog vm.catalogItemModel.provisioning_variables = configData.provision.extra_vars; if (typeof configData.retirement !== 'undefined') { + vm.catalogItemModel.retirement_remove_resources = configData.retirement.remove_resources; vm.catalogItemModel.retirement_repository_id = configData.retirement.repository_id; vm.catalogItemModel.retirement_playbook_id = configData.retirement.playbook_id; vm.catalogItemModel.retirement_machine_credential_id = configData.retirement.credential_id; @@ -166,16 +176,19 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog } else if (configData.provisioning_dialog_name !== '') catalog_item['config_info']['provision']['new_dialog_name'] = configData.provisioning_dialog_name; - // add 'retirement' key only if required fields were selected - if (configData.retirement_repository_id !== '') { - catalog_item['config_info']['retirement'] = { - repository_id: configData.retirement_repository_id, - playbook_id: configData.retirement_playbook_id, - credential_id: configData.retirement_machine_credential_id, - hosts: configData.retirement_inventory, - dialog_id: configData.retirement_dialog_id, - extra_vars: configData.retirement_variables - } + catalog_item['config_info']['retirement'] = { + remove_resources: configData.retirement_remove_resources + } + + if (angular.isDefined(vm.catalogItemModel.retirement_repository_id) && configData.retirement_repository_id !== '') { + var retirement = catalog_item['config_info']['retirement']; + + retirement['repository_id'] = configData.retirement_repository_id; + retirement['playbook_id'] = configData.retirement_playbook_id; + retirement['credential_id'] = configData.retirement_machine_credential_id; + retirement['hosts'] = configData.retirement_inventory; + retirement['dialog_id'] = configData.retirement_dialog_id; + retirement['extra_vars'] = configData.retirement_variables; if (configData.retirement_network_credential_id !== '') catalog_item['config_info']['retirement']['network_credential_id'] = configData.retirement_network_credential_id; @@ -267,6 +280,19 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog }) }; + vm.playbookTypeChanged = function(prefix) { + if (prefix === "retirement") + getRemoveResourcesTypes(); + }; + + $scope.$watch('vm._retirement_playbook', function(value) { + if (value) { + vm.catalogItemModel['retirement_playbook_id'] = value.id; + } else + vm.catalogItemModel['retirement_playbook_id'] = ''; + vm.playbookTypeChanged("retirement"); + }); + $scope.$watch('vm.catalogItemModel.display', function(value) { vm.catalogItemModel.display = value; return vm.catalogItemModel.display; 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 700e51759163..e0906e97fed2 100644 --- a/app/views/layouts/angular/_ansible_form_options_angular.html.haml +++ b/app/views/layouts/angular/_ansible_form_options_angular.html.haml @@ -23,6 +23,7 @@ 'ng-options' => "playbook as playbook.name for playbook in vm.#{prefix}_playbooks", "required" => "", :miqrequired => true, + "ng-change" => "playbookTypeChanged('#{prefix}')", :checkchange => true, "data-live-search" => "true", 'pf-select' => true} @@ -95,6 +96,17 @@ "checkchange" => ""} %span.help-block{"ng-show" => "angularForm.#{prefix}_inventory.$error.miqrequired"} = _("Required") + + - if prefix == "retirement" + .form-group + %label.col-md-3.control-label{"for" => "catalog_id"} + = _('Remove resources?') + .col-md-9 + %select{"ng-model" => "vm.catalogItemModel.retirement_remove_resources", + "name" => "vm.catalogItemModel.retirement_remove_resources", + 'ng-options' => "v as k for (k, v) in vm.catalogItemModel.remove_resources_types", + :checkchange => true, + "pf-select" => true} .col-md-12.col-lg-6 .form-group %label.col-md-3.control-label 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 d016a085de45..2ab2ef3f12bf 100644 --- a/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js +++ b/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js @@ -35,6 +35,9 @@ describe('catalogItemFormController', function() { }, network_credential_id: undefined, cloud_credential_id: undefined + }, + retirement: { + remove_resources: 'pre', } } };