Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Ansible Tower provider node tagging to take into account the selected node model #2783

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
18 changes: 11 additions & 7 deletions app/controllers/automation_manager_controller.rb
Expand Up @@ -47,7 +47,7 @@ def tagging
case x_active_accord
when :automation_manager_providers
assert_privileges("automation_manager_provider_tag")
tagging_edit('ManageIQ::Providers::AnsibleTower::AutomationManager', false)
tagging_edit(class_for_provider_node.to_s, false)
when :automation_manager_cs_filter
assert_privileges("automation_manager_configured_system_tag")
tagging_edit('ConfiguredSystem', false)
Expand Down Expand Up @@ -100,20 +100,24 @@ def tree_record
end
end

def automation_manager_providers_tree_rec
def class_for_provider_node
nodes = x_node.split('-')
case nodes.first
when "root" then find_record(ManageIQ::Providers::AnsibleTower::AutomationManager, params[:id])
when "at", "e" then find_record(ManageIQ::Providers::AutomationManager::InventoryRootGroup, params[:id])
when "f" then find_record(ManageIQ::Providers::AnsibleTower::AutomationManager::ConfiguredSystem, params[:id])
when "root" then ManageIQ::Providers::AnsibleTower::AutomationManager
when "at", "e" then ManageIQ::Providers::AutomationManager::InventoryRootGroup
when "f", "cs" then ManageIQ::Providers::AnsibleTower::AutomationManager::ConfiguredSystem
when "xx" then
case nodes.second
when "at" then find_record(ManageIQ::Providers::AnsibleTower::AutomationManager, params[:id])
when "csa" then find_record(ConfiguredSystem, params[:id])
when "at" then ManageIQ::Providers::AnsibleTower::AutomationManager
when "csa" then ConfiguredSystem
end
end
end

def automation_manager_providers_tree_rec
find_record(class_for_provider_node, params[:id])
end

def automation_manager_cs_filter_tree_rec
nodes = x_node.split('-')
case nodes.first
Expand Down
Expand Up @@ -34,19 +34,4 @@ class ApplicationHelper::Toolbar::AutomationManagerProviderCenter < ApplicationH
]
),
])
button_group('automation_manager_policy', [
select(
:automation_manager_policy_choice,
'fa fa-shield fa-lg',
t = N_('Policy'),
t,
:items => [
button(
:automation_manager_provider_tag,
'pficon pficon-edit fa-lg',
N_('Edit Tags for this Ansible Tower Providers'),
N_('Edit Tags'))
]
)
])
end
@@ -1,4 +1,4 @@
module ApplicationHelper::Toolbar::ConfiguredSystem::AutomationPolicyMixin
module ApplicationHelper::Toolbar::ConfiguredSystem::Automation::PolicyMixin
def self.included(included_class)
included_class.button_group('automation_manager_policy', [
included_class.select(
Expand Down
@@ -1,4 +1,4 @@
module ApplicationHelper::Toolbar::ConfiguredSystem::LifecycleMixin
module ApplicationHelper::Toolbar::ConfiguredSystem::Foreman::LifecycleMixin
def self.included(included_class)
included_class.button_group('provider_foreman_lifecycle', [
included_class.select(
Expand Down
@@ -1,4 +1,4 @@
module ApplicationHelper::Toolbar::ConfiguredSystem::PolicyMixin
module ApplicationHelper::Toolbar::ConfiguredSystem::Foreman::PolicyMixin
def self.included(included_class)
included_class.button_group('provider_foreman_policy', [
included_class.select(
Expand Down
@@ -1,3 +1,3 @@
class ApplicationHelper::Toolbar::ConfiguredSystemsAnsibleCenter < ApplicationHelper::Toolbar::Basic
include ApplicationHelper::Toolbar::ConfiguredSystem::PolicyMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::Automation::PolicyMixin
end
@@ -1,4 +1,4 @@
class ApplicationHelper::Toolbar::ConfiguredSystemsCenter < ApplicationHelper::Toolbar::Basic
include ApplicationHelper::Toolbar::ConfiguredSystem::LifecycleMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::PolicyMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::Foreman::LifecycleMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::Foreman::PolicyMixin
end
@@ -1,4 +1,4 @@
class ApplicationHelper::Toolbar::UnassignedProfilesGroupCenter < ApplicationHelper::Toolbar::Basic
include ApplicationHelper::Toolbar::ConfiguredSystem::LifecycleMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::PolicyMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::Foreman::LifecycleMixin
include ApplicationHelper::Toolbar::ConfiguredSystem::Foreman::PolicyMixin
end
@@ -1,3 +1,22 @@
class ApplicationHelper::Toolbar::XAutomationManagerAnsibleTowerConfiguredSystemCenter < ApplicationHelper::Toolbar::Basic
include ApplicationHelper::Toolbar::ConfiguredSystem::AutomationPolicyMixin
button_group('record_summary', [
select(
:automation_manager_policy_choice,
'fa fa-shield fa-lg',
t = N_('Policy'),
t,
:enabled => true,
:items => [
button(
:configured_system_tag,
'pficon pficon-edit fa-lg',
N_('Edit Tags for this Configured System'),
N_('Edit Tags'),
:url => "tagging",
:url_parms => "main_div",
:send_checked => true,
:enabled => true),
]
),
])
end
2 changes: 1 addition & 1 deletion app/helpers/application_helper/toolbar_chooser.rb
Expand Up @@ -598,7 +598,7 @@ def configuration_manager_providers_tree_center_tb(nodes)
when "f" then inventory_group_center_tb
when "xx" then
case nodes.last
when "f" then "configured_systems_ansible_center_tb"
when "f" then "configured_systems_center_tb"
when "cp" then "unassigned_profiles_group_center_tb"
else "configuration_manager_providers_center_tb"
end
Expand Down
45 changes: 45 additions & 0 deletions spec/controllers/automation_manager_controller_spec.rb
Expand Up @@ -639,6 +639,51 @@
end
end

context "#tags_edit" do
let!(:user) { stub_user(:features => :all) }
before(:each) do
EvmSpecHelper.create_guid_miq_server_zone
allow(@ans_configured_system).to receive(:tagged_with).with(:cat => user.userid).and_return("my tags")
classification = FactoryGirl.create(:classification, :name => "department", :description => "Department")
@tag1 = FactoryGirl.create(:classification_tag,
:name => "tag1",
:parent => classification)
@tag2 = FactoryGirl.create(:classification_tag,
:name => "tag2",
:parent => classification)
allow(Classification).to receive(:find_assigned_entries).with(@ans_configured_system).and_return([@tag1, @tag2])
session[:tag_db] = "ConfiguredSystem"
edit = {:key => "ConfiguredSystem_edit_tags__#{@ans_configured_system.id}",
:tagging => "ConfiguredSystem",
:object_ids => [@ans_configured_system.id],
:current => {:assignments => []},
:new => {:assignments => [@tag1.id, @tag2.id]}}
session[:edit] = edit
end

after(:each) do
expect(response.status).to eq(200)
end

it "builds tagging screen" do
post :tagging, :params => {:format => :js, :miq_grid_checks => [@ans_configured_system.id]}
expect(assigns(:flash_array)).to be_nil
expect(response.status).to eq(200)
end

it "cancels tags edit" do
post :tagging_edit, :params => {:button => "cancel", :format => :js, :id => @ans_configured_system.id}
expect(assigns(:flash_array).first[:message]).to include("was cancelled by the user")
expect(assigns(:edit)).to be_nil
end

it "save tags" do
post :tagging_edit, :params => {:button => "save", :format => :js, :id => @ans_configured_system.id}
expect(assigns(:flash_array).first[:message]).to include("Tag edits were successfully saved")
expect(assigns(:edit)).to be_nil
end
end

def user_with_feature(features)
features = EvmSpecHelper.specific_product_features(*features)
FactoryGirl.create(:user, :features => features)
Expand Down