示例#1
0
    def _test_detach_disk_from_vm(self, destroy_disk=False):
        def fake_call_method(module, method, *args, **kwargs):
            vmdk_detach_config_spec = kwargs.get('spec')
            virtual_device_config = vmdk_detach_config_spec.deviceChange[0]
            self.assertEqual('remove', virtual_device_config.operation)
            self.assertEqual('ns0:VirtualDeviceConfigSpec',
                             virtual_device_config.obj_name)
            if destroy_disk:
                self.assertEqual('destroy',
                                 virtual_device_config.fileOperation)
            else:
                self.assertFalse(
                    hasattr(virtual_device_config, 'fileOperation'))
            return 'fake_configure_task'

        with contextlib.nested(
                mock.patch.object(self._session, '_wait_for_task'),
                mock.patch.object(self._session, '_call_method',
                                  fake_call_method)) as (_wait_for_task,
                                                         _call_method):
            fake_device = vmwareapi_fake.DataObject()
            fake_device.backing = vmwareapi_fake.DataObject()
            fake_device.backing.fileName = 'fake_path'
            fake_device.key = 'fake_key'
            self._volumeops.detach_disk_from_vm('fake_vm_ref', self._instance,
                                                fake_device, destroy_disk)
            _wait_for_task.assert_has_calls([mock.call('fake_configure_task')])
示例#2
0
        def fake_call_method(module, method, *args, **kwargs):
            # Mock the call which returns a list of datastores for the cluster
            if (module == ds_util.vim_util and method == 'get_dynamic_property'
                    and args == ('fake-cluster', 'ClusterComputeResource',
                                 'datastore')):
                fake_ds_mor = fake.DataObject()
                fake_ds_mor.ManagedObjectReference = fake_ds_list
                return fake_ds_mor

            # Return the datastore result sets we were passed in, in the order
            # given
            if (module == ds_util.vim_util
                    and method == 'get_properties_for_a_collection_of_objects'
                    and args[0] == 'Datastore' and args[1] == fake_ds_list):
                # Start a new iterator over given datastores
                datastores_i[0] = iter(datastores)
                return datastores_i[0].next()

            # Continue returning results from the current iterator.
            if (module == ds_util.vim_util
                    and method == 'continue_to_get_objects'):
                try:
                    return datastores_i[0].next()
                except StopIteration:
                    return None

            # Sentinel that get_datastore's use of vim has changed
            self.fail('Unexpected vim call in get_datastore: %s' % method)
示例#3
0
        def fake_wait_for_task(task_ref):
            if task_ref == 'fake_exists_task':
                result_file = fake.DataObject()
                result_file.path = 'fake-file'

                result = fake.DataObject()
                result.file = [result_file]
                result.path = '[ds] fake/path'

                task_info = fake.DataObject()
                task_info.result = result

                return task_info

            # Should never get here
            self.fail()
示例#4
0
 def mock_call_method(module, method, *args, **kwargs):
     if method == 'get_object_properties':
         return networks
     if method == 'get_dynamic_property':
         result = fake.DataObject()
         result.name = 'no-match'
         return result
     if method == 'continue_retrieval':
         self._continue_retrieval_called = True
示例#5
0
 def test_get_neutron_network_bridge_network_not_found(self):
     self.mox.StubOutWithMock(vm_util, 'get_host_ref')
     self.mox.StubOutWithMock(self.session, '_call_method')
     self.mox.StubOutWithMock(network_util, 'get_network_with_the_name')
     vm_util.get_host_ref(self.session, self.cluster).AndReturn('fake-host')
     opaque = fake.DataObject()
     opaque.HostOpaqueNetworkInfo = ['fake-network-info']
     self.session._call_method(
         vim_util, "get_dynamic_property", 'fake-host', 'HostSystem',
         'config.network.opaqueNetwork').AndReturn(None)
     network_util.get_network_with_the_name(self.session, 0,
                                            self.cluster).AndReturn(None)
     self.mox.ReplayAll()
     self.assertRaises(exception.NetworkNotFoundForBridge,
                       vif.get_neutron_network, self.session,
                       self.vif['network']['id'], self.cluster, self.vif)
示例#6
0
 def mock_call_method(module, method, *args, **kwargs):
     if method == 'get_object_properties':
         return networks
     if method == 'get_dynamic_property':
         result = fake.DataObject()
         if not token or self._continue_retrieval_called:
             result.name = name
         else:
             result.name = 'fake_name'
         result.key = 'fake_key'
         result.distributedVirtualSwitch = 'fake_dvs'
         return result
     if method == 'continue_retrieval':
         if token:
             self._continue_retrieval_called = True
             return networks
     if method == 'cancel_retrieval':
         self._cancel_retrieval_called = True
示例#7
0
 def test_get_neutron_network(self):
     self.mox.StubOutWithMock(vm_util, 'get_host_ref')
     self.mox.StubOutWithMock(self.session, '_call_method')
     self.mox.StubOutWithMock(vif, '_get_network_ref_from_opaque')
     vm_util.get_host_ref(self.session, self.cluster).AndReturn('fake-host')
     opaque = fake.DataObject()
     opaque.HostOpaqueNetworkInfo = ['fake-network-info']
     self.session._call_method(
         vim_util, "get_dynamic_property", 'fake-host', 'HostSystem',
         'config.network.opaqueNetwork').AndReturn(opaque)
     vif._get_network_ref_from_opaque(
         opaque.HostOpaqueNetworkInfo, CONF.vmware.integration_bridge,
         self.vif['network']['id']).AndReturn('fake-network-ref')
     self.mox.ReplayAll()
     network_ref = vif.get_neutron_network(self.session,
                                           self.vif['network']['id'],
                                           self.cluster, self.vif)
     self.assertEqual(network_ref, 'fake-network-ref')
示例#8
0
    def _build_cluster_networks(self, networks):
        """Returns a set of results for a cluster network lookup.

        This is an example:
        (ObjectContent){
           obj =
              (obj){
                 value = "domain-c7"
                 _type = "ClusterComputeResource"
              }
           propSet[] =
              (DynamicProperty){
                 name = "network"
                 val =
                    (ArrayOfManagedObjectReference){
                       ManagedObjectReference[] =
                          (ManagedObjectReference){
                             value = "network-54"
                             _type = "Network"
                          },
                          (ManagedObjectReference){
                             value = "dvportgroup-14"
                             _type = "DistributedVirtualPortgroup"
                          },
                    }
              },
        }]
        """

        objects = []
        obj = ObjectContent(obj=vim_util.get_moref("domain-c7",
                                                   "ClusterComputeResource"),
                            propSet=[])
        value = fake.DataObject()
        value.ManagedObjectReference = []
        for network in networks:
            value.ManagedObjectReference.append(network)

        obj.propSet.append(DynamicProperty(name='network', val=value))
        objects.append(obj)
        return ResultSet(objects=objects)