From bd5f73d589188aacb5f6cb7f496acae9cb6de668 Mon Sep 17 00:00:00 2001 From: David Peters <57600507+peters-david@users.noreply.github.com> Date: Wed, 10 Jul 2024 12:23:10 +0200 Subject: [PATCH] Add retention rules (#13) * added retention policy synchronization * reformatted client calls to keep within maxiumum line length * removed whitespace line * removed unneeded error name --- src/harbor.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/harbor.py b/src/harbor.py index 91b53d6..2a3b3b9 100644 --- a/src/harbor.py +++ b/src/harbor.py @@ -12,6 +12,7 @@ WebhookPolicy, Project, ProjectMemberEntity, + RetentionPolicy, ) import argparse import json @@ -105,6 +106,41 @@ async def main() -> None: await sync_webhook(**webhook) print("") + # Sync retention policies + print('SYNCING RETENTION POLICIES') + retention_policies_config = json.load( + open(config_folder_path + "/retention-policies.json") + ) + await sync_retention_policies( + retention_policies=retention_policies_config + ) + + +async def sync_retention_policies(retention_policies: [RetentionPolicy]): + retention_policies_to_update = [] + retention_policies_to_create = [] + # Check for existing retention policies + for retention_policy in retention_policies: + retention_id = retention_policy.id + try: + current_retention_policy = await client.get_retention_policy( + retention_id + ) + if retention_policy != current_retention_policy: + retention_policies_to_update.append(retention_policy) + except NotFound: + retention_policies_to_create.append(retention_policy) + # Update retention policies + for retention_policy_to_update in retention_policies_to_update: + retention_id = retention_policy_to_update.id + await client.update_retention_policy( + retention_id, + retention_policy_to_update + ) + # Create retention policies + for retention_policy_to_create in retention_policies_to_create: + await client.create_retention_policy(retention_policy_to_create) + async def sync_harbor_config(harbor_config: Configurations): await client.update_config(harbor_config)