Beispiel #1
0
def get_vm_by_uuid(server, guest_id):
    request = VI.FindByUuidRequestMsg()
    mor_search_index = request.new__this(
        server._do_service_content.SearchIndex)
    mor_search_index.set_attribute_type('SearchIndex')
    request.set_element__this(mor_search_index)
    request.set_element_uuid(guest_id)
    request.set_element_vmSearch(True)
    vm = server._proxy.FindByUuid(request)._returnval
    if vm is not None:
        return VIVirtualMachine(server, vm)
Beispiel #2
0
    def _get_vm_for_uuid(self, uuid, datacenter=None):
        """
        Retrieve VM for the provided UUID.

        :type uuid: ``str``
        """
        server = self.connection.client

        dc_list = []
        if datacenter and VIMor.is_mor(datacenter):
            dc_list.append(datacenter)
        else:
            dc = server.get_datacenters()
            if datacenter:
                dc_list = [k for k, v in dc.iteritems() if v == datacenter]
            else:
                dc_list = list(dc.iterkeys())

        for mor_dc in dc_list:
            request = VI.FindByUuidRequestMsg()
            search_index = server._do_service_content.SearchIndex
            mor_search_index = request.new__this(search_index)
            mor_search_index.set_attribute_type(MORTypes.SearchIndex)
            request.set_element__this(mor_search_index)

            mor_datacenter = request.new_datacenter(mor_dc)
            mor_datacenter.set_attribute_type(MORTypes.Datacenter)
            request.set_element_datacenter(mor_datacenter)

            request.set_element_vmSearch(True)
            request.set_element_uuid(uuid)

            try:
                # pylint: disable=no-member
                vm = server._proxy.FindByUuid(request)._returnval
                # pylint: enable=no-member
            except VI.ZSI.FaultException:
                pass
            else:
                if vm:
                    return VIVirtualMachine(server, vm)

            return None