Skip to content

Commit 1356085

Browse files
authored
Merge pull request #828 from alizapeikes/vm-resize-ddf
vm resize feature refactored to work with ddf
2 parents 37bd30d + 74b929d commit 1356085

File tree

2 files changed

+38
-4
lines changed
  • app/models/manageiq/providers/openstack/cloud_manager/vm
  • spec/models/manageiq/providers/openstack/cloud_manager

2 files changed

+38
-4
lines changed

app/models/manageiq/providers/openstack/cloud_manager/vm/resize.rb

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,59 @@ module ManageIQ::Providers::Openstack::CloudManager::Vm::Resize
44
included do
55
supports :resize do
66
unsupported_reason_add(:resize, unsupported_reason(:control)) unless supports?(:control)
7+
unsupported_reason_add(:resize, _('The VM is not connected to a provider')) unless ext_management_system
78
unless %w(ACTIVE SHUTOFF).include?(raw_power_state)
89
unsupported_reason_add(:resize, _("The Instance cannot be resized, current state has to be active or shutoff."))
910
end
1011
end
1112
end
1213

13-
def raw_resize(new_flavor)
14+
def raw_resize(options)
1415
ext_management_system.with_provider_connection(compute_connection_options) do |service|
15-
service.resize_server(ems_ref, new_flavor.ems_ref)
16+
service.resize_server(ems_ref, options["flavor"])
1617
end
1718
MiqQueue.put(:class_name => self.class.name,
1819
:expires_on => Time.now.utc + 2.hours,
1920
:instance_id => id,
2021
:method_name => "raw_resize_finish")
2122
rescue => err
22-
_log.error "vm=[#{name}], flavor=[#{new_flavor.name}], error: #{err}"
23+
_log.error("vm=[#{name}], flavor=[#{options["flavor"]}], error: #{err}")
2324
raise MiqException::MiqOpenstackApiRequestError, parse_error_message_from_fog_response(err), err.backtrace
2425
end
2526

27+
def params_for_resize
28+
{
29+
:fields => [
30+
{
31+
:component => 'text-field',
32+
:name => 'current_flavor',
33+
:id => 'current_flavor',
34+
:label => _('Current Flavor'),
35+
:isDisabled => true,
36+
:value => flavor.name_with_details
37+
},
38+
{
39+
:component => 'select',
40+
:name => 'flavor',
41+
:id => 'flavor',
42+
:label => _('Choose Flavor'),
43+
:isRequired => true,
44+
:includeEmpty => true,
45+
:options => resize_form_options
46+
},
47+
],
48+
}
49+
end
50+
51+
def resize_form_options
52+
ext_management_system.flavors.map do |ems_flavor|
53+
# include only flavors with root disks at least as big as the instance's current root disk.
54+
next if flavor && (ems_flavor == flavor || ems_flavor.root_disk_size < flavor.root_disk_size)
55+
56+
{:label => ems_flavor.name_with_details, :value => ems_flavor.ems_ref}
57+
end.compact
58+
end
59+
2660
def validate_resize_confirm
2761
raw_power_state == 'VERIFY_RESIZE'
2862
end

spec/models/manageiq/providers/openstack/cloud_manager/vm_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@
237237
expect(vm.validate_resize_confirm).to be false
238238
expect(service).to receive(:resize_server).with(vm.ems_ref, flavor.ems_ref)
239239
expect(MiqQueue).to receive(:put)
240-
vm.resize(flavor.id)
240+
vm.resize({"flavor"=>flavor.ems_ref})
241241
end
242242

243243
it 'confirm resize' do

0 commit comments

Comments
 (0)