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 c9b93f79889..67b82a0d9a5 100644 --- a/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js +++ b/app/assets/javascripts/controllers/catalog/catalog_item_form_controller.js @@ -99,23 +99,28 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog vm.catalogItemModel.provisioning_dialog_name = configData.provision.new_dialog_name; vm.catalogItemModel.provisioning_key = ''; vm.catalogItemModel.provisioning_value = ''; - vm.catalogItemModel.provisioning_variables = configData.provision.extra_vars; + setExtraVars('provisioning_variables', configData.provision.extra_vars); - if (typeof configData.retirement !== 'undefined') { - vm.catalogItemModel.retirement_remove_resources = configData.retirement.remove_resources; + vm.catalogItemModel.retirement_remove_resources = configData.retirement.remove_resources; + if (typeof configData.retirement.repository_id !== 'undefined') { 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; - vm.catalogItemModel.retirement_network_credential_id = configData.retirement.network_credential_id; - vm.catalogItemModel.retirement_cloud_credential_id = configData.retirement.cloud_credential_id; - vm.catalogItemModel.retirement_inventory = configData.retirement.hosts; vm.catalogItemModel.retirement_dialog_existing = configData.retirement.dialog_id ? "existing" : "create"; vm.catalogItemModel.retirement_dialog_id = configData.retirement.dialog_id; vm.catalogItemModel.retirement_dialog_name = configData.retirement.new_dialog_name; - vm.catalogItemModel.retirement_key = ''; - vm.catalogItemModel.retirement_value = ''; - vm.catalogItemModel.retirement_variables = configData.retirement.extra_vars; } + vm.catalogItemModel.retirement_network_credential_id = configData.retirement.network_credential_id; + vm.catalogItemModel.retirement_cloud_credential_id = configData.retirement.cloud_credential_id; + vm.catalogItemModel.retirement_inventory = configData.retirement.hosts; + vm.catalogItemModel.retirement_key = ''; + vm.catalogItemModel.retirement_value = ''; + setExtraVars('retirement_variables', configData.retirement.extra_vars); + }; + + var setExtraVars = function(variableName, extraVars) { + if (typeof extraVars !== 'undefined') + vm.catalogItemModel[variableName] = extraVars; } var redirectUrl = '/catalog/explorer/' + catalogItemFormId; @@ -189,27 +194,25 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog remove_resources: configData.retirement_remove_resources } + var retirement = catalog_item['config_info']['retirement']; + retirement['hosts'] = configData.retirement_inventory; + retirement['extra_vars'] = configData.retirement_variables; 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['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; + retirement['dialog_id'] = configData.retirement_dialog_id; + } + if (configData.retirement_network_credential_id !== '') + catalog_item['config_info']['retirement']['network_credential_id'] = configData.retirement_network_credential_id; - if (configData.retirement_cloud_credential_id !== '') - catalog_item['config_info']['retirement']['cloud_credential_id'] = configData.retirement_cloud_credential_id; + if (configData.retirement_cloud_credential_id !== '') + catalog_item['config_info']['retirement']['cloud_credential_id'] = configData.retirement_cloud_credential_id; - if (configData.retirement_dialog_id !== '') { - catalog_item['config_info']['retirement']['dialog_id'] = configData.retirement_dialog_id; - } else if (configData.retirement_dialog_name !== '') - catalog_item['config_info']['retirement']['new_dialog_name'] = configData.retirement_dialog_name; - } + if (configData.retirement_dialog_id !== '') { + catalog_item['config_info']['retirement']['dialog_id'] = configData.retirement_dialog_id; + } else if (configData.retirement_dialog_name !== '') + catalog_item['config_info']['retirement']['new_dialog_name'] = configData.retirement_dialog_name; return catalog_item; } diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index e2377fcb82e..b83a3bb69af 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -1778,26 +1778,33 @@ def fetch_playbook_details playbook_details = {} provision = @record.config_info[:provision] playbook_details[:provisioning] = {} - playbook_details[:provisioning][:repository] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::ConfigurationScriptSource.find(provision[:repository_id]).name - playbook_details[:provisioning][:playbook] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::Playbook.find(provision[:playbook_id]).name - playbook_details[:provisioning][:machine_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::MachineCredential.find(provision[:credential_id]).name - playbook_details[:provisioning][:network_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::NetworkCredential.find(provision[:network_credential_id]).name if provision[:network_credential_id] - playbook_details[:provisioning][:cloud_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::CloudCredential.find(provision[:cloud_credential_id]).name if provision[:cloud_credential_id] - dialog = provision[:dialog_id] ? Dialog.find(provision[:dialog_id]) : Dialog.find_by(:name => provision[:dialog_name]) - playbook_details[:provisioning][:dialog] = dialog.name - playbook_details[:provisioning][:dialog_id] = dialog.id + playbook_details[:provisioning][:repository] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::ConfigurationScriptSource.find_by(:id => provision[:repository_id]).name + playbook_details[:provisioning][:playbook] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::Playbook.find_by(:id => provision[:playbook_id]).name + playbook_details[:provisioning][:machine_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::MachineCredential.find_by(:id => provision[:credential_id]).name + playbook_details[:provisioning][:network_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::NetworkCredential.find_by(:id => provision[:network_credential_id]).name if provision[:network_credential_id] + playbook_details[:provisioning][:cloud_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::CloudCredential.find_by(:id => provision[:cloud_credential_id]).name if provision[:cloud_credential_id] + dialog = provision[:dialog_id] ? Dialog.find_by(:id => provision[:dialog_id]) : Dialog.find_by(:name => provision[:dialog_name]) + if dialog + playbook_details[:provisioning][:dialog] = dialog.name + playbook_details[:provisioning][:dialog_id] = dialog.id + end if @record.config_info[:retirement] retirement = @record.config_info[:retirement] playbook_details[:retirement] = {} - playbook_details[:retirement][:repository] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::ConfigurationScriptSource.find(retirement[:repository_id]).name - playbook_details[:retirement][:playbook] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::Playbook.find(retirement[:playbook_id]).name - playbook_details[:retirement][:machine_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::MachineCredential.find(retirement[:credential_id]).name - playbook_details[:retirement][:network_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::NetworkCredential.find(retirement[:network_credential_id]).name if retirement[:network_credential_id] - playbook_details[:retirement][:cloud_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::CloudCredential.find(retirement[:cloud_credential_id]).name if retirement[:cloud_credential_id] - dialog = provision[:dialog_id] ? Dialog.find(retirement[:dialog_id]) : Dialog.find_by(:name => retirement[:dialog_name]) - playbook_details[:retirement][:dialog] = dialog.name - playbook_details[:retirement][:dialog_id] = dialog.id + playbook_details[:retirement][:remove_resources] = retirement[:remove_resources] + if retirement[:repository_id] + playbook_details[:retirement][:repository] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::ConfigurationScriptSource.find_by(:id => retirement[:repository_id]).name + playbook_details[:retirement][:playbook] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::Playbook.find_by(:id => retirement[:playbook_id]).name + playbook_details[:retirement][:machine_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::MachineCredential.find_by(:id => retirement[:credential_id]).name + playbook_details[:retirement][:network_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::NetworkCredential.find_by(:id => retirement[:network_credential_id]).name if retirement[:network_credential_id] + playbook_details[:retirement][:cloud_credential] = ManageIQ::Providers::EmbeddedAnsible::AutomationManager::CloudCredential.find_by(:id => retirement[:cloud_credential_id]).name if retirement[:cloud_credential_id] + dialog = provision[:dialog_id] ? Dialog.find_by(:id => retirement[:dialog_id]) : Dialog.find_by(:name => retirement[:dialog_name]) + if dialog + playbook_details[:retirement][:dialog] = dialog.name + playbook_details[:retirement][:dialog_id] = dialog.id + end + end end playbook_details end 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 9452e8b0a77..364535ea01a 100644 --- a/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js +++ b/spec/javascripts/controllers/catalog/catalog_item_form_controller_spec.js @@ -38,6 +38,11 @@ describe('catalogItemFormController', function() { }, retirement: { remove_resources: 'yes_without_playbook', + hosts: undefined, + extra_vars: Object({ }), + network_credential_id: undefined, + cloud_credential_id: undefined, + dialog_id: undefined } } };