예제 #1
0
 def test_create_virtual_disk(self):
     session = fake.FakeSession()
     dm = session.vim.service_content.virtualDiskManager
     with contextlib.nested(
         mock.patch.object(vm_util, "get_vmdk_create_spec",
                           return_value='fake-spec'),
         mock.patch.object(session, "_call_method",
                           return_value='fake-task'),
         mock.patch.object(session, "_wait_for_task"),
     ) as (fake_get_spec, fake_call_method, fake_wait_for_task):
         vm_util.create_virtual_disk(session, 'fake-dc-ref',
                                     'fake-adapter-type', 'fake-disk-type',
                                     'fake-path', 7)
         fake_get_spec.assert_called_once_with(
                 session.vim.client.factory, 7,
                 'fake-adapter-type',
                 'fake-disk-type')
         fake_call_method.assert_called_once_with(
                 session.vim,
                 "CreateVirtualDisk_Task",
                 dm,
                 name='fake-path',
                 datacenter='fake-dc-ref',
                 spec='fake-spec')
         fake_wait_for_task.assert_called_once_with('fake-task')
예제 #2
0
    def test_get_vmdk_path(self):
        uuid = '00000000-0000-0000-0000-000000000000'
        filename = '[test_datastore] %s/%s.vmdk' % (uuid, uuid)
        devices = self._vmdk_path_and_adapter_type_devices(filename)
        session = fake.FakeSession()

        with mock.patch.object(session, '_call_method',
                               return_value=devices):
            instance = {'uuid': uuid}
            vmdk_path = vm_util.get_vmdk_path(session, None, instance)
            self.assertEqual(filename, vmdk_path)
예제 #3
0
 def test_reconfigure_vm(self):
     session = fake.FakeSession()
     with contextlib.nested(
         mock.patch.object(session, '_call_method',
                           return_value='fake_reconfigure_task'),
         mock.patch.object(session, '_wait_for_task')
     ) as (_call_method, _wait_for_task):
         vm_util.reconfigure_vm(session, 'fake-ref', 'fake-spec')
         _call_method.assert_called_once_with(mock.ANY,
             'ReconfigVM_Task', 'fake-ref', spec='fake-spec')
         _wait_for_task.assert_called_once_with(
             'fake_reconfigure_task')
예제 #4
0
 def test_power_off_instance_no_vm_ref(self, fake_get_ref):
     session = fake.FakeSession()
     fake_instance = mock.MagicMock()
     with contextlib.nested(
         mock.patch.object(session, '_call_method',
                           return_value='fake-task'),
         mock.patch.object(session, '_wait_for_task')
     ) as (fake_call_method, fake_wait_for_task):
         vm_util.power_off_instance(session, fake_instance)
         fake_get_ref.assert_called_once_with(session, fake_instance)
         fake_call_method.assert_called_once_with(session.vim,
                                                  "PowerOffVM_Task",
                                                  'fake-vm-ref')
         fake_wait_for_task.assert_called_once_with('fake-task')
예제 #5
0
 def test_power_on_instance_with_vm_ref(self):
     session = fake.FakeSession()
     fake_instance = mock.MagicMock()
     with contextlib.nested(
         mock.patch.object(session, "_call_method",
                           return_value='fake-task'),
         mock.patch.object(session, "_wait_for_task"),
     ) as (fake_call_method, fake_wait_for_task):
         vm_util.power_on_instance(session, fake_instance,
                                   vm_ref='fake-vm-ref')
         fake_call_method.assert_called_once_with(session.vim,
                                                  "PowerOnVM_Task",
                                                  'fake-vm-ref')
         fake_wait_for_task.assert_called_once_with('fake-task')
예제 #6
0
 def test_power_off_instance_power_state_exception(self, fake_get_ref):
     session = fake.FakeSession()
     fake_instance = mock.MagicMock()
     with contextlib.nested(
         mock.patch.object(session, '_call_method',
                           return_value='fake-task'),
         mock.patch.object(
                 session, '_wait_for_task',
                 side_effect=vexc.InvalidPowerStateException)
     ) as (fake_call_method, fake_wait_for_task):
         vm_util.power_off_instance(session, fake_instance, 'fake-vm-ref')
         fake_call_method.assert_called_once_with(session.vim,
                                                  "PowerOffVM_Task",
                                                  'fake-vm-ref')
         fake_wait_for_task.assert_called_once_with('fake-task')
         self.assertFalse(fake_get_ref.called)
예제 #7
0
 def test_copy_virtual_disk(self):
     session = fake.FakeSession()
     dm = session.vim.service_content.virtualDiskManager
     with contextlib.nested(
         mock.patch.object(session, "_call_method",
                           return_value='fake-task'),
         mock.patch.object(session, "_wait_for_task"),
     ) as (fake_call_method, fake_wait_for_task):
         vm_util.copy_virtual_disk(session, 'fake-dc-ref',
                                   'fake-source', 'fake-dest')
         fake_call_method.assert_called_once_with(
                 session.vim,
                 "CopyVirtualDisk_Task",
                 dm,
                 sourceName='fake-source',
                 sourceDatacenter='fake-dc-ref',
                 destName='fake-dest')
         fake_wait_for_task.assert_called_once_with('fake-task')
예제 #8
0
 def setUp(self):
     super(VMwareVifTestCase, self).setUp()
     network = network_model.Network(id=0,
                                     bridge='fa0',
                                     label='fake',
                                     vlan=3,
                                     bridge_interface='eth0',
                                     injected=True)
     self._network = network
     self.vif = network_model.NetworkInfo([
         network_model.VIF(id=None,
                           address='DE:AD:BE:EF:00:00',
                           network=network,
                           type=None,
                           devname=None,
                           ovs_interfaceid=None,
                           rxtx_cap=3)
     ])[0]
     self.session = fake.FakeSession()
     self.cluster = None
예제 #9
0
    def test_create_vm(self):

        method_list = ['CreateVM_Task', 'get_dynamic_property']

        def fake_call_method(module, method, *args, **kwargs):
            expected_method = method_list.pop(0)
            self.assertEqual(expected_method, method)
            if (expected_method == 'CreateVM_Task'):
                return 'fake_create_vm_task'
            elif (expected_method == 'get_dynamic_property'):
                task_info = mock.Mock(state="success", result="fake_vm_ref")
                return task_info
            else:
                self.fail('Should not get here....')

        def fake_wait_for_task(self, *args):
            task_info = mock.Mock(state="success", result="fake_vm_ref")
            return task_info

        session = fake.FakeSession()
        fake_instance = mock.MagicMock()
        fake_call_mock = mock.Mock(side_effect=fake_call_method)
        fake_wait_mock = mock.Mock(side_effect=fake_wait_for_task)
        with contextlib.nested(
                mock.patch.object(session, '_wait_for_task',
                                  fake_wait_mock),
                mock.patch.object(session, '_call_method',
                                  fake_call_mock)
        ) as (wait_for_task, call_method):
            vm_ref = vm_util.create_vm(
                session,
                fake_instance,
                'fake_vm_folder',
                'fake_config_spec',
                'fake_res_pool_ref')
            self.assertEqual('fake_vm_ref', vm_ref)

            call_method.assert_called_once_with(mock.ANY, 'CreateVM_Task',
                'fake_vm_folder', config='fake_config_spec',
                pool='fake_res_pool_ref')
            wait_for_task.assert_called_once_with('fake_create_vm_task')
예제 #10
0
 def setUp(self):
     super(DsUtilTestCase, self).setUp()
     self.session = fake.FakeSession()
     self.flags(api_retry_count=1, group='vmware')
     fake.reset()
예제 #11
0
    def _test_get_stats_from_cluster(self, connection_state="connected",
                                     maintenance_mode=False):
        ManagedObjectRefs = [fake.ManagedObjectReference("host1",
                                                         "HostSystem"),
                             fake.ManagedObjectReference("host2",
                                                         "HostSystem")]
        hosts = fake._convert_to_array_of_mor(ManagedObjectRefs)
        respool = fake.ManagedObjectReference("resgroup-11", "ResourcePool")
        prop_dict = {'host': hosts, 'resourcePool': respool}

        hardware = fake.DataObject()
        hardware.numCpuCores = 8
        hardware.numCpuThreads = 16
        hardware.vendor = "Intel"
        hardware.cpuModel = "Intel(R) Xeon(R)"

        runtime_host_1 = fake.DataObject()
        runtime_host_1.connectionState = "connected"
        runtime_host_1.inMaintenanceMode = False

        runtime_host_2 = fake.DataObject()
        runtime_host_2.connectionState = connection_state
        runtime_host_2.inMaintenanceMode = maintenance_mode

        prop_list_host_1 = [fake.Prop(name="hardware_summary", val=hardware),
                            fake.Prop(name="runtime_summary",
                                      val=runtime_host_1)]
        prop_list_host_2 = [fake.Prop(name="hardware_summary", val=hardware),
                            fake.Prop(name="runtime_summary",
                                      val=runtime_host_2)]

        fake_objects = fake.FakeRetrieveResult()
        fake_objects.add_object(fake.ObjectContent("prop_list_host1",
                                                   prop_list_host_1))
        fake_objects.add_object(fake.ObjectContent("prop_list_host1",
                                                   prop_list_host_2))

        respool_resource_usage = fake.DataObject()
        respool_resource_usage.maxUsage = 5368709120
        respool_resource_usage.overallUsage = 2147483648

        def fake_call_method(*args):
            if "get_dynamic_properties" in args:
                return prop_dict
            elif "get_properties_for_a_collection_of_objects" in args:
                return fake_objects
            else:
                return respool_resource_usage

        session = fake.FakeSession()
        with mock.patch.object(session, '_call_method', fake_call_method):
            result = vm_util.get_stats_from_cluster(session, "cluster1")
            cpu_info = {}
            mem_info = {}
            if connection_state == "connected" and not maintenance_mode:
                cpu_info['vcpus'] = 32
                cpu_info['cores'] = 16
                cpu_info['vendor'] = ["Intel", "Intel"]
                cpu_info['model'] = ["Intel(R) Xeon(R)",
                                     "Intel(R) Xeon(R)"]
            else:
                cpu_info['vcpus'] = 16
                cpu_info['cores'] = 8
                cpu_info['vendor'] = ["Intel"]
                cpu_info['model'] = ["Intel(R) Xeon(R)"]
            mem_info['total'] = 5120
            mem_info['free'] = 3072
            expected_stats = {'cpu': cpu_info, 'mem': mem_info}
            self.assertEqual(expected_stats, result)