def do_get_repo_units(repo_id, criteria, exception_class, as_generator=False): """ Performs a repo unit association query. This is split apart so we can have custom mixins with different signatures. """ try: association_query_manager = manager_factory.repo_unit_association_query_manager() # Use a get_units as_generator here and cast to a list later, if necessary. units = association_query_manager.get_units(repo_id, criteria=criteria, as_generator=True) # Load all type definitions so we don't hammer the database. type_defs = dict((t['id'], t) for t in types_db.all_type_definitions()) # Transfer object generator. def _transfer_object_generator(): for u in units: yield common_utils.to_plugin_associated_unit(u, type_defs[u['unit_type_id']]) if as_generator: return _transfer_object_generator() # Maintain legacy behavior by default. return list(_transfer_object_generator()) except Exception, e: _LOG.exception('Exception from server requesting all content units for repository [%s]' % repo_id) raise exception_class(e), None, sys.exc_info()[2]
def do_get_repo_units(repo_id, criteria, exception_class, as_generator=False): """ Performs a repo unit association query. This is split apart so we can have custom mixins with different signatures. """ try: association_query_manager = manager_factory.repo_unit_association_query_manager( ) # Use a get_units as_generator here and cast to a list later, if necessary. units = association_query_manager.get_units(repo_id, criteria=criteria, as_generator=True) # Load all type definitions so we don't hammer the database. type_defs = dict((t['id'], t) for t in types_db.all_type_definitions()) # Transfer object generator. def _transfer_object_generator(): for u in units: yield common_utils.to_plugin_associated_unit( u, type_defs[u['unit_type_id']]) if as_generator: return _transfer_object_generator() # Maintain legacy behavior by default. return list(_transfer_object_generator()) except Exception, e: logger.exception( 'Exception from server requesting all content units for repository [%s]' % repo_id) raise exception_class(e), None, sys.exc_info()[2]
def test_migrate(self, start_logging_mock, listdir_mock, mock_plugin_definitions, mock_drop_indices): """ Ensure that migrate() imports types on a clean types database. """ migration.migrate() self.assertTrue(mock_drop_indices.called) all_collection_names = types_db.all_type_collection_names() self.assertEqual(len(all_collection_names), 1) self.assertEqual(['units_test_type_id'], all_collection_names) # Let's make sure we loaded the type definitions correctly db_type_definitions = types_db.all_type_definitions() self.assertEquals(len(db_type_definitions), 1) test_json = json.loads(_test_type_json) for attribute in ['id', 'display_name', 'description', 'unit_key', 'search_indexes']: self.assertEquals(test_json['types'][0][attribute], db_type_definitions[0][attribute]) # Now let's ensure that we have the correct indexes collection = types_db.type_units_collection('test_type_id') indexes = collection.index_information() self.assertEqual(indexes['_id_']['key'], [(u'_id', 1)]) # Make sure we have the unique constraint on all three attributes self.assertEqual(indexes['attribute_1_1_attribute_2_1_attribute_3_1']['unique'], True) self.assertEqual(indexes['attribute_1_1_attribute_2_1_attribute_3_1']['key'], [(u'attribute_1', 1), (u'attribute_2', 1), (u'attribute_3', 1)]) # Make sure we indexed attributes 1 and 3 self.assertEqual(indexes['attribute_1_1']['key'], [(u'attribute_1', 1)]) self.assertEqual(indexes['attribute_3_1']['key'], [(u'attribute_3', 1)]) # Make sure we only have the indexes that we've hand inspected here self.assertEqual(indexes.keys(), [u'_id_', u'attribute_1_1_attribute_2_1_attribute_3_1', u'attribute_1_1', u'attribute_3_1'])
def test_pulp_manage_db_loads_types(self, listdir_mock): """ Test calling pulp-manage-db imports types on a clean types database. """ manage.main() all_collection_names = types_db.all_type_collection_names() self.assertEqual(len(all_collection_names), 1) self.assertEqual(['units_test_type_id'], all_collection_names) # Let's make sure we loaded the type definitions correctly db_type_definitions = types_db.all_type_definitions() self.assertEquals(len(db_type_definitions), 1) test_json = json.loads(_test_type_json) for attribute in ['id', 'display_name', 'description', 'unit_key', 'search_indexes']: self.assertEquals(test_json['types'][0][attribute], db_type_definitions[0][attribute]) # Now let's ensure that we have the correct indexes collection = types_db.type_units_collection('test_type_id') indexes = collection.index_information() self.assertEqual(indexes['_id_']['key'], [(u'_id', 1)]) # Make sure we have the unique constraint on all three attributes self.assertEqual(indexes['attribute_1_1_attribute_2_1_attribute_3_1']['unique'], True) self.assertEqual(indexes['attribute_1_1_attribute_2_1_attribute_3_1']['dropDups'], False) self.assertEqual(indexes['attribute_1_1_attribute_2_1_attribute_3_1']['key'], [(u'attribute_1', 1), (u'attribute_2', 1), (u'attribute_3', 1)]) # Make sure we indexes attributes 1 and 3 self.assertEqual(indexes['attribute_1_1']['dropDups'], False) self.assertEqual(indexes['attribute_1_1']['key'], [(u'attribute_1', 1)]) self.assertEqual(indexes['attribute_3_1']['dropDups'], False) self.assertEqual(indexes['attribute_3_1']['key'], [(u'attribute_3', 1)]) # Make sure we only have the indexes that we've hand inspected here self.assertEqual(indexes.keys(), [u'_id_', u'attribute_1_1_attribute_2_1_attribute_3_1', u'attribute_1_1', u'attribute_3_1'])
def types(self): """ Returns all type definitions loaded in the server. If no definitions are found, an empty list is returned. @return: list of type definitions @rtype: list of dict """ all_defs = types_database.all_type_definitions() return all_defs
def types(self): """ Returns all type definitions loaded in the server. If no definitions are found, an empty list is returned. :return: list of type definitions :rtype: list of dict """ all_defs = types_database.all_type_definitions() return all_defs
def test_pulp_manage_db_loads_types(self, initialize, start_logging_mock, listdir_mock, mock_drop_indices): """ Test calling pulp-manage-db imports types on a clean types database. """ manage.main() all_collection_names = types_db.all_type_collection_names() self.assertFalse(mock_drop_indices.called) self.assertEqual(len(all_collection_names), 1) self.assertEqual(['units_test_type_id'], all_collection_names) # Let's make sure we loaded the type definitions correctly db_type_definitions = types_db.all_type_definitions() self.assertEquals(len(db_type_definitions), 1) test_json = json.loads(_test_type_json) for attribute in [ 'id', 'display_name', 'description', 'unit_key', 'search_indexes' ]: self.assertEquals(test_json['types'][0][attribute], db_type_definitions[0][attribute]) # Now let's ensure that we have the correct indexes collection = types_db.type_units_collection('test_type_id') indexes = collection.index_information() self.assertEqual(indexes['_id_']['key'], [(u'_id', 1)]) # Make sure we have the unique constraint on all three attributes self.assertEqual( indexes['attribute_1_1_attribute_2_1_attribute_3_1']['unique'], True) self.assertEqual( indexes['attribute_1_1_attribute_2_1_attribute_3_1']['dropDups'], False) self.assertEqual( indexes['attribute_1_1_attribute_2_1_attribute_3_1']['key'], [(u'attribute_1', 1), (u'attribute_2', 1), (u'attribute_3', 1)]) # Make sure we indexes attributes 1 and 3 self.assertEqual(indexes['attribute_1_1']['dropDups'], False) self.assertEqual(indexes['attribute_1_1']['key'], [(u'attribute_1', 1)]) self.assertEqual(indexes['attribute_3_1']['dropDups'], False) self.assertEqual(indexes['attribute_3_1']['key'], [(u'attribute_3', 1)]) # Make sure we only have the indexes that we've hand inspected here self.assertEqual(indexes.keys(), [ u'_id_', u'attribute_1_1_attribute_2_1_attribute_3_1', u'attribute_1_1', u'attribute_3_1' ]) initialize.assert_called_once_with(max_timeout=1)
def test_all_type_definitions(self): """ Tests retrieving all type definitions from the database. """ # Setup defs = [DEF_1, DEF_2, DEF_3, DEF_4] types_db.update_database(defs) # Test all_defs = types_db.all_type_definitions() # Verify self.assertEqual(4, len(all_defs))