1# -------------------------------------------------------------------------------------------- 2# Copyright (c) Microsoft Corporation. All rights reserved. 3# Licensed under the MIT License. See License.txt in the project root for license information. 4# -------------------------------------------------------------------------------------------- 5 6from enum import Enum 7from azure.cli.core.commands import LongRunningOperation 8from ._utils import validate_premium_registry 9 10POLICIES_NOT_SUPPORTED = 'Policies are only supported for managed registries in Premium SKU.' 11 12 13# temporary place holder enum for retention type 14class RetentionType(str, Enum): 15 UntaggedManifests = "UntaggedManifests" 16 17 18def acr_config_content_trust_show(cmd, 19 registry_name, 20 resource_group_name=None): 21 registry, _ = validate_premium_registry( 22 cmd, registry_name, resource_group_name, POLICIES_NOT_SUPPORTED) 23 policies = registry.policies 24 trust_policy = policies.trust_policy if policies else {} 25 return trust_policy 26 27 28def acr_config_content_trust_update(cmd, 29 client, 30 registry_name, 31 status=None, 32 resource_group_name=None): 33 registry, resource_group_name = validate_premium_registry( 34 cmd, registry_name, resource_group_name, POLICIES_NOT_SUPPORTED) 35 36 policies = registry.policies 37 38 if status: 39 Policy = cmd.get_models('Policy') 40 policies = policies if policies else Policy() 41 TrustPolicy = cmd.get_models('TrustPolicy') 42 policies.trust_policy = policies.trust_policy if policies.trust_policy else TrustPolicy() 43 policies.trust_policy.status = status 44 45 RegistryUpdateParameters = cmd.get_models('RegistryUpdateParameters') 46 parameters = RegistryUpdateParameters(policies=policies) 47 updated_policies = LongRunningOperation(cmd.cli_ctx)( 48 client.begin_update(resource_group_name, registry_name, parameters) 49 ) 50 return updated_policies.policies.trust_policy 51 52 53def acr_config_retention_show(cmd, 54 registry_name, 55 resource_group_name=None): 56 registry, _ = validate_premium_registry( 57 cmd, registry_name, resource_group_name, POLICIES_NOT_SUPPORTED) 58 policies = registry.policies 59 retention_policy = policies.retention_policy if policies else None 60 return retention_policy 61 62 63def acr_config_retention_update(cmd, 64 client, 65 registry_name, 66 policy_type, # pylint: disable=unused-argument 67 status=None, 68 days=None, 69 resource_group_name=None): 70 registry, resource_group_name = validate_premium_registry( 71 cmd, registry_name, resource_group_name, POLICIES_NOT_SUPPORTED) 72 73 Policy, RetentionPolicy, RegistryUpdateParameters = cmd.get_models( 74 'Policy', 'RetentionPolicy', 'RegistryUpdateParameters') 75 76 policies = registry.policies 77 if policies is None: 78 policies = Policy() 79 80 policies.retention_policy = policies.retention_policy if policies.retention_policy else RetentionPolicy() 81 82 if status: 83 policies.retention_policy.status = status 84 85 if days is not None: 86 policies.retention_policy.days = days 87 88 parameters = RegistryUpdateParameters(policies=policies) 89 updated_policies = LongRunningOperation(cmd.cli_ctx)( 90 client.begin_update(resource_group_name, registry_name, parameters) 91 ) 92 return updated_policies.policies.retention_policy 93