def setUp(self): super(Migration0004Tests, self).setUp() # Special way to import modules that start with a number self.migration = _import_all_the_way( 'pulp_rpm.plugins.migrations.0004_pkg_group_category_repoid') factory.initialize() api.initialize(False) types_db.update_database([TYPE_DEF_GROUP, TYPE_DEF_CATEGORY]) # Create the repositories necessary for the tests self.source_repo_id = 'source-repo' # where units were copied from with the bad code self.dest_repo_id = 'dest-repo' # where bad units were copied to source_repo = model.Repository(repo_id=self.source_repo_id) source_repo.save() dest_repo = model.Repository(repo_id=self.dest_repo_id) dest_repo.save() source_importer = model.Importer(self.source_repo_id, 'yum_importer', {}) source_importer.save() dest_importer = model.Importer(self.dest_repo_id, 'yum_importer', {}) dest_importer.save()
def _initialize_pulp(): # XXX ORDERING COUNTS # This initialization order is very sensitive, and each touches a number of # sub-systems in pulp. If you get this wrong, you will have pulp tripping # over itself on start up. If you do not know where to add something, ASK! global _IS_INITIALIZED, STACK_TRACER if _IS_INITIALIZED: return _IS_INITIALIZED = True # check our db version and other support check_version() # pulp generic content initialization manager_factory.initialize() plugin_api.initialize() # new async dispatch initialization dispatch_factory.initialize() # ensure necessary infrastructure ensure_builtin_roles() ensure_admin() # agent services AgentServices.start() # setup debugging, if configured if config.config.getboolean('server', 'debugging_mode'): STACK_TRACER = StacktraceDumper() STACK_TRACER.start()
def migrate(*args, **kwargs): """ For each repository with a yum distributor, clean up the old yum distributor's mess and re-publish the repository with the new distributor. """ if not api._is_initialized(): api.initialize() distributor_collection = get_collection('repo_distributors') yum_distributors = list(distributor_collection.find({'distributor_type_id': YUM_DISTRIBUTOR_ID})) repo_collection = get_collection('repos') repo_ids = list(set(d['repo_id'] for d in yum_distributors)) repos = dict((r['id'], r) for r in repo_collection.find({'id': {'$in': repo_ids}})) for d in yum_distributors: repo = repos[d['repo_id']] config = d['config'] or {} if d['last_publish'] is None: continue _clear_working_dir(repo) _clear_old_publish_dirs(repo, config) _re_publish_repository(repo, d) _remove_legacy_publish_dirs()
def _initialize_pulp(): # This initialization order is very sensitive, and each touches a number of # sub-systems in pulp. If you get this wrong, you will have pulp tripping # over itself on start up. global _IS_INITIALIZED, STACK_TRACER if _IS_INITIALIZED: return # Verify the database has been migrated to the correct version. This is # very likely a reason the server will fail to start. try: migration_models.check_package_versions() except Exception: msg = 'The database has not been migrated to the current version. ' msg += 'Run pulp-manage-db and restart the application.' raise InitializationException(msg), None, sys.exc_info()[2] # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = 'One or more plugins failed to initialize. If a new type has ' msg += 'been added, run pulp-manage-db to load the type into the ' msg += 'database and restart the application. ' msg += 'Error message: %s' % str(e) raise InitializationException(msg), None, sys.exc_info()[2]
def _initialize_pulp(): # This initialization order is very sensitive, and each touches a number of # sub-systems in pulp. If you get this wrong, you will have pulp tripping # over itself on start up. global _IS_INITIALIZED, STACK_TRACER if _IS_INITIALIZED: return # configure agent services AgentServices.init() # Verify the database has been migrated to the correct version. This is # very likely a reason the server will fail to start. try: migration_models.check_package_versions() except Exception: msg = 'The database has not been migrated to the current version. ' msg += 'Run pulp-manage-db and restart the application.' raise InitializationException(msg), None, sys.exc_info()[2] # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = 'One or more plugins failed to initialize. If a new type has ' msg += 'been added, run pulp-manage-db to load the type into the ' msg += 'database and restart the application. ' msg += 'Error message: %s' % str(e) raise InitializationException(msg), None, sys.exc_info()[2]
def migrate(*args, **kwargs): """ For each repository with a yum distributor, clean up the old yum distributor's mess and re-publish the repository with the new distributor. """ if not api._is_initialized(): api.initialize() distributor_collection = get_collection('repo_distributors') yum_distributors = list( distributor_collection.find({'distributor_type_id': YUM_DISTRIBUTOR_ID})) repo_ids = list(set(d['repo_id'] for d in yum_distributors)) repo_objs = model.Repository.objects(repo_id__in=repo_ids) repos = dict((repo_obj.repo_id, repo_obj.to_transfer_repo()) for repo_obj in repo_objs) for d in yum_distributors: repo = repos[d['repo_id']] config = d['config'] or {} if d.get('last_publish') is None: continue _clear_working_dir(repo) _clear_old_publish_dirs(repo, config) _re_publish_repository(repo, d) _remove_legacy_publish_dirs()
def migrate(*args, **kwargs): """ For each repository with a yum distributor, clean up the old yum distributor's mess and re-publish the repository with the new distributor. """ if not api._is_initialized(): api.initialize() distributor_collection = get_collection('repo_distributors') yum_distributors = list( distributor_collection.find( {'distributor_type_id': YUM_DISTRIBUTOR_ID})) repo_collection = get_collection('repos') repo_ids = list(set(d['repo_id'] for d in yum_distributors)) repos = dict((r['id'], r) for r in repo_collection.find({'id': { '$in': repo_ids }})) for d in yum_distributors: repo = repos[d['repo_id']] config = d['config'] or {} if d['last_publish'] is None: continue _clear_working_dir(repo) _clear_old_publish_dirs(repo, config) _re_publish_repository(repo, d) _remove_legacy_publish_dirs()
def _initialize_pulp(): # This initialization order is very sensitive, and each touches a number of # sub-systems in pulp. If you get this wrong, you will have pulp tripping # over itself on start up. global _IS_INITIALIZED, STACK_TRACER if _IS_INITIALIZED: return # Verify the database has been migrated to the correct version. This is # very likely a reason the server will fail to start. try: migration_models.check_package_versions() except Exception: msg = 'The database has not been migrated to the current version. ' msg += 'Run pulp-manage-db and restart the application.' raise InitializationException(msg), None, sys.exc_info()[2] # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception: msg = 'One or more plugins failed to initialize. If a new type has ' msg += 'been added, run pulp-manage-db to load the type into the ' msg += 'database and restart the application.' raise InitializationException(msg), None, sys.exc_info()[2] # There's a significantly smaller chance the following calls will fail. # The previous two are likely user errors, but the remainder represent # something gone horribly wrong. As such, I'm not going to account for each # and instead simply let the exception itself bubble up. # Load the mappings of manager type to managers manager_factory.initialize() # Initialize the tasking subsystem dispatch_factory.initialize() # Ensure the minimal auth configuration role_manager = manager_factory.role_manager() role_manager.ensure_super_user_role() user_manager = manager_factory.user_manager() user_manager.ensure_admin() # database document reaper reaper.initialize() # agent services AgentServices.start() # Setup debugging, if configured if config.config.getboolean('server', 'debugging_mode'): STACK_TRACER = StacktraceDumper() STACK_TRACER.start() # If we got this far, it was successful, so flip the flag _IS_INITIALIZED = True
def test_init_calls_entry_points(self, mock_load): api._MANAGER = None # This test is problematic, because it relies on the pulp_rpm package, which depends on this # package. We should really mock the type loading and test that the mocked types were loaded # For now, we can get around the problem by just calling load_content_types. api.load_content_types() api.initialize() # calls for 5 types of plugins self.assertEqual(mock_load.call_count, 6)
def initialize(): global _IS_INITIALIZED if _IS_INITIALIZED: return # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = 'One or more plugins failed to initialize. If a new type has ' msg += 'been added, run pulp-manage-db to load the type into the ' msg += 'database and restart the application. ' msg += 'Error message: %s' % str(e) raise InitializationException(msg), None, sys.exc_info()[2]
def setUp(self): PulpRPMTests.setUp(self) Consumer.get_collection().remove() Repo.get_collection().remove() RepoContentUnit.get_collection().remove() RepoDistributor.get_collection().remove() self.init_types() plugins.initialize() plugins._MANAGER.profilers.add_plugin( 'ERRATA_PROFILER', RPMErrataProfiler, {}, (self.ERRATA_TYPE_ID,)) plugins._MANAGER.distributors.add_plugin( FakeDistributor.ID, FakeDistributor, {}, (self.ERRATA_TYPE_ID,))
def initialize(): global _IS_INITIALIZED if _IS_INITIALIZED: return # This is here temporarily, so that we can run the monkey patches for qpid and stuff import kombu.transport.qpid # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = 'One or more plugins failed to initialize. If a new type has ' msg += 'been added, run pulp-manage-db to load the type into the ' msg += 'database and restart the application. ' msg += 'Error message: %s' % str(e) raise InitializationException(msg), None, sys.exc_info()[2]
def initialize(): global _IS_INITIALIZED if _IS_INITIALIZED: return # This is here temporarily, so that we can run the monkey patches for qpid and stuff import kombu.transport.qpid # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = _( 'One or more plugins failed to initialize. If a new type has been added, ' 'run pulp-manage-db to load the type into the database and restart the application. ' 'Error message: %s') msg = msg % str(e) raise InitializationException(msg), None, sys.exc_info()[2]
def initialize(): global _IS_INITIALIZED if _IS_INITIALIZED: return db_connection.initialize() # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = _( 'One or more plugins failed to initialize. If a new type has been added, ' 'run pulp-manage-db to load the type into the database and restart the application. ' 'Error message: %s') msg = msg % str(e) logger.error(msg) raise
def initialize(): """ This function performs common initialization tasks that all of our processes need to perform. It starts the database connection, initializes the plugin API, and starts the manager factory. """ global _IS_INITIALIZED if _IS_INITIALIZED: return db_connection.initialize() # Load plugins and resolve against types. This is also a likely candidate # for causing the server to fail to start. try: plugin_api.initialize() except Exception, e: msg = _( 'One or more plugins failed to initialize. If a new type has been added, ' 'run pulp-manage-db to load the type into the database and restart the application. ' 'Error message: %s') msg = msg % str(e) logger.error(msg) raise