|
12 | 12 | from azure.cli.core.commands import LongRunningOperation |
13 | 13 | from azure.cli.core.commands.client_factory import get_subscription_id |
14 | 14 | from azure.cli.core.util import user_confirmation |
| 15 | +from azure.core.exceptions import HttpResponseError |
15 | 16 | from ._client_factory import cf_acr_tokens, cf_acr_scope_maps |
16 | 17 | from ._utils import ( |
17 | 18 | build_token_id, |
|
22 | 23 | parse_scope_map_actions, |
23 | 24 | validate_managed_registry |
24 | 25 | ) |
25 | | - |
| 26 | +from .custom import acr_update_custom |
26 | 27 |
|
27 | 28 | class ConnectedRegistryModes(Enum): |
28 | 29 | READONLY = 'readonly' |
@@ -59,33 +60,33 @@ def acr_connected_registry_create(cmd, # pylint: disable=too-many-locals, too-m |
59 | 60 | sync_window=None, |
60 | 61 | log_level=None, |
61 | 62 | sync_audit_logs_enabled=False, |
62 | | - notifications=None): |
| 63 | + notifications=None, |
| 64 | + yes=False): |
63 | 65 |
|
64 | 66 | if bool(sync_token_name) == bool(repositories): |
65 | 67 | raise CLIError("argument error: either --sync-token or --repository must be provided, but not both.") |
66 | 68 | # Check needed since the sync token gateway actions must be at least 5 characters long. |
67 | 69 | if len(connected_registry_name) < 5: |
68 | 70 | raise InvalidArgumentValueError("argument error: Connected registry name must be at least 5 characters long.") |
69 | | - if re.match(r'\w*[A-Z]\w*', connected_registry_name): |
70 | | - raise InvalidArgumentValueError("argument error: Connected registry name must use only lowercase.") |
71 | | - registry, resource_group_name = get_registry_by_name(cmd.cli_ctx, registry_name, resource_group_name) |
72 | | - subscription_id = get_subscription_id(cmd.cli_ctx) |
73 | 71 |
|
| 72 | + subscription_id = get_subscription_id(cmd.cli_ctx) |
| 73 | + registry, resource_group_name = get_registry_by_name(cmd.cli_ctx, registry_name, resource_group_name) |
74 | 74 | if not registry.data_endpoint_enabled: |
75 | | - raise CLIError("Can't create the connected registry '{}' ".format(connected_registry_name) + |
76 | | - "because the cloud registry '{}' data endpoint is disabled. ".format(registry_name) + |
77 | | - "Enabling the data endpoint might affect your firewall rules.\nTo enable data endpoint run:" + |
78 | | - "\n\taz acr update -n {} --data-endpoint-enabled true".format(registry_name)) |
| 75 | + user_confirmation("Dedicated data enpoints must be enabled to use connected-registry. Enabling might " + |
| 76 | + "impact your firewall rules. Are you sure you want to enable it for '{}' registry?".format( |
| 77 | + registry_name), yes) |
| 78 | + acr_update_custom(cmd, registry, resource_group_name, data_endpoint_enabled=True) |
79 | 79 |
|
80 | | - from azure.core.exceptions import HttpResponseError as ErrorResponseException |
81 | | - parent = None |
| 80 | + connected_registry_name = connected_registry_name.lower() |
| 81 | + parent_name = parent_name.lower() if parent_name else None |
82 | 82 | mode = mode.lower() |
| 83 | + parent = None |
83 | 84 | if parent_name: |
84 | 85 | try: |
85 | 86 | parent = acr_connected_registry_show(cmd, client, parent_name, registry_name, resource_group_name) |
86 | 87 | connected_registry_list = list(client.list(resource_group_name, registry_name)) |
87 | 88 | family_tree, _ = _get_family_tree(connected_registry_list, None) |
88 | | - except ErrorResponseException as ex: |
| 89 | + except HttpResponseError as ex: |
89 | 90 | if ex.response.status_code == 404: |
90 | 91 | raise CLIError("The parent connected registry '{}' could not be found.".format(parent_name)) |
91 | 92 | raise CLIError(ex) |
|
0 commit comments