From 9fd850283ef1b699c57407f0869cb0d5fd2364be Mon Sep 17 00:00:00 2001 From: necusjz Date: Fri, 1 Sep 2023 11:42:40 +0800 Subject: [PATCH 1/2] initial generation --- .../azext_k8s_extension/__init__.py | 11 + .../azext_k8s_extension/aaz/__init__.py | 6 + .../aaz/latest/__init__.py | 6 + .../aaz/latest/relay/__cmd_group.py | 23 ++ .../aaz/latest/relay/__init__.py | 11 + .../aaz/latest/relay/hyco/__cmd_group.py | 23 ++ .../aaz/latest/relay/hyco/__init__.py | 13 + .../aaz/latest/relay/hyco/_create.py | 238 ++++++++++++++++ .../aaz/latest/relay/hyco/_show.py | 213 ++++++++++++++ .../hyco/authorization_rule/__cmd_group.py | 23 ++ .../relay/hyco/authorization_rule/__init__.py | 12 + .../relay/hyco/authorization_rule/_create.py | 246 ++++++++++++++++ .../authorization_rule/keys/__cmd_group.py | 23 ++ .../hyco/authorization_rule/keys/__init__.py | 12 + .../hyco/authorization_rule/keys/_list.py | 209 ++++++++++++++ .../aaz/latest/relay/namespace/__cmd_group.py | 23 ++ .../aaz/latest/relay/namespace/__init__.py | 12 + .../aaz/latest/relay/namespace/_create.py | 267 ++++++++++++++++++ .../azext_k8s_extension/azext_metadata.json | 4 +- 19 files changed, 1373 insertions(+), 2 deletions(-) create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__cmd_group.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__cmd_group.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_create.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_show.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__cmd_group.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/_create.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__cmd_group.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/_list.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__cmd_group.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__init__.py create mode 100644 src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/_create.py diff --git a/src/k8s-extension/azext_k8s_extension/__init__.py b/src/k8s-extension/azext_k8s_extension/__init__.py index 983be708cb6..5241483b0b4 100644 --- a/src/k8s-extension/azext_k8s_extension/__init__.py +++ b/src/k8s-extension/azext_k8s_extension/__init__.py @@ -22,6 +22,17 @@ def __init__(self, cli_ctx=None): def load_command_table(self, args): from .commands import load_command_table + from azure.cli.core.aaz import load_aaz_command_table + try: + from . import aaz + except ImportError: + aaz = None + if aaz: + load_aaz_command_table( + loader=self, + aaz_pkg_name=aaz.__name__, + args=args + ) load_command_table(self, args) return self.command_table diff --git a/src/k8s-extension/azext_k8s_extension/aaz/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__cmd_group.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__cmd_group.py new file mode 100644 index 00000000000..803b5209b60 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "relay", +) +class __CMDGroup(AAZCommandGroup): + """Manage Azure Relay Service namespaces, WCF relays, hybrid connections, and rules. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/__init__.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__cmd_group.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__cmd_group.py new file mode 100644 index 00000000000..3f64798929a --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "relay hyco", +) +class __CMDGroup(AAZCommandGroup): + """Manage Azure Relay Service Hybrid Connection and Authorization Rule. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__init__.py new file mode 100644 index 00000000000..4fbda4a6e7a --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/__init__.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._show import * diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_create.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_create.py new file mode 100644 index 00000000000..283c88a357a --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_create.py @@ -0,0 +1,238 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "relay hyco create", +) +class Create(AAZCommand): + """Create the Relay Service Hybrid Connection. + + :example: Create a new Relay Service Hybrid Connection + az relay hyco create --resource-group myresourcegroup --namespace-name mynamespace --name myhyco + """ + + _aaz_info = { + "version": "2017-04-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.relay/namespaces/{}/hybridconnections/{}", "2017-04-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Name of Hybrid Connection.", + required=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + _args_schema.namespace_name = AAZStrArg( + options=["--namespace-name"], + help="Name of Namespace.", + required=True, + fmt=AAZStrArgFormat( + max_length=50, + min_length=6, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.requires_client_authorization = AAZBoolArg( + options=["-c", "--requires-client-authorization"], + help="Indicates whether client authorization is required.", + ) + _args_schema.user_metadata = AAZStrArg( + options=["--user-metadata"], + help="Endpoint metadata.", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.HybridConnectionsCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class HybridConnectionsCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "hybridConnectionName", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "namespaceName", self.ctx.args.namespace_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2017-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("requiresClientAuthorization", AAZBoolType, ".requires_client_authorization") + properties.set_prop("userMetadata", AAZStrType, ".user_metadata") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + properties.listener_count = AAZIntType( + serialized_name="listenerCount", + flags={"read_only": True}, + ) + properties.requires_client_authorization = AAZBoolType( + serialized_name="requiresClientAuthorization", + ) + properties.updated_at = AAZStrType( + serialized_name="updatedAt", + flags={"read_only": True}, + ) + properties.user_metadata = AAZStrType( + serialized_name="userMetadata", + ) + + return cls._schema_on_200 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_show.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_show.py new file mode 100644 index 00000000000..6e155b70e02 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/_show.py @@ -0,0 +1,213 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "relay hyco show", +) +class Show(AAZCommand): + """Shows the Relay Service Hybrid Connection Details. + + :example: Shows the Hybrid Connection details. + az relay hyco show --resource-group myresourcegroup --namespace-name mynamespace --name myhyco + """ + + _aaz_info = { + "version": "2017-04-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.relay/namespaces/{}/hybridconnections/{}", "2017-04-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Name of Hybrid Connection.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + _args_schema.namespace_name = AAZStrArg( + options=["--namespace-name"], + help="Name of Namespace.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + max_length=50, + min_length=6, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.HybridConnectionsGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class HybridConnectionsGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "hybridConnectionName", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "namespaceName", self.ctx.args.namespace_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2017-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + properties.listener_count = AAZIntType( + serialized_name="listenerCount", + flags={"read_only": True}, + ) + properties.requires_client_authorization = AAZBoolType( + serialized_name="requiresClientAuthorization", + ) + properties.updated_at = AAZStrType( + serialized_name="updatedAt", + flags={"read_only": True}, + ) + properties.user_metadata = AAZStrType( + serialized_name="userMetadata", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__cmd_group.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__cmd_group.py new file mode 100644 index 00000000000..881d8936825 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "relay hyco authorization-rule", +) +class __CMDGroup(AAZCommandGroup): + """Manage Azure Relay Service Hybrid Connection Authorization Rule. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__init__.py new file mode 100644 index 00000000000..a6df9f5a835 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/_create.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/_create.py new file mode 100644 index 00000000000..50f47d7899e --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/_create.py @@ -0,0 +1,246 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "relay hyco authorization-rule create", +) +class Create(AAZCommand): + """Create Authorization Rule for given Relay Service Hybrid Connection. + + :example: Create Authorization Rule for given Relay Service Hybrid Connection + az relay hyco authorization-rule create --resource-group myresourcegroup --namespace-name mynamespace --hybrid-connection-name myhyco --name myauthorule --rights Send Listen + """ + + _aaz_info = { + "version": "2017-04-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.relay/namespaces/{}/hybridconnections/{}/authorizationrules/{}", "2017-04-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Name of Hybrid Connection Authorization Rule.", + required=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + _args_schema.hybrid_connection_name = AAZStrArg( + options=["--hybrid-connection-name"], + help="Name of Hybrid Connection.", + required=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + _args_schema.namespace_name = AAZStrArg( + options=["--namespace-name"], + help="Name of Namespace.", + required=True, + fmt=AAZStrArgFormat( + max_length=50, + min_length=6, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.rights = AAZListArg( + options=["--rights"], + help="Space-separated list of Authorization rule rights. Allowed values: Listen, Manage, Send.", + required=True, + fmt=AAZListArgFormat( + unique=True, + ), + ) + + rights = cls._args_schema.rights + rights.Element = AAZStrArg( + enum={"Listen": "Listen", "Manage": "Manage", "Send": "Send"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.HybridConnectionsCreateOrUpdateAuthorizationRule(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class HybridConnectionsCreateOrUpdateAuthorizationRule(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "authorizationRuleName", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "hybridConnectionName", self.ctx.args.hybrid_connection_name, + required=True, + ), + **self.serialize_url_param( + "namespaceName", self.ctx.args.namespace_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2017-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("properties", AAZObjectType, ".", typ_kwargs={"flags": {"required": True, "client_flatten": True}}) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("rights", AAZListType, ".rights", typ_kwargs={"flags": {"required": True}}) + + rights = _builder.get(".properties.rights") + if rights is not None: + rights.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"required": True, "client_flatten": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.rights = AAZListType( + flags={"required": True}, + ) + + rights = cls._schema_on_200.properties.rights + rights.Element = AAZStrType() + + return cls._schema_on_200 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__cmd_group.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__cmd_group.py new file mode 100644 index 00000000000..f25d73e340a --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "relay hyco authorization-rule keys", +) +class __CMDGroup(AAZCommandGroup): + """Manage Azure Authorization Rule keys for Relay Service Hybrid Connection. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__init__.py new file mode 100644 index 00000000000..d63ae5a6fc9 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._list import * diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/_list.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/_list.py new file mode 100644 index 00000000000..f6028bdb8d5 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/hyco/authorization_rule/keys/_list.py @@ -0,0 +1,209 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "relay hyco authorization-rule keys list", +) +class List(AAZCommand): + """List the keys and connection strings of Authorization Rule for Relay Service Hybrid Connection. + + :example: List the keys and connection strings of Authorization Rule for Relay Service Hybrid Connection. + az relay hyco authorization-rule keys list --resource-group myresourcegroup --namespace-name mynamespace --hybrid-connection-name myhyco --name myauthorule + + :example: List the keys and connection strings of Authorization Rule for Relay Service Hybrid Connection (autogenerated) + az relay hyco authorization-rule keys list --hybrid-connection-name myhyco --name myauthorule --namespace-name mynamespace --resource-group myresourcegroup --subscription MySubscription + """ + + _aaz_info = { + "version": "2017-04-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.relay/namespaces/{}/hybridconnections/{}/authorizationrules/{}/listkeys", "2017-04-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Name of Hybrid Connection Authorization Rule.", + required=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + _args_schema.hybrid_connection_name = AAZStrArg( + options=["--hybrid-connection-name"], + help="Name of Hybrid Connection.", + required=True, + fmt=AAZStrArgFormat( + min_length=1, + ), + ) + _args_schema.namespace_name = AAZStrArg( + options=["--namespace-name"], + help="Name of Namespace.", + required=True, + fmt=AAZStrArgFormat( + max_length=50, + min_length=6, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.HybridConnectionsListKeys(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class HybridConnectionsListKeys(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}/hybridConnections/{hybridConnectionName}/authorizationRules/{authorizationRuleName}/listKeys", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "authorizationRuleName", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "hybridConnectionName", self.ctx.args.hybrid_connection_name, + required=True, + ), + **self.serialize_url_param( + "namespaceName", self.ctx.args.namespace_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2017-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.key_name = AAZStrType( + serialized_name="keyName", + ) + _schema_on_200.primary_connection_string = AAZStrType( + serialized_name="primaryConnectionString", + ) + _schema_on_200.primary_key = AAZStrType( + serialized_name="primaryKey", + ) + _schema_on_200.secondary_connection_string = AAZStrType( + serialized_name="secondaryConnectionString", + ) + _schema_on_200.secondary_key = AAZStrType( + serialized_name="secondaryKey", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__cmd_group.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__cmd_group.py new file mode 100644 index 00000000000..de317d42876 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "relay namespace", +) +class __CMDGroup(AAZCommandGroup): + """Manage Azure Relay Service Namespace. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__init__.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__init__.py new file mode 100644 index 00000000000..a6df9f5a835 --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/__init__.py @@ -0,0 +1,12 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * diff --git a/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/_create.py b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/_create.py new file mode 100644 index 00000000000..a059ccd65ae --- /dev/null +++ b/src/k8s-extension/azext_k8s_extension/aaz/latest/relay/namespace/_create.py @@ -0,0 +1,267 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "relay namespace create", +) +class Create(AAZCommand): + """Create a Relay Service Namespace. + + :example: Create a Relay Service Namespace. + az relay namespace create --resource-group myresourcegroup --name mynamespace --location westus --tags tag1=value1 tag2=value2 + """ + + _aaz_info = { + "version": "2017-04-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.relay/namespaces/{}", "2017-04-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="Name of Namespace.", + required=True, + fmt=AAZStrArgFormat( + max_length=50, + min_length=6, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.location = AAZResourceLocationArg( + help="Location. Values from: `az account list-locations`. You can configure the default location using `az configure --defaults location=`.", + required=True, + fmt=AAZResourceLocationArgFormat( + resource_group_arg="resource_group", + ), + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + help="Space-separated tags: key[=value] [key[=value] ...]. Use \"\" to clear existing tags.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + + # define Arg Group "Parameters" + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.NamespacesCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class NamespacesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Relay/namespaces/{namespaceName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "ODataV4Format" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "namespaceName", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2017-04-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + + tags = _builder.get(".tags") + if tags is not None: + tags.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200_201.sku = AAZObjectType() + _schema_on_200_201.tags = AAZDictType() + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + properties.metric_id = AAZStrType( + serialized_name="metricId", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.service_bus_endpoint = AAZStrType( + serialized_name="serviceBusEndpoint", + flags={"read_only": True}, + ) + properties.updated_at = AAZStrType( + serialized_name="updatedAt", + flags={"read_only": True}, + ) + + sku = cls._schema_on_200_201.sku + sku.name = AAZStrType( + flags={"required": True}, + ) + sku.tier = AAZStrType() + + tags = cls._schema_on_200_201.tags + tags.Element = AAZStrType() + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/k8s-extension/azext_k8s_extension/azext_metadata.json b/src/k8s-extension/azext_k8s_extension/azext_metadata.json index 53610435cef..a4a3d96c484 100644 --- a/src/k8s-extension/azext_k8s_extension/azext_metadata.json +++ b/src/k8s-extension/azext_k8s_extension/azext_metadata.json @@ -1,3 +1,3 @@ { - "azext.minCliCoreVersion": "2.24.0" -} + "azext.minCliCoreVersion": "2.51.0" +} \ No newline at end of file From 8997e5877321a565dac7342ce6eddbc0ee86385a Mon Sep 17 00:00:00 2001 From: necusjz Date: Fri, 1 Sep 2023 12:12:16 +0800 Subject: [PATCH 2/2] apply changes --- src/k8s-extension/HISTORY.rst | 4 ++ .../partner_extensions/AzureMLKubernetes.py | 61 +++++++++++-------- src/k8s-extension/setup.py | 2 +- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/src/k8s-extension/HISTORY.rst b/src/k8s-extension/HISTORY.rst index 4f8d13c1f81..22295efe72c 100644 --- a/src/k8s-extension/HISTORY.rst +++ b/src/k8s-extension/HISTORY.rst @@ -3,6 +3,10 @@ Release History =============== +1.4.4 +++++++++++++++++++ +* drop `azure-mgmt-relay` sdk dependency + 1.4.3 ++++++++++++++++++ * microsoft.azuremonitor.containers: Extend ContainerInsights Extension dataCollectionSettings with streams and containerlogv2 field. Also, add a kind tag in DCR creation for the ContainerInsights extension. diff --git a/src/k8s-extension/azext_k8s_extension/partner_extensions/AzureMLKubernetes.py b/src/k8s-extension/azext_k8s_extension/partner_extensions/AzureMLKubernetes.py index acd60254d91..e45dd2f9268 100644 --- a/src/k8s-extension/azext_k8s_extension/partner_extensions/AzureMLKubernetes.py +++ b/src/k8s-extension/azext_k8s_extension/partner_extensions/AzureMLKubernetes.py @@ -10,10 +10,13 @@ import copy from hashlib import md5 from typing import Any, Dict, List, Tuple + +from ..aaz.latest.relay.hyco import Create as HycoCreate, Show as HycoShow +from ..aaz.latest.relay.hyco.authorization_rule import Create as HycoAuthoCreate +from ..aaz.latest.relay.hyco.authorization_rule.keys import List as HycoAuthoKeysList +from ..aaz.latest.relay.namespace import Create as NamespaceCreate from ..utils import get_cluster_rp_api_version -import azure.mgmt.relay -import azure.mgmt.relay.models import azure.mgmt.resource.locks import azure.mgmt.servicebus import azure.mgmt.servicebus.models @@ -343,7 +346,7 @@ def Update(self, cmd, resource_group_name, cluster_name, auto_upgrade_minor_vers cmd, subscription_id, resource_group_name, cluster_name, '', self.RELAY_HC_AUTH_NAME, True) configuration_protected_settings[self.RELAY_SERVER_CONNECTION_STRING] = relay_connection_string logger.info("Get relay connection string succeeded.") - except azure.mgmt.relay.models.ErrorResponseException as ex: + except azure.core.exceptions.HttpResponseError as ex: if ex.response.status_code == 404: raise ResourceNotFoundError("Relay server not found. " "Check {} for more information.".format(self.TSG_LINK)) from ex @@ -611,8 +614,6 @@ def _lock_resource(cmd, lock_scope, lock_level='CanNotDelete'): def _get_relay_connection_str( cmd, subscription_id, resource_group_name, cluster_name, cluster_location, auth_rule_name, get_key_only=False) -> Tuple[str, str, str]: - relay_client: azure.mgmt.relay.RelayManagementClient = get_mgmt_service_client( - cmd.cli_ctx, azure.mgmt.relay.RelayManagementClient) cluster_id = '{}-{}-{}-relay'.format(cluster_name, subscription_id, resource_group_name) relay_namespace_name = _get_valid_name( @@ -623,40 +624,48 @@ def _get_relay_connection_str( # only create relay if not found try: # get connection string - hybrid_connection_object = relay_client.hybrid_connections.get( - resource_group_name, relay_namespace_name, hybrid_connection_name) - hc_resource_id = hybrid_connection_object.id - key: azure.mgmt.relay.models.AccessKeys = relay_client.hybrid_connections.list_keys( - resource_group_name, relay_namespace_name, hybrid_connection_name, auth_rule_name) - except HttpOperationError as e: + hybrid_connection_object = HycoShow(cli_ctx=cmd.cli_ctx)(command_args={"resource_group": resource_group_name, + "namespace_name": relay_namespace_name, + "name": hybrid_connection_name}) + hc_resource_id = hybrid_connection_object['id'] + key = HycoAuthoKeysList(cli_ctx=cmd.cli_ctx)(command_args={"resource_group": resource_group_name, + "namespace_name": relay_namespace_name, + "hybrid_connection_name": hybrid_connection_name, + "name": auth_rule_name}) + except azure.core.exceptions.HttpResponseError as e: if e.response.status_code != 404 or get_key_only: raise e # create namespace - relay_namespace_params = azure.mgmt.relay.models.RelayNamespace( - location=cluster_location, tags=resource_tag) - - async_poller = relay_client.namespaces.create_or_update( - resource_group_name, relay_namespace_name, relay_namespace_params) + async_poller = NamespaceCreate(cli_ctx=cmd.cli_ctx)(command_args={"resource_group": resource_group_name, + "name": relay_namespace_name, + "location": cluster_location, + "tags": resource_tag}) while True: async_poller.result(15) if async_poller.done(): break # create hybrid connection - hybrid_connection_object = relay_client.hybrid_connections.create_or_update( - resource_group_name, relay_namespace_name, hybrid_connection_name, requires_client_authorization=True) - hc_resource_id = hybrid_connection_object.id + hybrid_connection_object = HycoCreate(cli_ctx=cmd.cli_ctx)(command_args={"resource_group": resource_group_name, + "namespace_name": relay_namespace_name, + "name": hybrid_connection_name, + "requires_client_authorization": True}) + hc_resource_id = hybrid_connection_object['id'] # create authorization rule - auth_rule_rights = [azure.mgmt.relay.models.AccessRights.manage, - azure.mgmt.relay.models.AccessRights.send, azure.mgmt.relay.models.AccessRights.listen] - relay_client.hybrid_connections.create_or_update_authorization_rule( - resource_group_name, relay_namespace_name, hybrid_connection_name, auth_rule_name, rights=auth_rule_rights) + auth_rule_rights = ["Manage", "Send", "Listen"] + HycoAuthoCreate(cli_ctx=cmd.cli_ctx)(command_args={"resource_group": resource_group_name, + "namespace_name": relay_namespace_name, + "hybrid_connection_name": hybrid_connection_name, + "name": auth_rule_name, + "rights": auth_rule_rights}) # get connection string - key: azure.mgmt.relay.models.AccessKeys = relay_client.hybrid_connections.list_keys( - resource_group_name, relay_namespace_name, hybrid_connection_name, auth_rule_name) - return f'{key.primary_connection_string}', hc_resource_id, hybrid_connection_name + key = HycoAuthoKeysList(cli_ctx=cmd.cli_ctx)(command_args={"resource_group": resource_group_name, + "namespace_name": relay_namespace_name, + "hybrid_connection_name": hybrid_connection_name, + "name": auth_rule_name}) + return f'{key["primaryConnectionString"]}', hc_resource_id, hybrid_connection_name def _get_service_bus_connection_string(cmd, subscription_id, resource_group_name, cluster_name, cluster_location, diff --git a/src/k8s-extension/setup.py b/src/k8s-extension/setup.py index f2e6e28f7be..2a89541b426 100644 --- a/src/k8s-extension/setup.py +++ b/src/k8s-extension/setup.py @@ -33,7 +33,7 @@ # TODO: Add any additional SDK dependencies here DEPENDENCIES = [] -VERSION = "1.4.3" +VERSION = "1.4.4" with open("README.rst", "r", encoding="utf-8") as f: README = f.read()