Skip to content

Commit

Permalink
Extract raw_* vm operations to providers
Browse files Browse the repository at this point in the history
Instead of having all of the raw_* operations defined in core calling
run_command_via_parent, leave the raw_ operations undefined and allow
them to be implemented in the different providers.
  • Loading branch information
agrare committed Oct 31, 2019
1 parent c191b9f commit 82a7549
Showing 1 changed file with 6 additions and 24 deletions.
30 changes: 6 additions & 24 deletions app/models/vm_or_template/operations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,65 +10,47 @@ module VmOrTemplate::Operations
alias_method :ruby_clone, :clone

def raw_clone(name, folder, pool = nil, host = nil, datastore = nil, powerOn = false, template_flag = false, transform = nil, config = nil, customization = nil, disk = nil)
raise _("VM has no EMS, unable to clone") unless ext_management_system
folder_mor = folder.ems_ref_obj if folder.respond_to?(:ems_ref_obj)
pool_mor = pool.ems_ref_obj if pool.respond_to?(:ems_ref_obj)
host_mor = host.ems_ref_obj if host.respond_to?(:ems_ref_obj)
datastore_mor = datastore.ems_ref_obj if datastore.respond_to?(:ems_ref_obj)
run_command_via_parent(:vm_clone, :name => name, :folder => folder_mor, :pool => pool_mor, :host => host_mor, :datastore => datastore_mor, :powerOn => powerOn, :template => template_flag, :transform => transform, :config => config, :customization => customization, :disk => disk)
raise NotImplementedError, _("must be implemented in a subclass")
end

def clone(name, folder, pool = nil, host = nil, datastore = nil, powerOn = false, template_flag = false, transform = nil, config = nil, customization = nil, disk = nil)
raw_clone(name, folder, pool, host, datastore, powerOn, template_flag, transform, config, customization, disk)
end

def raw_mark_as_template
raise _("VM has no EMS, unable to mark as template") unless ext_management_system
run_command_via_parent(:vm_mark_as_template)
raise NotImplementedError, _("must be implemented in a subclass")
end

def mark_as_template
raw_mark_as_template
end

def raw_mark_as_vm(pool, host = nil)
raise _("VM has no EMS, unable to mark as vm") unless ext_management_system
pool_mor = pool.ems_ref_obj if pool.respond_to?(:ems_ref_obj)
host_mor = host.ems_ref_obj if host.respond_to?(:ems_ref_obj)
run_command_via_parent(:vm_mark_as_vm, :pool => pool_mor, :host => host_mor)
raise NotImplementedError, _("must be implemented in a subclass")
end

def mark_as_vm(pool, host = nil)
raw_mark_as_vm(pool, host)
end

def raw_unregister
unless ext_management_system
raise _("VM has no Provider, unable to unregister VM")
end
run_command_via_parent(:vm_unregister)
raise NotImplementedError, _("must be implemented in a subclass")
end

def unregister
check_policy_prevent(:request_vm_unregister, :raw_unregister)
end

def raw_destroy
unless ext_management_system
raise _("VM has no Provider, unable to destroy VM")
end
run_command_via_parent(:vm_destroy)
raise NotImplementedError, _("must be implemented in a subclass")
end

def vm_destroy
check_policy_prevent(:request_vm_destroy, :raw_destroy)
end

def raw_rename(new_name)
unless ext_management_system
raise _("VM has no Provider, unable to rename VM")
end
run_command_via_parent(:vm_rename, :new_name => new_name)
raise NotImplementedError, _("must be implemented in a subclass")
end

def rename(new_name)
Expand Down

0 comments on commit 82a7549

Please sign in to comment.