55import pprint
66import typing
77
8- from alws .utils . pulp_client import PulpClient
8+ from alws .utils import pulp_client as pulp_cli
99from scripts .utils .pulp import get_pulp_params
1010
11-
1211PROG_NAME = "backup_beta_repositories"
1312# We search using startswith
1413PLATFORM_REPO_MAP = {
1514 "almalinux_9" : "AlmaLinux-9-beta-AlmaLinux-9" ,
1615 "almalinux_10" : "eabdullin1-almalinux10-beta-almalinux-10" ,
16+ "almalinux_10_epel" : "eabdullin1-epel-al-almalinux-10" ,
1717}
1818
1919ReposType = typing .List [typing .Dict [str , typing .Any ]]
2020
21+
2122async def find_pulp_repos (
22- name_starts : str ,
23- pulp_client : typing .Optional [PulpClient ] = None
23+ name_starts : str , pulp_client : typing .Optional [pulp_cli .PulpClient ] = None
2424) -> ReposType :
2525 if not pulp_client :
2626 host , user , password = get_pulp_params ()
27- pulp_client = PulpClient (host , user , password )
27+ pulp_client = pulp_cli . PulpClient (host , user , password )
2828 repositories = await pulp_client .get_rpm_repositories_by_params (
29- {"name__startswith" : name_starts })
29+ {"name__startswith" : name_starts }
30+ )
3031 repositories = [r for r in repositories if "backup" not in r ["name" ]]
3132
3233 return repositories
3334
3435
3536async def create_pulp_backup_repos (
36- repos : ReposType ,
37- dry_run : bool = False ,
38- pulp_client : typing .Optional [PulpClient ] = None
37+ repos : ReposType ,
38+ dry_run : bool = False ,
39+ pulp_client : typing .Optional [pulp_cli . PulpClient ] = None ,
3940) -> typing .Dict [str , typing .Dict [str , typing .Any ]]:
4041 logger = logging .getLogger (PROG_NAME )
4142 if not pulp_client :
4243 host , user , password = get_pulp_params ()
43- pulp_client = PulpClient (host , user , password )
44+ pulp_client = pulp_cli . PulpClient (host , user , password )
4445
4546 result = {}
4647 for repo in repos :
@@ -51,8 +52,9 @@ async def create_pulp_backup_repos(
5152 backup_repo = await pulp_client .get_rpm_repository (backup_repo_name )
5253 if not backup_repo :
5354 url , href = await pulp_client .create_rpm_repository (
54- backup_repo_name , create_publication = True ,
55- base_path_start = "backups"
55+ backup_repo_name ,
56+ create_publication = True ,
57+ base_path_start = "backups" ,
5658 )
5759 logger .info ("Backup repository URL: %s, href: %s" , url , href )
5860 backup_repo = await pulp_client .get_rpm_repository (backup_repo_name )
@@ -64,7 +66,8 @@ async def _main(repos_to_backup, dry_run: bool = False):
6466 logger = logging .getLogger (PROG_NAME )
6567 logger .debug ("Acquiring Pulp connection data and creating client" )
6668 host , user , password = get_pulp_params ()
67- pulp_client = PulpClient (host , user , password )
69+ pulp_cli .PULP_SEMAPHORE = asyncio .Semaphore (10 )
70+ pulp_client = pulp_cli .PulpClient (host , user , password )
6871 logger .info ("Searching for all beta repositories" )
6972 repos = []
7073 for repo_to_backup in repos_to_backup :
@@ -82,13 +85,9 @@ async def _main(repos_to_backup, dry_run: bool = False):
8285 version_href = repo ["latest_version_href" ]
8386 logger .debug ("Version href: %s" , version_href )
8487 pkgs = await pulp_client .get_rpm_packages (
85- include_fields = fields ,
86- repository_version = version_href ,
87- limit = 1000
88- )
89- modules = await pulp_client .get_modules (
90- repository_version = version_href
88+ include_fields = fields , repository_version = version_href , limit = 1000
9189 )
90+ modules = await pulp_client .get_modules (repository_version = version_href )
9291 for entity in itertools .chain (pkgs , modules ):
9392 hrefs .append (entity ["pulp_href" ])
9493 backup_repo = backup_repos [repo ["name" ]]
@@ -109,7 +108,8 @@ async def _main(repos_to_backup, dry_run: bool = False):
109108 )
110109 remove_tasks .append (
111110 pulp_client .modify_repository (
112- repo ["pulp_href" ], add = [], remove = hrefs )
111+ repo ["pulp_href" ], add = [], remove = hrefs
112+ )
113113 )
114114 if not repo .get ("autopublish" , False ):
115115 publications_tasks .append (
@@ -132,16 +132,27 @@ async def _main(repos_to_backup, dry_run: bool = False):
132132
133133def main ():
134134 parser = argparse .ArgumentParser (PROG_NAME )
135- parser .add_argument ("-v" , "--verbose" , action = "store_true" , default = False ,
136- help = "Enable verbose output" )
137- parser .add_argument ("-d" , "--dry-run" , action = "store_true" , default = False ,
138- help = "Output everything that will happen, "
139- "but do not create/modify anything" )
135+ parser .add_argument (
136+ "-v" ,
137+ "--verbose" ,
138+ action = "store_true" ,
139+ default = False ,
140+ help = "Enable verbose output" ,
141+ )
142+ parser .add_argument (
143+ "-d" ,
144+ "--dry-run" ,
145+ action = "store_true" ,
146+ default = False ,
147+ help = "Output everything that will happen, "
148+ "but do not create/modify anything" ,
149+ )
140150 for platform in PLATFORM_REPO_MAP :
141151 parser .add_argument (
142- f"--{ platform } " , f"--{ platform .replace ('_' , '-' )} " ,
152+ f"--{ platform } " ,
153+ f"--{ platform .replace ('_' , '-' )} " ,
143154 help = f"Create backups of { platform } beta repos" ,
144- action = "store_true"
155+ action = "store_true" ,
145156 )
146157 args = parser .parse_args ()
147158
0 commit comments