Пример #1
0
    def test_schedule_group(self, specs, _mock_service_get_all):
        # Make sure _schedule_group() can find host successfully.
        sched = fakes.FakeFilterScheduler()
        sched.host_manager = fakes.FakeHostManager()
        fake_context = context.RequestContext('user', 'project',
                                              is_admin=True)

        fakes.mock_host_manager_db_calls(_mock_service_get_all)

        request_spec = {'volume_properties': {'project_id': 1,
                                              'size': 0},
                        'volume_type': {'name': 'Type1',
                                        'extra_specs': specs}}
        request_spec2 = {'volume_properties': {'project_id': 1,
                                               'size': 0},
                         'volume_type': {'name': 'Type2',
                                         'extra_specs': specs}}
        request_spec_list = [request_spec, request_spec2]
        group_spec = {'group_type': {'name': 'GrpType'},
                      'volume_properties': {'project_id': 1,
                                            'size': 0}}
        weighed_host = sched._schedule_generic_group(fake_context,
                                                     group_spec,
                                                     request_spec_list,
                                                     {}, [])
        self.assertIsNotNone(weighed_host.obj)
        self.assertTrue(_mock_service_get_all.called)
    def test_schedule_consistencygroup(self, _mock_service_get_all_by_topic):
        # Make sure _schedule_group() can find host successfully.
        sched = fakes.FakeFilterScheduler()
        sched.host_manager = fakes.FakeHostManager()
        fake_context = context.RequestContext('user', 'project', is_admin=True)

        fakes.mock_host_manager_db_calls(_mock_service_get_all_by_topic)

        specs = {'capabilities:consistencygroup_support': '<is> True'}
        request_spec = {
            'volume_properties': {
                'project_id': 1,
                'size': 0
            },
            'volume_type': {
                'name': 'Type1',
                'extra_specs': specs
            }
        }
        request_spec2 = {
            'volume_properties': {
                'project_id': 1,
                'size': 0
            },
            'volume_type': {
                'name': 'Type2',
                'extra_specs': specs
            }
        }
        request_spec_list = [request_spec, request_spec2]
        weighed_host = sched._schedule_group(fake_context, request_spec_list,
                                             {})
        self.assertIsNotNone(weighed_host.obj)
        self.assertTrue(_mock_service_get_all_by_topic.called)
    def test_create_volume_update_fault(self, _mock_service_get_all,
                                        _mock_volume_get,
                                        _mock_vol_fault_update,
                                        _mock_vol_update):
        sched = fakes.FakeFilterScheduler()
        sched.host_manager = fakes.FakeHostManager()
        fake_context = context.RequestContext('user', 'project', is_admin=True)

        fakes.mock_host_manager_db_calls(_mock_service_get_all)

        volume = fake_volume.fake_volume_obj(self.context)
        _mock_volume_get.return_value = volume

        driver.volume_update_db(self.context, volume.id, 'fake_host',
                                'fake_cluster')

        request_spec = {
            'volume_type': {
                'name': 'LVM_iSCSI'
            },
            'volume_properties': {
                'project_id': 1,
                'size': 1
            },
            'volume_id': volume.id,
            'snapshot_id': None,
            'image_id': None
        }
        request_spec = objects.RequestSpec.from_primitives(request_spec)
        sched.schedule_create_volume(fake_context, request_spec, {})
        _mock_vol_fault_update.assert_called_once_with(
            fake_context, volume.id, dict(message='', details=''))
Пример #4
0
    def test_schedule_consistencygroup_no_cg_support_in_extra_specs(
            self,
            _mock_service_get_all):
        # Make sure _schedule_group() can find host successfully even
        # when consistencygroup_support is not specified in volume type's
        # extra specs
        sched = fakes.FakeFilterScheduler()
        sched.host_manager = fakes.FakeHostManager()
        fake_context = context.RequestContext('user', 'project',
                                              is_admin=True)

        fakes.mock_host_manager_db_calls(_mock_service_get_all)

        request_spec = {'volume_properties': {'project_id': 1,
                                              'size': 0},
                        'volume_type': {'name': 'Type1',
                                        'extra_specs': {}}}
        request_spec2 = {'volume_properties': {'project_id': 1,
                                               'size': 0},
                         'volume_type': {'name': 'Type2',
                                         'extra_specs': {}}}
        request_spec_list = [request_spec, request_spec2]
        weighed_host = sched._schedule_group(fake_context,
                                             request_spec_list,
                                             {})
        self.assertIsNotNone(weighed_host.obj)
        self.assertTrue(_mock_service_get_all.called)
    def _host_passes_filters_setup(self, mock_obj):
        sched = fakes.FakeFilterScheduler()
        sched.host_manager = fakes.FakeHostManager()
        fake_context = context.RequestContext('user', 'project', is_admin=True)

        fakes.mock_host_manager_db_calls(mock_obj)

        return (sched, fake_context)
Пример #6
0
 def setUp(self):
     super(VolumeNumberWeigherTestCase, self).setUp()
     uid = fake_constants.USER_ID
     pid = fake_constants.PROJECT_ID
     self.context = context.RequestContext(user_id=uid,
                                           project_id=pid,
                                           is_admin=False,
                                           read_deleted="no",
                                           overwrite=False)
     self.host_manager = fakes.FakeHostManager()
     self.weight_handler = weights.OrderedHostWeightHandler(
         'cinder.scheduler.weights')
Пример #7
0
 def test_create_volume_host_same_as_cg(self, _mock_service_get_all):
     # Ensure we don't clear the host whose backend is same as
     # consistencygroup's backend.
     sched = fakes.FakeFilterScheduler()
     sched.host_manager = fakes.FakeHostManager()
     fakes.mock_host_manager_db_calls(_mock_service_get_all)
     fake_context = context.RequestContext('user', 'project')
     request_spec = {'volume_properties': {'project_id': 1,
                                           'size': 1},
                     'volume_type': {'name': 'LVM_iSCSI'},
                     'CG_backend': 'host1'}
     weighed_host = sched._schedule(fake_context, request_spec, {})
     self.assertEqual('host1#lvm1', weighed_host.obj.host)
Пример #8
0
 def test_create_volume_clear_host_different_with_cg(self,
                                                     _mock_service_get_all):
     # Ensure we clear those hosts whose backend is not same as
     # consistencygroup's backend.
     sched = fakes.FakeFilterScheduler()
     sched.host_manager = fakes.FakeHostManager()
     fakes.mock_host_manager_db_calls(_mock_service_get_all)
     fake_context = context.RequestContext('user', 'project')
     request_spec = {'volume_properties': {'project_id': 1,
                                           'size': 1},
                     'volume_type': {'name': 'LVM_iSCSI'},
                     'CG_backend': 'host@lvmdriver'}
     weighed_host = sched._schedule(fake_context, request_spec, {})
     self.assertIsNone(weighed_host)
Пример #9
0
 def test_create_volume_host_different_with_resource_backend(
         self, resource_backend, multibackend_with_pools,
         _mock_service_get_all):
     sched = fakes.FakeFilterScheduler()
     sched.host_manager = fakes.FakeHostManager(
         multibackend_with_pools=multibackend_with_pools)
     fakes.mock_host_manager_db_calls(
         _mock_service_get_all, backends_with_pools=multibackend_with_pools)
     fake_context = context.RequestContext('user', 'project')
     request_spec = {'volume_properties': {'project_id': 1,
                                           'size': 1},
                     'volume_type': {'name': 'LVM_iSCSI'},
                     'resource_backend': resource_backend}
     weighed_host = sched._schedule(fake_context, request_spec, {})
     self.assertIsNone(weighed_host)
Пример #10
0
    def test_schedule_happy_day(self, _mock_service_get_all_by_topic):
        # Make sure there's nothing glaringly wrong with _schedule()
        # by doing a happy day pass through.
        sched = fakes.FakeFilterScheduler()
        sched.host_manager = fakes.FakeHostManager()
        fake_context = context.RequestContext('user', 'project',
                                              is_admin=True)

        fakes.mock_host_manager_db_calls(_mock_service_get_all_by_topic)

        request_spec = {'volume_type': {'name': 'LVM_iSCSI'},
                        'volume_properties': {'project_id': 1,
                                              'size': 1}}
        weighed_host = sched._schedule(fake_context, request_spec, {})
        self.assertIsNotNone(weighed_host.obj)
        self.assertTrue(_mock_service_get_all_by_topic.called)
Пример #11
0
 def test_create_volume_host_same_as_resource(self, resource_backend,
                                              multibackend_with_pools,
                                              _mock_service_get_all):
     # Ensure we don't clear the host whose backend is same as
     # requested backend (ex: create from source-volume/snapshot,
     # or create within a group)
     sched = fakes.FakeFilterScheduler()
     sched.host_manager = fakes.FakeHostManager(
         multibackend_with_pools=multibackend_with_pools)
     fakes.mock_host_manager_db_calls(
         _mock_service_get_all, backends_with_pools=multibackend_with_pools)
     fake_context = context.RequestContext('user', 'project')
     request_spec = {'volume_properties': {'project_id': 1,
                                           'size': 1},
                     'volume_type': {'name': 'LVM_iSCSI'},
                     'resource_backend': resource_backend}
     weighed_host = sched._schedule(fake_context, request_spec, {})
     self.assertIn(resource_backend, weighed_host.obj.host)
Пример #12
0
 def setUp(self):
     super(CapacityWeigherTestCase, self).setUp()
     self.host_manager = fakes.FakeHostManager()
     self.weight_handler = weights.OrderedHostWeightHandler(
         'cinder.scheduler.weights')
Пример #13
0
 def setUp(self):
     super(VolumeNumberWeigherTestCase, self).setUp()
     self.context = context.get_admin_context()
     self.host_manager = fakes.FakeHostManager()
     self.weight_handler = weights.HostWeightHandler(
         'cinder.scheduler.weights')