Sha256: e6a1962ca5a4dc2adee280073738ee208f23a8f80356f64a092a7484d2f0bea6

Contents?: true

Size: 1.87 KB

Versions: 23

Compression:

Stored size: 1.87 KB

Contents

module Fog
  module Vsphere
    class Compute
      class Real
        def vm_migrate(options = {})
          # priority is the only required option, and it has a sane default option.
          priority = options['priority'].nil? ? 'defaultPriority' : options['priority']
          raise ArgumentError, 'instance_uuid is a required parameter' unless options.key? 'instance_uuid'

          # Find the VM Object
          search_filter = { :uuid => options['instance_uuid'], 'vmSearch' => true, 'instanceUuid' => true }
          vm_mob_ref = connection.searchIndex.FindAllByUuid(search_filter).first

          unless vm_mob_ref.is_a? RbVmomi::VIM::VirtualMachine
            raise Fog::Vsphere::Errors::NotFound,
                  "Could not find VirtualMachine with instance uuid #{options['instance_uuid']}"
          end
          options['host'] = get_raw_host(options['host'], options['cluster'], options['datacenter']) if options['host']
          task_options = { pool: options['pool'], host: options['host'], state: options['state'] }
          if options['check']
            checker = connection.serviceContent.vmProvisioningChecker
            task = checker.CheckMigrate_Task(task_options.merge(vm: vm_mob_ref))
            task.wait_for_completion
            { 'error' => task.info.result[0].error, 'warning' => task.info.result[0].warning }
          else
            task = vm_mob_ref.MigrateVM_Task(task_options.merge(priority: priority.to_s))
            task.wait_for_completion
            { 'task_state' => task.info.state }
          end
        end
      end

      class Mock
        def vm_migrate(options = {})
          priority = options['priority'].nil? ? 'defaultPriority' : options['priority']
          raise ArgumentError, 'instance_uuid is a required parameter' unless options.key? 'instance_uuid'
          { 'task_state' => 'success' }
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
fog-vsphere-3.7.0 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.8 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.7 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.6 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.5 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.4 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.3 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.2 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.5.3 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.6.0 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.5.2 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.5.1 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.5.0 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.4.0 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.3.1 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.3.0 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.2.5 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.2.2 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.2.1 lib/fog/vsphere/requests/compute/vm_migrate.rb
fog-vsphere-3.2.0 lib/fog/vsphere/requests/compute/vm_migrate.rb