def test_get_all_types_search(self): share_type = self.fake_type_w_extra search_filter = {"extra_specs": {"gold": "True"}, "is_public": True} self.mock_object(db, "share_type_get_all", mock.Mock(return_value=share_type)) returned_type = share_types.get_all_types(self.context, search_opts=search_filter) db.share_type_get_all.assert_called_once_with(mock.ANY, 0, filters={"is_public": True}) self.assertItemsEqual(share_type, returned_type) search_filter = {"extra_specs": {"gold": "False"}} returned_type = share_types.get_all_types(self.context, search_opts=search_filter) self.assertEqual({}, returned_type)
def test_get_all_types_search(self): share_type = self.fake_type_w_extra search_filter = {"extra_specs": {"gold": "True"}, 'is_public': True} self.mock_object(db, 'share_type_get_all', mock.Mock(return_value=share_type)) returned_type = share_types.get_all_types(self.context, search_opts=search_filter) db.share_type_get_all.assert_called_once_with( mock.ANY, 0, filters={'is_public': True}) self.assertItemsEqual(share_type, returned_type) search_filter = {"extra_specs": {"gold": "False"}} returned_type = share_types.get_all_types(self.context, search_opts=search_filter) self.assertEqual({}, returned_type)
def _get_share_types(self, req): """Helper function that returns a list of type dicts.""" filters = {} context = req.environ['manila.context'] if context.is_admin: # Only admin has query access to all share types filters['is_public'] = self._parse_is_public( req.params.get('is_public')) else: filters['is_public'] = True extra_specs = req.params.get('extra_specs', {}) extra_specs_disallowed = (req.api_version_request < api_version.APIVersionRequest("2.43")) if extra_specs and extra_specs_disallowed: msg = _("Filter by 'extra_specs' is not supported by this " "microversion. Use 2.43 or greater microversion to " "be able to use filter search by 'extra_specs.") raise webob.exc.HTTPBadRequest(explanation=msg) elif extra_specs: extra_specs = ast.literal_eval(extra_specs) filters['extra_specs'] = share_types.sanitize_extra_specs( extra_specs) limited_types = share_types.get_all_types( context, search_opts=filters).values() return list(limited_types)
def _get_share_types(self, req): """Helper function that returns a list of type dicts.""" filters = {} context = req.environ['manila.context'] if context.is_admin: # Only admin has query access to all share types filters['is_public'] = self._parse_is_public( req.params.get('is_public')) else: filters['is_public'] = True if (req.api_version_request < api_version.APIVersionRequest("2.43")): extra_specs = req.params.get('extra_specs') if extra_specs: msg = _("Filter by 'extra_specs' is not supported by this " "microversion. Use 2.43 or greater microversion to " "be able to use filter search by 'extra_specs.") raise webob.exc.HTTPBadRequest(explanation=msg) else: extra_specs = req.params.get('extra_specs') if extra_specs: filters['extra_specs'] = ast.literal_eval(extra_specs) limited_types = share_types.get_all_types( context, search_opts=filters).values() return list(limited_types)
def _get_share_types(self, req): """Helper function that returns a list of type dicts.""" filters = {} context = req.environ['manila.context'] if context.is_admin: # Only admin has query access to all share types filters['is_public'] = self._parse_is_public( req.params.get('is_public')) else: filters['is_public'] = True limited_types = share_types.get_all_types( context, search_opts=filters).values() return list(limited_types)
def test_get_all_types_search(self): share_type = self.fake_type_w_extra search_filter = {'extra_specs': {'gold': 'True'}, 'is_public': True} self.mock_object(db, 'share_type_get_all', mock.Mock(return_value=share_type)) returned_type = share_types.get_all_types(self.context, search_opts=search_filter) db.share_type_get_all.assert_called_once_with( mock.ANY, 0, filters={'is_public': True}) self.assertItemsEqual(share_type, returned_type) search_filter = {'extra_specs': {'gold': 'False'}} expected_types = {} returned_types = share_types.get_all_types(self.context, search_opts=search_filter) self.assertEqual(expected_types, returned_types) share_type = self.fake_r_type_extra search_filter = {'extra_specs': {'gold': 'True'}} returned_type = share_types.get_all_types(self.context, search_opts=search_filter) self.assertItemsEqual(share_type, returned_type)
def test_get_all_types_search_by_availability_zone(self, search_azs): all_share_types = { 'gold': { 'extra_specs': { 'somepoolcap': 'somevalue', 'availability_zones': 'nova,supernova,hypernova', }, 'required_extra_specs': { 'driver_handles_share_servers': True, }, 'id': '1e8f93a8-9669-4467-88a0-7b8229a9a609', 'name': u'gold-share-type', 'is_public': True, }, 'silver': { 'extra_specs': { 'somepoolcap': 'somevalue', 'availability_zones': 'nova,supernova', }, 'required_extra_specs': { 'driver_handles_share_servers': False, }, 'id': '39a7b9a8-8c76-4b49-aed3-60b718d54325', 'name': u'silver-share-type', 'is_public': True, }, 'bronze': { 'extra_specs': { 'somepoolcap': 'somevalue', 'availability_zones': 'milkyway,andromeda', }, 'required_extra_specs': { 'driver_handles_share_servers': True, }, 'id': '5a55a54d-6688-49b4-9344-bfc2d9634f70', 'name': u'bronze-share-type', 'is_public': True, }, 'default': { 'extra_specs': { 'somepoolcap': 'somevalue', }, 'required_extra_specs': { 'driver_handles_share_servers': True, }, 'id': '5a55a54d-6688-49b4-9344-bfc2d9634f70', 'name': u'bronze-share-type', 'is_public': True, } } self.mock_object( db, 'share_type_get_all', mock.Mock(return_value=all_share_types)) self.mock_object(share_types, 'get_valid_required_extra_specs') search_opts = { 'extra_specs': { 'somepoolcap': 'somevalue', 'availability_zones': search_azs }, 'is_public': True, } returned_types = share_types.get_all_types( self.context, search_opts=search_opts) db.share_type_get_all.assert_called_once_with( mock.ANY, 0, filters={'is_public': True}) expected_return_types = (['gold', 'silver', 'default'] if len(search_azs.split(',')) < 3 else ['gold', 'default']) self.assertEqual(sorted(expected_return_types), sorted(returned_types))
def test_get_all_types(self, share_type): self.mock_object(db, 'share_type_get_all', mock.Mock(return_value=copy.deepcopy(share_type))) returned_type = share_types.get_all_types(self.context) self.assertEqual(sorted(share_type), sorted(returned_type))
def test_get_all_types(self, share_type): self.mock_object(db, 'share_type_get_all', mock.Mock(return_value=copy.deepcopy(share_type))) returned_type = share_types.get_all_types(self.context) self.assertItemsEqual(share_type, returned_type)