Skip to content

Commit 9b719a5

Browse files
authored
Merge pull request #9869 from agrare/prefer_provider_specific_service_templates_if_available
Use Provider specific Service Templates if available
2 parents 87048d9 + 47f30d6 commit 9b719a5

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

app/controllers/catalog_controller.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -991,7 +991,7 @@ def class_service_template(prov_type)
991991
elsif prov_type.starts_with?('generic')
992992
prov_type.gsub(/(generic)(_.*)?/, 'service_template\2').classify.constantize
993993
else
994-
ServiceTemplate
994+
"ServiceTemplate#{prov_type.camelize}".safe_constantize || ServiceTemplate
995995
end
996996
end
997997

@@ -1093,7 +1093,7 @@ def atomic_req_submit
10931093
end
10941094
common_st_record_vars(st)
10951095
add_orchestration_template_vars(st) if st.kind_of?(ServiceTemplateOrchestration)
1096-
add_configuration_script_vars(st) if st.kind_of?(ServiceTemplateAutomation)
1096+
add_configuration_script_vars(st) if st.kind_of?(ServiceTemplateAutomation) && !need_prov_dialogs?(@edit[:new][:st_prov_type])
10971097
add_server_profile_template_vars(st) if @edit[:new][:st_prov_type] == 'cisco_intersight'
10981098
st.service_type = "atomic"
10991099

@@ -1303,7 +1303,7 @@ def set_form_vars
13031303
@available_catalogs = available_catalogs.sort # Get available catalogs with tenants and ancestors
13041304
@additional_tenants = @edit[:new][:tenant_ids].map(&:to_s) # Get ids of selected Additional Tenants in the Tenants tree
13051305
available_orchestration_templates if @record.kind_of?(ServiceTemplateOrchestration)
1306-
available_automation_managers if @record.kind_of?(ServiceTemplateAutomation)
1306+
available_automation_managers if @record.kind_of?(ServiceTemplateAutomation) && !need_prov_dialogs?(@record.prov_type)
13071307
available_container_managers if @record.kind_of?(ServiceTemplateContainerTemplate)
13081308
fetch_zones
13091309
@edit[:new][:zone_id] = @record.zone_id

spec/controllers/catalog_controller_spec.rb

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,20 +1197,33 @@
11971197
end
11981198

11991199
context "with a ServiceTemplateAnsibleTower" do
1200-
let!(:ems_ansible_tower) { FactoryBot.create(:provider_ansible_tower).automation_manager }
1201-
let(:record) { FactoryBot.create(:service_template_ansible_tower) }
1200+
let!(:ems_ansible_tower) { FactoryBot.create(:provider_ansible_tower).automation_manager }
1201+
let(:record) { FactoryBot.create(:service_template_ansible_tower, :prov_type => prov_type) }
12021202

1203-
it "sets available_managers" do
1204-
controller.send(:set_form_vars)
1205-
expect(controller.instance_variable_get(:@edit)[:new][:available_managers]).to eq([[ems_ansible_tower.name, ems_ansible_tower.id]])
1203+
context "with a generic_ provision type" do
1204+
let(:prov_type) { "generic_ansible_tower" }
1205+
1206+
it "sets available_managers" do
1207+
controller.send(:set_form_vars)
1208+
expect(controller.instance_variable_get(:@edit)[:new][:available_managers]).to eq([[ems_ansible_tower.name, ems_ansible_tower.id]])
1209+
end
1210+
1211+
context "with other automation managers" do
1212+
let!(:embedded_ansible) { FactoryBot.create(:provider_embedded_ansible).automation_manager }
1213+
1214+
it "doesn't include other automation managers" do
1215+
controller.send(:set_form_vars)
1216+
expect(controller.instance_variable_get(:@edit)[:new][:available_managers]).to eq([[ems_ansible_tower.name, ems_ansible_tower.id]])
1217+
end
1218+
end
12061219
end
12071220

1208-
context "with other automation managers" do
1209-
let!(:embedded_ansible) { FactoryBot.create(:provider_embedded_ansible).automation_manager }
1221+
context "with a non-generic provision type" do
1222+
let(:prov_type) { "ansible_tower" }
12101223

1211-
it "doesn't include other automation managers" do
1224+
it "doesn't set available_managers" do
12121225
controller.send(:set_form_vars)
1213-
expect(controller.instance_variable_get(:@edit)[:new][:available_managers]).to eq([[ems_ansible_tower.name, ems_ansible_tower.id]])
1226+
expect(controller.instance_variable_get(:@edit)[:new].keys).not_to include(:available_managers)
12141227
end
12151228
end
12161229
end

0 commit comments

Comments
 (0)