Skip to content

Commit f3ad057

Browse files
committed
Update ServiceTemplateTerraformEnterprise
1 parent 043617e commit f3ad057

File tree

4 files changed

+34
-70
lines changed

4 files changed

+34
-70
lines changed

app/models/manageiq/providers/terraform_enterprise/automation_manager/provision/state_machine.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def succeeded?
3939
end
4040

4141
def mark_as_completed
42-
update_and_notify_parent(:state => 'provisioned')
42+
update_and_notify_parent(:state => "finished", :message => "Stack provision is complete")
4343
signal :finish
4444
end
4545

Lines changed: 14 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,31 @@
11
class ServiceTemplateTerraformEnterprise < ServiceTemplate
2-
include ServiceConfigurationMixin
32
include ServiceTemplateAutomationMixin
43

5-
alias terraform_workspace configuration_script
6-
alias terraform_workspace= configuration_script=
7-
8-
def self.default_provisioning_entry_point(_service_type)
9-
'/AutomationManagement/TerraformEnterprise/Service/Provisioning/StateMachines/Provision/CatalogItemInitialization'
10-
end
11-
12-
def self.default_reconfiguration_entry_point
13-
nil
14-
end
15-
16-
def self.default_retirement_entry_point
17-
nil
18-
end
19-
20-
def self.create_catalog_item(options, _auth_user = nil)
4+
def self.create_catalog_item(options, auth_user = nil)
215
transaction do
226
create_from_options(options).tap do |service_template|
23-
config_info = validate_config_info(options)
24-
25-
service_template.terraform_workspace = if config_info[:configuration_script_id]
26-
ConfigurationScript.find(config_info[:configuration_script_id])
27-
else
28-
config_info[:configuration]
29-
end
30-
31-
service_template.create_resource_actions(config_info)
7+
config_info = options[:config_info].except(:provision, :retirement, :reconfigure)
8+
validate_config_info!(config_info)
9+
10+
wf_class = ManageIQ::Providers::TerraformEnterprise::AutomationManager::ProvisionWorkflow
11+
wf = wf_class.new(config_info, auth_user)
12+
request = wf.make_request(nil, config_info)
13+
service_template.add_resource(request)
14+
service_template.create_resource_actions(options[:config_info])
3215
end
3316
end
3417
end
3518

36-
def create_subtasks(_parent_service_task, _parent_service)
37-
# no sub task is needed for this service
38-
[]
39-
end
40-
41-
def my_zone
42-
configuration_script.manager.try(:my_zone)
43-
end
44-
45-
def self.validate_config_info(options)
46-
config_info = options[:config_info] || {}
47-
config_info[:provision][:fqname] ||= default_provisioning_entry_point(SERVICE_TYPE_ATOMIC) if config_info.key?(:provision)
48-
49-
raise _("Must provide a configuration_script_id") if config_info[:configuration_script_id].nil?
50-
51-
config_info
19+
def self.validate_config_info!(config_info)
20+
raise _("Must provide a source_id") if config_info[:source_id].nil?
5221
end
5322

5423
private
5524

56-
def update_service_resources(config_info, _auth_user = nil)
57-
return if !config_info.key?(:configuration_script_id) || config_info[:configuration_script_id] == configuration_script&.id
58-
59-
service_resources.find_by(:resource_type => 'ConfigurationScriptBase').destroy
60-
self.configuration_script = ConfigurationScriptBase.find(config_info[:configuration_script_id])
61-
end
62-
6325
def validate_update_config_info(options)
64-
super
26+
config_info = super
6527

66-
return unless options.key?(:config_info)
67-
68-
self.class.validate_config_info(options)
28+
self.class.validate_config_info!(config_info)
29+
config_info
6930
end
7031
end

spec/models/manageiq/providers/terraform_enterprise/automation_manager/provision_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595

9696
expect(subject.reload).to have_attributes(
9797
:phase => "finish",
98-
:state => "provisioned",
98+
:state => "finished",
9999
:status => "Ok"
100100
)
101101
end

spec/models/service_template_terraform_enterprise_spec.rb

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
RSpec.describe ServiceTemplateTerraformEnterprise do
2-
let(:terraform_enterprise) { FactoryBot.create(:ems_terraform_enterprise) }
3-
let(:configuration_script) { FactoryBot.create(:configuration_script_terraform_enterprise, :manager => terraform_enterprise) }
4-
let(:service_dialog) { FactoryBot.create(:dialog) }
5-
let(:provision_resource_action) { FactoryBot.create(:resource_action, :action => 'Provision') }
2+
let(:user) { FactoryBot.create(:user_with_email_and_group) }
3+
let(:terraform_enterprise) { FactoryBot.create(:ems_terraform_enterprise) }
4+
let(:configuration_script) { FactoryBot.create(:configuration_script_terraform_enterprise, :manager => terraform_enterprise) }
5+
let(:service_dialog) { FactoryBot.create(:dialog) }
6+
let(:provision_resource_action) { FactoryBot.create(:resource_action, :action => 'Provision') }
67
let(:catalog_item_options) do
78
{
89
:name => "Terraform Enterprise",
@@ -11,37 +12,39 @@
1112
:display => "false",
1213
:description => "a description",
1314
:config_info => {
14-
:configuration_script_id => configuration_script.id,
15-
:provision => {
15+
:owner_email => user.email,
16+
:source_id => configuration_script.id,
17+
:provision => {
1618
:fqname => provision_resource_action.fqname,
1719
:dialog_id => service_dialog.id
1820
}
1921
}
2022
}
2123
end
2224

25+
before { MiqDialog.seed }
26+
2327
describe ".create_catalog_item" do
2428
it "creates and returns a terraform enterprise catalog item" do
25-
service_template = described_class.create_catalog_item(catalog_item_options)
29+
service_template = described_class.create_catalog_item(catalog_item_options, user)
2630

2731
expect(service_template.name).to eq("Terraform Enterprise")
2832
expect(service_template.service_resources.count).to eq(1)
2933
expect(service_template.dialogs.first).to eq(service_dialog)
3034
expect(service_template.resource_actions.pluck(:action)).to match_array(%w[Provision])
31-
expect(service_template.configuration_script).to eq(configuration_script)
3235
expect(service_template.config_info).to eq(catalog_item_options[:config_info])
3336
end
3437

3538
it "raises an exception if configuration_script_id is missing" do
36-
catalog_item_options[:config_info].delete(:configuration_script_id)
39+
catalog_item_options[:config_info].delete(:source_id)
3740

38-
expect { described_class.create_catalog_item(catalog_item_options) }
39-
.to raise_error(StandardError, "Must provide a configuration_script_id")
41+
expect { described_class.create_catalog_item(catalog_item_options, user) }
42+
.to raise_error(StandardError, "Must provide a source_id")
4043
end
4144
end
4245

4346
describe "#update_catalog_item" do
44-
let(:service_template) { ServiceTemplateTerraformEnterprise.create_catalog_item(catalog_item_options) }
47+
let(:service_template) { ServiceTemplateTerraformEnterprise.create_catalog_item(catalog_item_options, user) }
4548
let(:new_configuration_script) { FactoryBot.create(:configuration_script_terraform_enterprise, :manager => terraform_enterprise) }
4649

4750
it "updates the service_template" do
@@ -53,7 +56,7 @@
5356
:display => "false",
5457
:description => "a description",
5558
:config_info => {
56-
:configuration_script_id => new_configuration_script.id,
59+
:source_id => new_configuration_script.id,
5760
:provision => {
5861
:fqname => provision_resource_action.fqname,
5962
:dialog_id => service_dialog.id
@@ -63,8 +66,8 @@
6366
)
6467

6568
expect(service_template.reload).to have_attributes(
66-
:name => "Updated Terraform Enterprise",
67-
:configuration_script => new_configuration_script
69+
:name => "Updated Terraform Enterprise",
70+
:config_info => hash_including(:source_id => new_configuration_script.id)
6871
)
6972
end
7073
end

0 commit comments

Comments
 (0)