Skip to content

Commit 986663d

Browse files
committed
Add a RequestTemplate for ConfigurationScript Provision
1 parent f51db9e commit 986663d

File tree

2 files changed

+79
-1
lines changed

2 files changed

+79
-1
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
class MiqProvisionConfigurationScriptRequestTemplate < MiqProvisionConfigurationScriptRequest
2+
def create_tasks_for_service(service_task, parent_svc)
3+
template_service_resource = ServiceResource.find_by(:id => service_task.options[:service_resource_id])
4+
scaling_min = 1
5+
6+
_log.info("create_tasks_for_service ID #{service_task.id} SCALING : #{scaling_min}")
7+
scaling_min.times.collect do |idx|
8+
create_request_task(idx) do |req_task|
9+
req_task.miq_request_id = service_task.miq_request.id
10+
req_task.userid = service_task.userid
11+
12+
task_options = req_task.options.merge(service_options(parent_svc, service_task, template_service_resource))
13+
task_options = task_options.merge(owner_options(service_task))
14+
req_task.options = task_options
15+
end
16+
end
17+
end
18+
19+
def request_task_class
20+
MiqProvisionConfigurationScriptTask
21+
end
22+
23+
def get_source_name
24+
byebug
25+
SecureRandom.uuid # TODO
26+
end
27+
28+
def post_create(_auto_approve)
29+
update(:description => "Miq Provision ConfigurationScript Request Template for #{source.name}")
30+
self
31+
end
32+
33+
def service_template_resource_copy
34+
dup.tap(&:save!)
35+
end
36+
37+
def execute
38+
# Should not be called.
39+
raise _("Provision ConfigurationScript Request Templates do not support the execute method.")
40+
end
41+
42+
private
43+
44+
def service_options(parent_svc, service_task, template_service_resource)
45+
{
46+
:miq_force_unique_name => [true, 1],
47+
:service_guid => parent_svc.guid,
48+
:service_resource_id => template_service_resource.id,
49+
:service_template_request => false,
50+
:configuration_script_payload_id => service_task.options&.dig(:parent_configuration_script_payload_id)
51+
}
52+
end
53+
54+
# NOTE: for services, the requester is the owner
55+
def owner_options(service_task)
56+
user = User.lookup_by_userid(service_task.userid)
57+
return {} if user.nil?
58+
59+
{
60+
:requester_group => service_task.options[:requester_group],
61+
:owner_email => user.email,
62+
:owner_group => service_task.options[:requester_group],
63+
:owner_first_name => user.first_name,
64+
:owner_last_name => user.last_name
65+
}
66+
end
67+
68+
def get_root_svc(parent_svc)
69+
return nil unless parent_svc
70+
71+
parent_svc.parent || parent_svc
72+
end
73+
74+
def get_parent_task(service_task)
75+
MiqRequestTask.find_by(:id => service_task.options[:parent_task_id])
76+
end
77+
end

app/models/miq_request.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ class MiqRequest < ApplicationRecord
124124
}.freeze
125125

126126
REQUEST_TYPES_BACKEND_ONLY = {
127-
:MiqProvisionRequestTemplate => {:template => "VM Provision Template"},
127+
:MiqProvisionRequestTemplate => {:template => "VM Provision Template"},
128+
:MiqProvisionConfigurationScriptRequestTemplate => {:configuration_script => "Configuration Script Template"}
128129
}
129130

130131
REQUEST_TYPES = MODEL_REQUEST_TYPES.values.each_with_object(REQUEST_TYPES_BACKEND_ONLY) { |i, h| i.each { |k, v| h[k] = v } }

0 commit comments

Comments
 (0)