From 50532d515ed27f5d2102a5bf0aa0d026b4bd44d8 Mon Sep 17 00:00:00 2001 From: David Peters Date: Thu, 2 May 2024 15:56:03 +0200 Subject: [PATCH] added retention policy synchronization --- src/harbor.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/harbor.py b/src/harbor.py index 91b53d6..dd68728 100644 --- a/src/harbor.py +++ b/src/harbor.py @@ -12,6 +12,7 @@ WebhookPolicy, Project, ProjectMemberEntity, + RetentionPolicy, ) import argparse import json @@ -105,6 +106,33 @@ 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 e: + 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_policies_to_update) + # Create retention policies + for retention_policy_to_create in retention_policies_to_create: + await client.update_retention_policy(retention_policies_to_update) + + async def sync_harbor_config(harbor_config: Configurations): await client.update_config(harbor_config)