Skip to content

Commit

Permalink
Added remove resources option in the form on Retirement tab
Browse files Browse the repository at this point in the history
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
  • Loading branch information
h-kataria committed Mar 10, 2017
1 parent 5857a28 commit c909847
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
12 changes: 12 additions & 0 deletions app/views/layouts/angular/_ansible_form_options_angular.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ describe('catalogItemFormController', function() {
},
network_credential_id: undefined,
cloud_credential_id: undefined
},
retirement: {
remove_resources: 'pre',
}
}
};
Expand Down

0 comments on commit c909847

Please sign in to comment.