Skip to content

Commit d421abc

Browse files
committed
Add shared processor pool option to PowerVS provision form
1 parent 1d39bf8 commit d421abc

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

app/models/manageiq/providers/ibm_cloud/power_virtual_servers/cloud_manager/provision/cloning.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ def prepare_for_clone
7070
end
7171

7272
specs['placement_group'] = get_option(:placement_group) unless get_option(:placement_group).nil?
73+
specs['shared_processor_pool'] = get_option(:shared_processor_pool) unless get_option(:shared_processor_pool).nil?
7374
user_script_text = options[:user_script_text]
7475
user_script_text64 = Base64.encode64(user_script_text) unless user_script_text.nil?
7576
specs['user_data'] = user_script_text64 unless user_script_text64.nil?

app/models/manageiq/providers/ibm_cloud/power_virtual_servers/cloud_manager/provision_workflow.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ def allowed_placement_groups(_options = {})
128128
ar_ems.placement_groups.to_h { |group| [group.ems_ref, "#{group.policy}: #{group.name}"] }
129129
end
130130

131+
def allowed_shared_processer_pools(_options = {})
132+
return {} if ar_ems.nil?
133+
134+
ar_ems.resource_pools.to_h { |pool| [pool.ems_ref, pool.name] }
135+
end
136+
131137
def set_request_values(values)
132138
values[:new_volumes] = parse_new_volumes_fields(values)
133139
super
@@ -197,6 +203,19 @@ def validate_placement_group(_filed, _values, _dlg, _fld, value)
197203
_('Invalid placement group - incompatible colocation policy') unless valid
198204
end
199205

206+
def validate_shared_processer_pool(_filed, _values, _dlg, _fld, value)
207+
return if value.blank?
208+
209+
resource_pool = ar_ems.resource_pools.find_by!(:ems_ref => value)
210+
vms_in_resource_pool = resource_pool.vms
211+
# We don't save a processor pool machine type in the db, so there is no way to validate an empty processor pool
212+
return if vms_in_resource_pool.blank?
213+
214+
# Shared processor pools are used and shared by a set of virtual server instances of the same machine type (host).
215+
valid = vms_in_resource_pool.first.flavor.name == values&.dig(:sys_type, 1)
216+
_('Invalid processor pool - incompatible machine type (host)') unless valid
217+
end
218+
200219
private
201220

202221
def ar_ems

content/miq_dialogs/miq_provision_ibm_powervs_dialogs_template.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@
3232
:display: :edit
3333
:auto_select_single: false
3434
:data_type: :string
35+
:shared_processor_pool:
36+
:values_from:
37+
:method: allowed_shared_processer_pools
38+
:description: Shared Processor Pool
39+
:required: false
40+
:validation_method: :validate_shared_processer_pool
41+
:display: :edit
42+
:auto_select_single: false
43+
:data_type: :string
3544
:pin_policy:
3645
:values:
3746
1: "none"

0 commit comments

Comments
 (0)