|
10 | 10 |
|
11 | 11 |
|
12 | 12 | PROG_NAME = "backup_beta_repositories" |
13 | | -ReposType = typing.List[typing.Dict[str, typing.Any]] |
| 13 | +PLATFORM_REPO_MAP = { |
| 14 | + "almalinux_9": "AlmaLinux-9-beta", |
| 15 | + "almalinux_10": "almalinux10-beta", |
| 16 | +} |
14 | 17 |
|
| 18 | +ReposType = typing.List[typing.Dict[str, typing.Any]] |
15 | 19 |
|
16 | 20 | async def find_pulp_repos( |
17 | 21 | name_starts: str, |
@@ -55,15 +59,17 @@ async def create_pulp_backup_repos( |
55 | 59 | return result |
56 | 60 |
|
57 | 61 |
|
58 | | -async def _main(dry_run: bool = False): |
| 62 | +async def _main(repos_to_backup, dry_run: bool = False): |
59 | 63 | logger = logging.getLogger(PROG_NAME) |
60 | 64 | logger.debug("Acquiring Pulp connection data and creating client") |
61 | 65 | host, user, password = get_pulp_params() |
62 | 66 | pulp_client = PulpClient(host, user, password) |
63 | 67 | logger.info("Searching for all beta repositories") |
64 | | - repos = await find_pulp_repos("almalinux8-beta", pulp_client=pulp_client) |
65 | | - repos.extend(await find_pulp_repos( |
66 | | - "AlmaLinux-9-beta", pulp_client=pulp_client)) |
| 68 | + repos = [] |
| 69 | + for repo_to_backup in repos_to_backup: |
| 70 | + repos.extend( |
| 71 | + await find_pulp_repos(repo_to_backup, pulp_client=pulp_client) |
| 72 | + ) |
67 | 73 | backup_repos = await create_pulp_backup_repos(repos, dry_run=dry_run) |
68 | 74 | fields = ["pulp_href", "sha256"] |
69 | 75 | add_tasks = [] |
@@ -130,10 +136,25 @@ def main(): |
130 | 136 | parser.add_argument("-d", "--dry-run", action="store_true", default=False, |
131 | 137 | help="Output everything that will happen, " |
132 | 138 | "but do not create/modify anything") |
| 139 | + for platform in PLATFORM_REPO_MAP: |
| 140 | + parser.add_argument( |
| 141 | + f"--{platform}", f"--{platform.replace('_', '-')}", |
| 142 | + help=f"Create backups of {platform} beta repos", |
| 143 | + action="store_true" |
| 144 | + ) |
133 | 145 | args = parser.parse_args() |
| 146 | + |
| 147 | + repos_to_backup = [ |
| 148 | + PLATFORM_REPO_MAP[platform] |
| 149 | + for platform in PLATFORM_REPO_MAP |
| 150 | + if getattr(args, platform) |
| 151 | + ] |
134 | 152 | level = logging.DEBUG if args.verbose else logging.INFO |
135 | 153 | logging.basicConfig(level=level) |
136 | | - asyncio.run(_main(dry_run=args.dry_run)) |
| 154 | + if not repos_to_backup: |
| 155 | + logging.info("You need to specify at least one platform") |
| 156 | + else: |
| 157 | + asyncio.run(_main(repos_to_backup, dry_run=args.dry_run)) |
137 | 158 |
|
138 | 159 |
|
139 | 160 | if __name__ == "__main__": |
|
0 commit comments