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 azure.cli.core.util import CLIError 7 8from ._utils import ( 9 get_resource_group_name_by_registry_name, 10 validate_premium_registry 11) 12 13 14REPLICATIONS_NOT_SUPPORTED = 'Replications are only supported for managed registries in Premium SKU.' 15 16 17def acr_replication_list(cmd, client, registry_name, resource_group_name=None): 18 _, resource_group_name = validate_premium_registry( 19 cmd, registry_name, resource_group_name, REPLICATIONS_NOT_SUPPORTED) 20 return client.list(resource_group_name, registry_name) 21 22 23def acr_replication_create(cmd, 24 client, 25 location, 26 registry_name, 27 resource_group_name=None, 28 replication_name=None, 29 tags=None): 30 registry, resource_group_name = validate_premium_registry( 31 cmd, registry_name, resource_group_name, REPLICATIONS_NOT_SUPPORTED) 32 33 normalized_location = "".join(location.split()).lower() 34 if registry.location == normalized_location: 35 raise CLIError('Replication could not be created in the same location as the registry.') 36 37 from msrest.exceptions import ValidationError 38 try: 39 return client.create( 40 resource_group_name=resource_group_name, 41 registry_name=registry_name, 42 replication_name=replication_name or normalized_location, 43 location=location, 44 tags=tags 45 ) 46 except ValidationError as e: 47 raise CLIError(e) 48 49 50def acr_replication_delete(cmd, 51 client, 52 replication_name, 53 registry_name, 54 resource_group_name=None): 55 _, resource_group_name = validate_premium_registry( 56 cmd, registry_name, resource_group_name, REPLICATIONS_NOT_SUPPORTED) 57 return client.delete(resource_group_name, registry_name, replication_name) 58 59 60def acr_replication_show(cmd, 61 client, 62 replication_name, 63 registry_name, 64 resource_group_name=None): 65 _, resource_group_name = validate_premium_registry( 66 cmd, registry_name, resource_group_name, REPLICATIONS_NOT_SUPPORTED) 67 return client.get(resource_group_name, registry_name, replication_name) 68 69 70def acr_replication_update_custom(instance, tags=None): 71 if tags is not None: 72 instance.tags = tags 73 return instance 74 75 76def acr_replication_update_get(cmd): 77 """Returns an empty ReplicationUpdateParameters object. 78 """ 79 ReplicationUpdateParameters = cmd.get_models('ReplicationUpdateParameters') 80 return ReplicationUpdateParameters() 81 82 83def acr_replication_update_set(cmd, 84 client, 85 replication_name, 86 registry_name, 87 resource_group_name=None, 88 parameters=None): 89 resource_group_name = get_resource_group_name_by_registry_name( 90 cmd.cli_ctx, registry_name, resource_group_name) 91 return client.update( 92 resource_group_name=resource_group_name, 93 registry_name=registry_name, 94 replication_name=replication_name, 95 tags=parameters.tags) 96