def mirror(config): # Always reference those classes here with the fully qualified name to # allow them being patched by mock libraries! master = bandersnatch.master.Master( config.get('mirror', 'master'), float(config.get('mirror', 'timeout'))) mirror = bandersnatch.mirror.Mirror( config.get('mirror', 'directory'), master, stop_on_error=config.getboolean('mirror', 'stop-on-error'), workers=config.getint('mirror', 'workers'), delete_packages=config.getboolean('mirror', 'delete-packages')) mirror.synchronize()
def mirror(config): # Load the filter plugins so the loading doesn't happen in the fast path filter_project_plugins() filter_release_plugins() # Always reference those classes here with the fully qualified name to # allow them being patched by mock libraries! master = bandersnatch.master.Master( config.get("mirror", "master"), config.getfloat("mirror", "timeout") ) # `json` boolean is a new optional option in 2.1.2 - want to support it # not existing in old configs and display an error saying that this will # error in the not to distance release try: json_save = config.getboolean("mirror", "json") except configparser.NoOptionError: logger.error( "Please update your config to include a json " + "boolean in the [mirror] section. Setting to False" ) json_save = False try: root_uri = config.get("mirror", "root_uri") except configparser.NoOptionError: root_uri = None try: digest_name = config.get("mirror", "digest_name") except configparser.NoOptionError: digest_name = "sha256" if digest_name not in ("md5", "sha256"): raise ValueError( f"Supplied digest_name {digest_name} is not supported! Please " + "update digest_name to one of ('sha256', 'md5') in the [mirror] " + "section." ) mirror = bandersnatch.mirror.Mirror( config.get("mirror", "directory"), master, stop_on_error=config.getboolean("mirror", "stop-on-error"), workers=config.getint("mirror", "workers"), hash_index=config.getboolean("mirror", "hash-index"), json_save=json_save, root_uri=root_uri, digest_name=digest_name, keep_index_versions=config.getint("mirror", "keep_index_versions", fallback=0), ) changed_packages = mirror.synchronize() logger.info("{} packages had changes".format(len(changed_packages))) for package_name, changes in changed_packages.items(): logger.debug(f"{package_name} added: {changes}")