Sha256: 2769f66d751719f9d8c940b88d081d99d1ea05d3ba01453365734c673678bbea

Contents?: true

Size: 1.45 KB

Versions: 44

Compression:

Stored size: 1.45 KB

Contents

module Fog
  module Compute
    class Vsphere
      class Real
        def get_virtual_machine(id, datacenter_name = nil)
          convert_vm_mob_ref_to_attr_hash(get_vm_ref(id, datacenter_name))
        end

        protected

        def get_vm_ref(id, dc = nil)
          raw_datacenter = find_raw_datacenter(dc) if dc
          vm = case is_uuid?(id)
            # UUID based
            when true
              params = {:uuid => id, :vmSearch => true, :instanceUuid => true}
              params[:datacenter] = raw_datacenter if dc
              @connection.searchIndex.FindByUuid(params)
            else
              # try to find based on VM name
              if dc
                raw_datacenter.find_vm(id)
              else
                raw_datacenters.map { |d| d.find_vm(id) }.compact.first
              end
          end
          vm ? vm : raise(Fog::Compute::Vsphere::NotFound, "#{id} was not found")
        end
      end

      class Mock
        def get_virtual_machine(id, datacenter_name = nil)
          if is_uuid?(id)
            vm = list_virtual_machines({ 'instance_uuid' => id, 'datacenter' => datacenter_name }).first
          else
            # try to find based on VM name. May need to handle the path of the VM
            vm = list_virtual_machines({ 'name' => id, 'datacenter' => datacenter_name }).first
          end
          vm ? vm : raise(Fog::Compute::Vsphere::NotFound, "#{id} was not found")
        end

      end

    end
  end
end

Version data entries

44 entries across 44 versions & 3 rubygems

Version Path
fog-1.22.0 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-1.21.0 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.20.0.20140305101839 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.20.0.20140305101305 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20140212012611 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-1.20.0 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20140110004459 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20140110003812 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20140109202555 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20140107192102 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20140107142106 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.19.0.20131219203941 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131219193542 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-1.19.0 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131219033443 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131219032002 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131219030716 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131219022322 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131218202447 lib/fog/vsphere/requests/compute/get_virtual_machine.rb
fog-maestrodev-1.18.0.20131209091424 lib/fog/vsphere/requests/compute/get_virtual_machine.rb