Skip to content

Commit

Permalink
Merge pull request #828 from alizapeikes/vm-resize-ddf
Browse files Browse the repository at this point in the history
vm resize feature refactored to work with ddf
  • Loading branch information
agrare authored Oct 19, 2022
2 parents 37bd30d + 74b929d commit 1356085
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 4 deletions.
40 changes: 37 additions & 3 deletions app/models/manageiq/providers/openstack/cloud_manager/vm/resize.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,59 @@ module ManageIQ::Providers::Openstack::CloudManager::Vm::Resize
included do
supports :resize do
unsupported_reason_add(:resize, unsupported_reason(:control)) unless supports?(:control)
unsupported_reason_add(:resize, _('The VM is not connected to a provider')) unless ext_management_system
unless %w(ACTIVE SHUTOFF).include?(raw_power_state)
unsupported_reason_add(:resize, _("The Instance cannot be resized, current state has to be active or shutoff."))
end
end
end

def raw_resize(new_flavor)
def raw_resize(options)
ext_management_system.with_provider_connection(compute_connection_options) do |service|
service.resize_server(ems_ref, new_flavor.ems_ref)
service.resize_server(ems_ref, options["flavor"])
end
MiqQueue.put(:class_name => self.class.name,
:expires_on => Time.now.utc + 2.hours,
:instance_id => id,
:method_name => "raw_resize_finish")
rescue => err
_log.error "vm=[#{name}], flavor=[#{new_flavor.name}], error: #{err}"
_log.error("vm=[#{name}], flavor=[#{options["flavor"]}], error: #{err}")
raise MiqException::MiqOpenstackApiRequestError, parse_error_message_from_fog_response(err), err.backtrace
end

def params_for_resize
{
:fields => [
{
:component => 'text-field',
:name => 'current_flavor',
:id => 'current_flavor',
:label => _('Current Flavor'),
:isDisabled => true,
:value => flavor.name_with_details
},
{
:component => 'select',
:name => 'flavor',
:id => 'flavor',
:label => _('Choose Flavor'),
:isRequired => true,
:includeEmpty => true,
:options => resize_form_options
},
],
}
end

def resize_form_options
ext_management_system.flavors.map do |ems_flavor|
# include only flavors with root disks at least as big as the instance's current root disk.
next if flavor && (ems_flavor == flavor || ems_flavor.root_disk_size < flavor.root_disk_size)

{:label => ems_flavor.name_with_details, :value => ems_flavor.ems_ref}
end.compact
end

def validate_resize_confirm
raw_power_state == 'VERIFY_RESIZE'
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@
expect(vm.validate_resize_confirm).to be false
expect(service).to receive(:resize_server).with(vm.ems_ref, flavor.ems_ref)
expect(MiqQueue).to receive(:put)
vm.resize(flavor.id)
vm.resize({"flavor"=>flavor.ems_ref})
end

it 'confirm resize' do
Expand Down

0 comments on commit 1356085

Please sign in to comment.