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_managed_registry 11) 12 13 14WEBHOOKS_NOT_SUPPORTED = 'Webhooks are only supported for managed registries.' 15 16 17def acr_webhook_list(cmd, client, registry_name, resource_group_name=None): 18 _, resource_group_name = validate_managed_registry( 19 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 20 return client.list(resource_group_name, registry_name) 21 22 23def acr_webhook_create(cmd, 24 client, 25 webhook_name, 26 uri, 27 actions, 28 registry_name, 29 location=None, 30 resource_group_name=None, 31 headers=None, 32 status='enabled', 33 scope=None, 34 tags=None): 35 registry, resource_group_name = validate_managed_registry( 36 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 37 38 from msrest.exceptions import ValidationError 39 try: 40 WebhookCreateParameters = cmd.get_models('WebhookCreateParameters') 41 return client.begin_create( 42 resource_group_name, 43 registry_name, 44 webhook_name, 45 WebhookCreateParameters( 46 location=location or registry.location, 47 service_uri=uri, 48 actions=actions, 49 custom_headers=headers, 50 status=status, 51 scope=scope, 52 tags=tags 53 ) 54 ) 55 except ValidationError as e: 56 raise CLIError(e) 57 58 59def acr_webhook_delete(cmd, 60 client, 61 webhook_name, 62 registry_name, 63 resource_group_name=None): 64 _, resource_group_name = validate_managed_registry( 65 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 66 return client.begin_delete(resource_group_name, registry_name, webhook_name) 67 68 69def acr_webhook_show(cmd, 70 client, 71 webhook_name, 72 registry_name, 73 resource_group_name=None): 74 _, resource_group_name = validate_managed_registry( 75 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 76 return client.get(resource_group_name, registry_name, webhook_name) 77 78 79def acr_webhook_update_custom(instance, 80 uri=None, 81 actions=None, 82 headers=None, 83 status=None, 84 scope=None, 85 tags=None): 86 if uri is not None: 87 instance.service_uri = uri 88 89 if actions is not None: 90 instance.actions = actions 91 92 if headers is not None: 93 instance.custom_headers = headers 94 95 if status is not None: 96 instance.status = status 97 98 if scope is not None: 99 instance.scope = scope 100 101 if tags is not None: 102 instance.tags = tags 103 104 return instance 105 106 107def acr_webhook_update_get(cmd): 108 """Returns an empty WebhookUpdateParameters object. 109 """ 110 WebhookUpdateParameters = cmd.get_models('WebhookUpdateParameters') 111 return WebhookUpdateParameters() 112 113 114def acr_webhook_update_set(cmd, 115 client, 116 webhook_name, 117 registry_name, 118 resource_group_name=None, 119 parameters=None): 120 resource_group_name = get_resource_group_name_by_registry_name( 121 cmd.cli_ctx, registry_name, resource_group_name) 122 return client.begin_update(resource_group_name, registry_name, webhook_name, parameters) 123 124 125def acr_webhook_get_config(cmd, 126 client, 127 webhook_name, 128 registry_name, 129 resource_group_name=None): 130 _, resource_group_name = validate_managed_registry( 131 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 132 return client.get_callback_config(resource_group_name, registry_name, webhook_name) 133 134 135def acr_webhook_list_events(cmd, 136 client, 137 webhook_name, 138 registry_name, 139 resource_group_name=None): 140 _, resource_group_name = validate_managed_registry( 141 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 142 return client.list_events(resource_group_name, registry_name, webhook_name) 143 144 145def acr_webhook_ping(cmd, 146 client, 147 webhook_name, 148 registry_name, 149 resource_group_name=None): 150 _, resource_group_name = validate_managed_registry( 151 cmd, registry_name, resource_group_name, WEBHOOKS_NOT_SUPPORTED) 152 return client.ping(resource_group_name, registry_name, webhook_name) 153