Skip to content

Commit 94ecda3

Browse files
committed
WIP
1 parent 49ed950 commit 94ecda3

File tree

4 files changed

+261
-0
lines changed

4 files changed

+261
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class MiqProvisionConfigurationScriptRequest < MiqRequest
2+
TASK_DESCRIPTION = N_('Configuration Script Provisioning')
3+
SOURCE_CLASS_NAME = 'ConfigurationScript'
4+
5+
validates_inclusion_of :request_state, :in => %w[pending finished] + ACTIVE_STATES, :message => "should be pending, #{ACTIVE_STATES.join(", ")} or finished"
6+
validate :must_have_user
7+
8+
def host_name
9+
options[:src_configured_system_ids].length == 1 ? src_configured_systems.pluck(:hostname).first : "Multiple Hosts"
10+
end
11+
12+
def src_configuration_scripts
13+
ConfigurationScript.where(:id => options[:src_configuration_script_ids])
14+
end
15+
16+
def requested_task_idx
17+
options[:src_configuration_script_ids]
18+
end
19+
20+
def my_zone
21+
src_configuration_scripts.first.my_zone
22+
end
23+
24+
def my_role(_action = nil)
25+
'ems_operations'
26+
end
27+
28+
def my_queue_name
29+
src_configuration_scripts.first.nil? ? super : src_configuration_scripts.first&.queue_name_for_ems_operations
30+
end
31+
32+
def self.request_task_class
33+
ManageIQ::Providers::TerraformEnterprise::AutomationManager::Provision
34+
end
35+
36+
def self.request_task_class_from(_attribs)
37+
# TODO
38+
ManageIQ::Providers::TerraformEnterprise::AutomationManager::Provision
39+
end
40+
41+
def self.new_request_task(attribs)
42+
request_task_class_from(attribs).new(attribs)
43+
end
44+
45+
def originating_controller
46+
"configuration_scripts"
47+
end
48+
49+
def event_name(mode)
50+
"configuration_script_provision_request_#{mode}"
51+
end
52+
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class MiqProvisionConfigurationScriptWorkflow < MiqProvisionWorkflow
2+
def self.base_model
3+
MiqProvisionConfigurationScriptWorkflow
4+
end
5+
6+
def self.automate_dialog_request
7+
'UI_CONFIGURATION_SCRIPT_PROVISION_INFO'
8+
end
9+
10+
def self.request_class
11+
MiqProvisionConfigurationScriptRequest
12+
end
13+
end

app/models/miq_request.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ class MiqRequest < ApplicationRecord
8282
:MiqProvisionConfiguredSystemRequest => {
8383
:provision_via_foreman => N_("%{config_mgr_type} Provision") % {:config_mgr_type => ui_lookup(:ui_title => 'foreman')}
8484
},
85+
:MiqProvisionConfigurationScriptRequest => {
86+
:provision_via_terraform_enterprise => N_("Terraform Enterprise Provision")
87+
},
8588
:MiqProvisionRequest => {
8689
:template => N_("VM Provision"),
8790
:clone_to_vm => N_("VM Clone"),
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
---
2+
:name: miq_provision_configuration_script_dialogs
3+
:description: Sample Configuration Script Provisioning Dialog
4+
:dialog_type: MiqProvisionConfigurationScriptWorkflow
5+
:content:
6+
:buttons:
7+
- :submit
8+
- :cancel
9+
:dialogs:
10+
:requester:
11+
:description: Request
12+
:fields:
13+
:owner_phone:
14+
:description: Phone
15+
:required: false
16+
:display: :hide
17+
:data_type: :string
18+
:owner_country:
19+
:description: Country/Region
20+
:required: false
21+
:display: :hide
22+
:data_type: :string
23+
:owner_phone_mobile:
24+
:description: Mobile
25+
:required: false
26+
:display: :hide
27+
:data_type: :string
28+
:owner_title:
29+
:description: Title
30+
:required: false
31+
:display: :hide
32+
:data_type: :string
33+
:owner_first_name:
34+
:description: First Name
35+
:required: false
36+
:display: :edit
37+
:data_type: :string
38+
:owner_manager:
39+
:description: Name
40+
:required: false
41+
:display: :edit
42+
:data_type: :string
43+
:owner_address:
44+
:description: Address
45+
:required: false
46+
:display: :hide
47+
:data_type: :string
48+
:owner_company:
49+
:description: Company
50+
:required: false
51+
:display: :hide
52+
:data_type: :string
53+
:owner_last_name:
54+
:description: Last Name
55+
:required: false
56+
:display: :edit
57+
:data_type: :string
58+
:owner_manager_mail:
59+
:description: E-Mail
60+
:required: false
61+
:display: :hide
62+
:data_type: :string
63+
:owner_city:
64+
:description: City
65+
:required: false
66+
:display: :hide
67+
:data_type: :string
68+
:owner_department:
69+
:description: Department
70+
:required: false
71+
:display: :hide
72+
:data_type: :string
73+
:owner_load_ldap:
74+
:pressed:
75+
:method: :retrieve_ldap
76+
:description: Look Up LDAP Email
77+
:required: false
78+
:display: :show
79+
:data_type: :button
80+
:owner_manager_phone:
81+
:description: Phone
82+
:required: false
83+
:display: :hide
84+
:data_type: :string
85+
:owner_state:
86+
:description: State
87+
:required: false
88+
:display: :hide
89+
:data_type: :string
90+
:owner_office:
91+
:description: Office
92+
:required: false
93+
:display: :hide
94+
:data_type: :string
95+
:owner_zip:
96+
:description: Zip code
97+
:required: false
98+
:display: :hide
99+
:data_type: :string
100+
:owner_email:
101+
:description: E-Mail
102+
:required_method: :validate_regex
103+
:required_regex: !ruby/regexp /\A[\w!#$\%&'*+\/=?`\{|\}~^-]+(?:\.[\w!#$\%&'*+\/=?`\{|\}~^-]+)*@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\Z/i
104+
:required: true
105+
:display: :edit
106+
:data_type: :string
107+
:request_notes:
108+
:description: Notes
109+
:required: false
110+
:display: :edit
111+
:data_type: :string
112+
:display: :show
113+
:field_order:
114+
:purpose:
115+
:description: Purpose
116+
:fields:
117+
:tag_ids:
118+
:required_method: :validate_tags
119+
:description: Tags
120+
:required: false
121+
:options:
122+
:include: []
123+
:order: []
124+
:single_select: []
125+
:exclude: []
126+
:display: :edit
127+
:required_tags: []
128+
:data_type: :integer
129+
:display: :show
130+
:field_order:
131+
:customize:
132+
:description: Customize
133+
:fields:
134+
:root_password:
135+
:description: Root Password
136+
:required: false
137+
:display: :edit
138+
:data_type: :string
139+
:notes: Minimum 8 characters or blank
140+
:hostname:
141+
:description: Host Name
142+
:required: false
143+
:display: :edit
144+
:data_type: :string
145+
:ip_addr:
146+
:description: IP Address
147+
:required: false
148+
:notes: (Enter starting IP address)
149+
:display: :edit
150+
:data_type: :string
151+
:notes_display: :hide
152+
:display: :show
153+
:service:
154+
:description: Catalog
155+
:fields:
156+
:src_configuration_script_ids:
157+
:values_from:
158+
:method: :allowed_configuration_scripts
159+
:description: Workspaces
160+
:required: true
161+
:notes:
162+
:display: :show
163+
:data_type: :integer
164+
:notes_display: :show
165+
:display: :show
166+
:schedule:
167+
:description: Schedule
168+
:fields:
169+
:schedule_type:
170+
:values:
171+
schedule: Schedule
172+
immediately: Immediately on Approval
173+
:description: When to Provision
174+
:required: false
175+
:display: :edit
176+
:default: immediately
177+
:data_type: :string
178+
:schedule_time:
179+
:values_from:
180+
:options:
181+
:offset: 1.day
182+
:method: :default_schedule_time
183+
:description: Provision on
184+
:required: false
185+
:display: :edit
186+
:data_type: :time
187+
:display: :show
188+
:dialog_order:
189+
- :requester
190+
- :purpose
191+
- :service
192+
- :customize
193+
- :schedule

0 commit comments

Comments
 (0)