-
Notifications
You must be signed in to change notification settings - Fork 899
/
service_reconfigure_task.rb
78 lines (66 loc) · 2.49 KB
/
service_reconfigure_task.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
class ServiceReconfigureTask < MiqRequestTask
validate :validate_request_type, :validate_state
AUTOMATE_DRIVES = true
def self.base_model
ServiceReconfigureTask
end
def self.get_description(req_obj)
"#{request_class::TASK_DESCRIPTION} for: #{req_obj.source.name}"
end
def statemachine_task_status
state == "finished" ? status.to_s.downcase : "retry"
end
def after_request_task_create
update(:description => get_description)
end
def deliver_to_automate(req_type = request_type, zone = nil)
ra = resource_action
if ra
dialog_values["request"] = req_type
args = {
:object_type => self.class.name,
:object_id => id,
:namespace => ra.ae_namespace,
:class_name => ra.ae_class,
:instance_name => ra.ae_instance,
:automate_message => (ra.ae_message.presence || 'create'),
:attrs => dialog_values,
:user_id => get_user.id,
:miq_group_id => get_user.current_group_id,
:tenant_id => get_user.current_tenant.id
}
MiqQueue.put(
:class_name => 'MiqAeEngine',
:method_name => 'deliver',
:args => [args],
:role => 'automate',
:zone => zone,
:tracking_label => tracking_label_id
)
update_and_notify_parent(:state => "pending", :status => "Ok", :message => "Automation Starting")
else
update_and_notify_parent(:state => "finished",
:status => "Ok",
:message => "#{request_class::TASK_DESCRIPTION} completed")
end
end
def resource_action
@resource_action ||= source.service_template.resource_actions.find_by(:action => 'Reconfigure')
end
def after_ae_delivery(ae_result)
_log.info("ae_result=#{ae_result.inspect}")
return if ae_result == 'retry'
return if miq_request.state == 'finished'
if ae_result == 'ok'
source.options[:dialog] = source.options[:dialog].merge(options[:dialog]) if options[:dialog]
source.save!
update_and_notify_parent(:state => "finished",
:status => "Ok",
:message => "#{request_class::TASK_DESCRIPTION} completed")
else
update_and_notify_parent(:state => "finished",
:status => "Error",
:message => "#{request_class::TASK_DESCRIPTION} failed")
end
end
end