diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cc2770cc6cc..437794e19b9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -239,3 +239,5 @@ /src/containerapp-compose/ @smurawski @jldeen /src/change-analysis/ @linglingtong + +/src/fluid-relay/ @kairu-ms @necusjz @ZengTaoxu diff --git a/src/fluid-relay/HISTORY.rst b/src/fluid-relay/HISTORY.rst new file mode 100644 index 00000000000..8c34bccfff8 --- /dev/null +++ b/src/fluid-relay/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +0.1.0 +++++++ +* Initial release. \ No newline at end of file diff --git a/src/fluid-relay/README.md b/src/fluid-relay/README.md new file mode 100644 index 00000000000..736c2c62f05 --- /dev/null +++ b/src/fluid-relay/README.md @@ -0,0 +1,76 @@ +# Azure CLI FluidRelay Extension # +This is an extension to Azure CLI to manage FluidRelay resources. + +### How to use ### +``` +az extension add --name fluid-relay +``` + +### Included Features +#### Server: +Manage a fluid relay server: [more info](https://docs.microsoft.com/en-us/azure/azure-fluid-relay/overview/overview) +*Examples:* +``` +az fluid-relay server create \ + -n TestFluidRelay \ + -l westus2 \ + -g MyResourceGroup \ + --sku standard \ + --tags category=sales \ + --identity type="SystemAssigned + +az fluid-relay server create \ + -n TestFluidRelay \ + -l westus2 \ + -g MyResourceGroup \ + --sku standard \ + --tags category=sales \ + --identity type="SystemAssigned, UserAssigned" \ + user-assigned-identities= \ + {"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/ \ + Microsoft.ManagedIdentity/userAssignedIdentities/id1","/subscriptions/00000000-0000-0000-0000-000000000000/ \ + resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2"} + +az fluid-relay server update \ + -n MyFluidRelay \ + -l westus2 \ + -g MyResourceGroup \ + --tags category=sale + +az fluid-relay server list-key \ + -g MyResourceGroup \ + --server-name MyServerName + +az fluid-relay server regenerate-key \ + -g MyResourceGroup \ + --server-name MyServerName \ + --key-name key1 + +az fluid-relay server list \ + --subscription 00000000-0000-0000-0000-000000000000 + +az fluid-relay server list \ + -g MyResourceGroup + +az fluid-relay server show \ + -g MyResourceGroup \ + -n MyFluidRelay +``` + +#### Container: +Manage a fluid relay container: [more info](https://docs.microsoft.com/en-us/azure/azure-fluid-relay/overview/overview) +``` +az fluid-relay container list \ + -g MyResourceGroup \ + --server-name MyServerName + +az fluid-relay container show \ + -g MyResourceGroup \ + --server-name MyServerName \ + -n MyContainerName + +az fluid-relay container delete \ + -g MyResourceGroup \ + --server-name MyServerName \ + -n MyContainerName +``` \ No newline at end of file diff --git a/src/fluid-relay/azext_fluid_relay/__init__.py b/src/fluid-relay/azext_fluid_relay/__init__.py new file mode 100644 index 00000000000..c2570aee457 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/__init__.py @@ -0,0 +1,42 @@ +# -------------------------------------------------------------------------------------------- +# 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 +# -------------------------------------------------------------------------------------------- + +from azure.cli.core import AzCommandsLoader +from azext_fluid_relay._help import helps # pylint: disable=unused-import + + +class FluidRelayCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_command_type = CliCommandType( + operations_tmpl='azext_fluid_relay.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) + + def load_command_table(self, args): + from azext_fluid_relay.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 + + def load_arguments(self, command): + from azext_fluid_relay._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = FluidRelayCommandsLoader diff --git a/src/fluid-relay/azext_fluid_relay/_help.py b/src/fluid-relay/azext_fluid_relay/_help.py new file mode 100644 index 00000000000..126d5d00714 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/_help.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: disable=line-too-long +# pylint: disable=too-many-lines + +from knack.help_files import helps # pylint: disable=unused-import diff --git a/src/fluid-relay/azext_fluid_relay/_params.py b/src/fluid-relay/azext_fluid_relay/_params.py new file mode 100644 index 00000000000..cfcec717c9c --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/_params.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: disable=too-many-lines +# pylint: disable=too-many-statements + + +def load_arguments(self, _): # pylint: disable=unused-argument + pass diff --git a/src/fluid-relay/azext_fluid_relay/aaz/__init__.py b/src/fluid-relay/azext_fluid_relay/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/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/fluid-relay/azext_fluid_relay/aaz/latest/__init__.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/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/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/__cmd_group.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/__cmd_group.py new file mode 100644 index 00000000000..15fbddb8af2 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_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( + "fluid-relay", +) +class __CMDGroup(AAZCommandGroup): + """Manage Fluid Relay + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/__init__.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_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/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/__cmd_group.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/__cmd_group.py new file mode 100644 index 00000000000..9cf5425c4d2 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/__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( + "fluid-relay container", +) +class __CMDGroup(AAZCommandGroup): + """Manage Fluid Relay Container. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/__init__.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/__init__.py new file mode 100644 index 00000000000..054d52707ea --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/__init__.py @@ -0,0 +1,14 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._delete import * +from ._list import * +from ._show import * diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_delete.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_delete.py new file mode 100644 index 00000000000..f91b8acbfb1 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_delete.py @@ -0,0 +1,135 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay container delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a Fluid Relay container. + + :example: FluidRelayContainer_Delete + az fluid-relay container delete -g MyResourceGroup --server-name MyServerName -n MyContainerName + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}/fluidrelaycontainers/{}", "2022-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _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.container_name = AAZStrArg( + options=["-n", "--name", "--container-name"], + help="The Fluid Relay container resource name.", + required=True, + id_part="child_name_1", + ) + _args_schema.server_name = AAZStrArg( + options=["--server-name"], + help="The Fluid Relay server resource name.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayContainersDelete(ctx=self.ctx)() + + class FluidRelayContainersDelete(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) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}/fluidRelayContainers/{fluidRelayContainerName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayContainerName", self.ctx.args.container_name, + required=True, + ), + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-01", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_list.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_list.py new file mode 100644 index 00000000000..2c338d38d3f --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_list.py @@ -0,0 +1,225 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay container list", +) +class List(AAZCommand): + """List all Fluid Relay containers which are children of a given Fluid Relay server. + + :example: FluidRelayContainer_List + az fluid-relay container list -g MyResourceGroup --server-name MyServerName + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}/fluidrelaycontainers", "2022-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(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.server_name = AAZStrArg( + options=["--server-name"], + help="The Fluid Relay server resource name.", + required=True, + ) + _args_schema.resource_group = AAZStrArg( + options=["-g", "--resource-group"], + help="The resource group containing the resource.", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayContainersListByFluidRelayServers(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class FluidRelayContainersListByFluidRelayServers(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}/fluidRelayContainers", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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.next_link = AAZStrType( + serialized_name="nextLink", + flags={"read_only": True}, + ) + _schema_on_200.value = AAZListType() + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True, "read_only": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.creation_time = AAZStrType( + serialized_name="creationTime", + flags={"read_only": True}, + ) + properties.frs_container_id = AAZStrType( + serialized_name="frsContainerId", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.last_access_time = AAZStrType( + serialized_name="lastAccessTime", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_show.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_show.py new file mode 100644 index 00000000000..ec48be04dac --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/container/_show.py @@ -0,0 +1,224 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay container show", +) +class Show(AAZCommand): + """Get a Fluid Relay container. + + :example: FluidRelayContainer_Show + az fluid-relay container show -g MyResourceGroup --server-name MyServerName -n MyContainerName + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}/fluidrelaycontainers/{}", "2022-06-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.container_name = AAZStrArg( + options=["-n", "--name", "--container-name"], + help="The Fluid Relay container resource name.", + required=True, + id_part="child_name_1", + ) + _args_schema.server_name = AAZStrArg( + options=["--server-name"], + help="The Fluid Relay server resource name.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayContainersGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FluidRelayContainersGet(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}/fluidRelayContainers/{fluidRelayContainerName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayContainerName", self.ctx.args.container_name, + required=True, + ), + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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, "read_only": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.creation_time = AAZStrType( + serialized_name="creationTime", + flags={"read_only": True}, + ) + properties.frs_container_id = AAZStrType( + serialized_name="frsContainerId", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.last_access_time = AAZStrType( + serialized_name="lastAccessTime", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/__cmd_group.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/__cmd_group.py new file mode 100644 index 00000000000..dd8f4885a6d --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/__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( + "fluid-relay server", +) +class __CMDGroup(AAZCommandGroup): + """Manage Fluid Relay Server. + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/__init__.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/__init__.py new file mode 100644 index 00000000000..7d340b8ec98 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/__init__.py @@ -0,0 +1,18 @@ +# -------------------------------------------------------------------------------------------- +# 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 ._delete import * +from ._list import * +from ._list_key import * +from ._regenerate_key import * +from ._show import * +from ._update import * diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_create.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_create.py new file mode 100644 index 00000000000..40696255f39 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_create.py @@ -0,0 +1,425 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server create", +) +class Create(AAZCommand): + """Create a Fluid Relay server. + + :example: FluidRelayServer_Create + az fluid-relay server create -n TestFluidRelay -l westus2 -g MyResourceGroup --sku standard --tags category=sales --identity type="SystemAssigned" + az fluid-relay server create -n TestFluidRelay -l westus2 -g MyResourceGroup --sku standard --tags category=sales --identity type="SystemAssigned, UserAssigned" user-assigned-identities={"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1","/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2"} + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}", "2022-06-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.server_name = AAZStrArg( + options=["-n", "--name", "--server-name"], + help="The Fluid Relay server resource name.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "CustomerManagedKeyEncryption" + + _args_schema = cls._args_schema + _args_schema.key_identity = AAZObjectArg( + options=["--key-identity"], + arg_group="CustomerManagedKeyEncryption", + help="All identity configuration for Customer-managed key settings defining which identity should be used to auth to Key Vault.", + ) + _args_schema.key_url = AAZStrArg( + options=["--key-url"], + arg_group="CustomerManagedKeyEncryption", + help="key encryption key Url, with or without a version. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78 or https://contosovault.vault.azure.net/keys/contosokek. Key auto rotation is enabled by providing a key uri without version. Otherwise, customer is responsible for rotating the key. The keyEncryptionKeyIdentity(either SystemAssigned or UserAssigned) should have permission to access this key url.", + ) + + key_identity = cls._args_schema.key_identity + key_identity.identity_type = AAZStrArg( + options=["identity-type"], + help="Values can be SystemAssigned or UserAssigned", + enum={"SystemAssigned": "SystemAssigned", "UserAssigned": "UserAssigned"}, + ) + key_identity.user_assigned_identities = AAZStrArg( + options=["user-assigned-identities"], + help="user assigned identity to use for accessing key encryption key Url. Ex: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Mutually exclusive with identityType systemAssignedIdentity.", + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.provisioning_state = AAZStrArg( + options=["--provisioning-state"], + arg_group="Properties", + help="Provision states for FluidRelay RP", + enum={"Canceled": "Canceled", "Failed": "Failed", "Succeeded": "Succeeded"}, + ) + _args_schema.sku = AAZStrArg( + options=["--sku"], + arg_group="Properties", + help="Sku of the storage associated with the resource", + enum={"basic": "basic", "standard": "standard"}, + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.identity = AAZObjectArg( + options=["--identity"], + arg_group="Resource", + help="The type of identity used for the resource.", + ) + _args_schema.location = AAZResourceLocationArg( + arg_group="Resource", + help="The geo-location where the resource lives", + required=True, + fmt=AAZResourceLocationArgFormat( + resource_group_arg="resource_group", + ), + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + ) + + identity = cls._args_schema.identity + identity.type = AAZStrArg( + options=["type"], + help="The identity type.", + enum={"None": "None", "SystemAssigned": "SystemAssigned", "SystemAssigned, UserAssigned": "SystemAssigned, UserAssigned", "UserAssigned": "UserAssigned"}, + ) + identity.user_assigned_identities = AAZDictArg( + options=["user-assigned-identities"], + help="The list of user identities associated with the resource.", + ) + + user_assigned_identities = cls._args_schema.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectArg( + blank={}, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayServersCreateOrUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FluidRelayServersCreateOrUpdate(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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("identity", AAZObjectType, ".identity") + _builder.set_prop("location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + + identity = _builder.get(".identity") + if identity is not None: + identity.set_prop("type", AAZStrType, ".type") + identity.set_prop("userAssignedIdentities", AAZDictType, ".user_assigned_identities") + + user_assigned_identities = _builder.get(".identity.userAssignedIdentities") + if user_assigned_identities is not None: + user_assigned_identities.set_elements(AAZObjectType, ".") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("encryption", AAZObjectType) + properties.set_prop("provisioningState", AAZStrType, ".provisioning_state") + properties.set_prop("storagesku", AAZStrType, ".sku") + + encryption = _builder.get(".properties.encryption") + if encryption is not None: + encryption.set_prop("customerManagedKeyEncryption", AAZObjectType) + + customer_managed_key_encryption = _builder.get(".properties.encryption.customerManagedKeyEncryption") + if customer_managed_key_encryption is not None: + customer_managed_key_encryption.set_prop("keyEncryptionKeyIdentity", AAZObjectType, ".key_identity") + customer_managed_key_encryption.set_prop("keyEncryptionKeyUrl", AAZStrType, ".key_url") + + key_encryption_key_identity = _builder.get(".properties.encryption.customerManagedKeyEncryption.keyEncryptionKeyIdentity") + if key_encryption_key_identity is not None: + key_encryption_key_identity.set_prop("identityType", AAZStrType, ".identity_type") + key_encryption_key_identity.set_prop("userAssignedIdentityResourceId", AAZStrType, ".user_assigned_identities") + + tags = _builder.get(".tags") + if tags is not None: + tags.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.identity = AAZObjectType() + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType() + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType() + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.encryption = AAZObjectType() + properties.fluid_relay_endpoints = AAZObjectType( + serialized_name="fluidRelayEndpoints", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + ) + properties.storagesku = AAZStrType() + + encryption = cls._schema_on_200.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + fluid_relay_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints + fluid_relay_endpoints.orderer_endpoints = AAZListType( + serialized_name="ordererEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.service_endpoints = AAZListType( + serialized_name="serviceEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.storage_endpoints = AAZListType( + serialized_name="storageEndpoints", + flags={"read_only": True}, + ) + + orderer_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.orderer_endpoints + orderer_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + service_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.service_endpoints + service_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + storage_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.storage_endpoints + storage_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Create"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_delete.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_delete.py new file mode 100644 index 00000000000..74107991aca --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_delete.py @@ -0,0 +1,125 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a Fluid Relay server. + + :example: FluidRelayServer_Delete + az fluid-relay server delete -n testFluidRelay -g MyResourceGroup -y + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}", "2022-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return None + + _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.server_name = AAZStrArg( + options=["-n", "--name", "--server-name"], + help="The Fluid Relay server resource name.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayServersDelete(ctx=self.ctx)() + + class FluidRelayServersDelete(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) + if session.http_response.status_code in [204]: + return self.on_204(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-01", + required=True, + ), + } + return parameters + + def on_200(self, session): + pass + + def on_204(self, session): + pass + + +__all__ = ["Delete"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_list.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_list.py new file mode 100644 index 00000000000..05a6528fa0a --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_list.py @@ -0,0 +1,530 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server list", +) +class List(AAZCommand): + """List all Fluid Relay servers. + + :example: FluidRelayServer_List + az fluid-relay server list --subscription 00000000-0000-0000-0000-000000000000 + az fluid-relay server list -g MyResourceGroup + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/microsoft.fluidrelay/fluidrelayservers", "2022-06-01"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers", "2022-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(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.resource_group = AAZStrArg( + options=["-g", "--resource-group"], + help="The resource group containing the resource.", + ) + return cls._args_schema + + def _execute_operations(self): + condition_0 = has_value(self.ctx.args.resource_group) and has_value(self.ctx.subscription_id) + condition_1 = has_value(self.ctx.subscription_id) and has_value(self.ctx.args.resource_group) is not True + if condition_0: + self.FluidRelayServersListByResourceGroup(ctx=self.ctx)() + if condition_1: + self.FluidRelayServersListBySubscription(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class FluidRelayServersListByResourceGroup(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.identity = AAZObjectType() + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.value.Element.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType() + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.value.Element.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.encryption = AAZObjectType() + properties.fluid_relay_endpoints = AAZObjectType( + serialized_name="fluidRelayEndpoints", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + ) + properties.storagesku = AAZStrType() + + encryption = cls._schema_on_200.value.Element.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + fluid_relay_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints + fluid_relay_endpoints.orderer_endpoints = AAZListType( + serialized_name="ordererEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.service_endpoints = AAZListType( + serialized_name="serviceEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.storage_endpoints = AAZListType( + serialized_name="storageEndpoints", + flags={"read_only": True}, + ) + + orderer_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints.orderer_endpoints + orderer_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + service_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints.service_endpoints + service_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + storage_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints.storage_endpoints + storage_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + class FluidRelayServersListBySubscription(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}/providers/Microsoft.FluidRelay/fluidRelayServers", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **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", "2022-06-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.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.identity = AAZObjectType() + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.value.Element.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType() + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.value.Element.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.encryption = AAZObjectType() + properties.fluid_relay_endpoints = AAZObjectType( + serialized_name="fluidRelayEndpoints", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + ) + properties.storagesku = AAZStrType() + + encryption = cls._schema_on_200.value.Element.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + fluid_relay_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints + fluid_relay_endpoints.orderer_endpoints = AAZListType( + serialized_name="ordererEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.service_endpoints = AAZListType( + serialized_name="serviceEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.storage_endpoints = AAZListType( + serialized_name="storageEndpoints", + flags={"read_only": True}, + ) + + orderer_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints.orderer_endpoints + orderer_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + service_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints.service_endpoints + service_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + storage_endpoints = cls._schema_on_200.value.Element.properties.fluid_relay_endpoints.storage_endpoints + storage_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["List"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_list_key.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_list_key.py new file mode 100644 index 00000000000..e9a344c505c --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_list_key.py @@ -0,0 +1,157 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server list-key", +) +class ListKey(AAZCommand): + """Get primary and secondary key for this server. + + :example: FluidRelayServer_List-key + az fluid-relay server list-key -g MyResourceGroup --server-name MyServerName + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}/listkeys", "2022-06-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.server_name = AAZStrArg( + options=["-n", "--server-name"], + help="The Fluid Relay server resource name.", + required=True, + ) + _args_schema.resource_group = AAZStrArg( + options=["-g", "--resource-group"], + help="The resource group containing the resource.", + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayServersListKeys(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FluidRelayServersListKeys(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}/listKeys", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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.key1 = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.key2 = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["ListKey"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_regenerate_key.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_regenerate_key.py new file mode 100644 index 00000000000..c47de8372ae --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_regenerate_key.py @@ -0,0 +1,182 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server regenerate-key", +) +class RegenerateKey(AAZCommand): + """Regenerate the primary or secondary key for this server. + + :example: FluidRelayServer_Regenerate-key + az fluid-relay server regenerate-key -g MyResourceGroup --server-name MyServerName --key-name key1 + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}/regeneratekey", "2022-06-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.server_name = AAZStrArg( + options=["-n", "--server-name"], + help="The Fluid Relay server resource name.", + required=True, + ) + _args_schema.resource_group = AAZStrArg( + options=["-g", "--resource-group"], + help="The resource group containing the resource.", + required=True, + ) + + # define Arg Group "Parameters" + + _args_schema = cls._args_schema + _args_schema.key_name = AAZStrArg( + options=["--key-name"], + arg_group="Parameters", + help="The key to regenerate.", + required=True, + enum={"key1": "key1", "key2": "key2"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayServersRegenerateKey(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FluidRelayServersRegenerateKey(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}/regenerateKey", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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("keyName", AAZStrType, ".key_name", typ_kwargs={"flags": {"required": True}}) + + 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.key1 = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.key2 = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +__all__ = ["RegenerateKey"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_show.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_show.py new file mode 100644 index 00000000000..425ba8db93f --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_show.py @@ -0,0 +1,292 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server show", +) +class Show(AAZCommand): + """Get a Fluid Relay server. + + :example: FluidRelayServer_Show + az fluid-relay server show -g MyResourceGroup -n MyFluidRelay + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}", "2022-06-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.server_name = AAZStrArg( + options=["-n", "--name", "--server-name"], + help="The Fluid Relay server resource name.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayServersGet(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FluidRelayServersGet(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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.identity = AAZObjectType() + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType() + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType() + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.encryption = AAZObjectType() + properties.fluid_relay_endpoints = AAZObjectType( + serialized_name="fluidRelayEndpoints", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + ) + properties.storagesku = AAZStrType() + + encryption = cls._schema_on_200.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + fluid_relay_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints + fluid_relay_endpoints.orderer_endpoints = AAZListType( + serialized_name="ordererEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.service_endpoints = AAZListType( + serialized_name="serviceEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.storage_endpoints = AAZListType( + serialized_name="storageEndpoints", + flags={"read_only": True}, + ) + + orderer_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.orderer_endpoints + orderer_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + service_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.service_endpoints + service_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + storage_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.storage_endpoints + storage_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Show"] diff --git a/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_update.py b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_update.py new file mode 100644 index 00000000000..25a891772bc --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/aaz/latest/fluid_relay/server/_update.py @@ -0,0 +1,403 @@ +# -------------------------------------------------------------------------------------------- +# 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( + "fluid-relay server update", +) +class Update(AAZCommand): + """Update a Fluid Relay server. + + :example: FluidRelayServer_Update + az fluid-relay server update -n MyFluidRelay -l westus2 -g MyResourceGroup --tags category=sale + """ + + _aaz_info = { + "version": "2022-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.fluidrelay/fluidrelayservers/{}", "2022-06-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.server_name = AAZStrArg( + options=["-n", "--name", "--server-name"], + help="The Fluid Relay server resource name.", + required=True, + id_part="name", + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "CustomerManagedKeyEncryption" + + _args_schema = cls._args_schema + _args_schema.key_identity = AAZObjectArg( + options=["--key-identity"], + arg_group="CustomerManagedKeyEncryption", + help="All identity configuration for Customer-managed key settings defining which identity should be used to auth to Key Vault.", + ) + _args_schema.key_url = AAZStrArg( + options=["--key-url"], + arg_group="CustomerManagedKeyEncryption", + help="key encryption key Url, with or without a version. Ex: https://contosovault.vault.azure.net/keys/contosokek/562a4bb76b524a1493a6afe8e536ee78 or https://contosovault.vault.azure.net/keys/contosokek. Key auto rotation is enabled by providing a key uri without version. Otherwise, customer is responsible for rotating the key. The keyEncryptionKeyIdentity(either SystemAssigned or UserAssigned) should have permission to access this key url.", + ) + + key_identity = cls._args_schema.key_identity + key_identity.identity_type = AAZStrArg( + options=["identity-type"], + help="Values can be SystemAssigned or UserAssigned", + enum={"SystemAssigned": "SystemAssigned", "UserAssigned": "UserAssigned"}, + ) + key_identity.user_assigned_identities = AAZStrArg( + options=["user-assigned-identities"], + help="user assigned identity to use for accessing key encryption key Url. Ex: /subscriptions/fa5fc227-a624-475e-b696-cdd604c735bc/resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/myId. Mutually exclusive with identityType systemAssignedIdentity.", + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.identity = AAZObjectArg( + options=["--identity"], + arg_group="Resource", + help="The type of identity used for the resource.", + ) + _args_schema.location = AAZStrArg( + options=["--location"], + arg_group="Resource", + help="The geo-location where the resource lives", + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + ) + + identity = cls._args_schema.identity + identity.type = AAZStrArg( + options=["type"], + help="The identity type.", + enum={"None": "None", "SystemAssigned": "SystemAssigned", "SystemAssigned, UserAssigned": "SystemAssigned, UserAssigned", "UserAssigned": "UserAssigned"}, + ) + identity.user_assigned_identities = AAZDictArg( + options=["user-assigned-identities"], + help="The list of user identities associated with the resource.", + ) + + user_assigned_identities = cls._args_schema.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectArg( + blank={}, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.FluidRelayServersUpdate(ctx=self.ctx)() + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FluidRelayServersUpdate(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/{resourceGroup}/providers/Microsoft.FluidRelay/fluidRelayServers/{fluidRelayServerName}", + **self.url_parameters + ) + + @property + def method(self): + return "PATCH" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "fluidRelayServerName", self.ctx.args.server_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroup", 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", "2022-06-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("identity", AAZObjectType, ".identity") + _builder.set_prop("location", AAZStrType, ".location") + _builder.set_prop("properties", AAZObjectType, typ_kwargs={"flags": {"client_flatten": True}}) + _builder.set_prop("tags", AAZDictType, ".tags") + + identity = _builder.get(".identity") + if identity is not None: + identity.set_prop("type", AAZStrType, ".type") + identity.set_prop("userAssignedIdentities", AAZDictType, ".user_assigned_identities") + + user_assigned_identities = _builder.get(".identity.userAssignedIdentities") + if user_assigned_identities is not None: + user_assigned_identities.set_elements(AAZObjectType, ".") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("encryption", AAZObjectType) + + encryption = _builder.get(".properties.encryption") + if encryption is not None: + encryption.set_prop("customerManagedKeyEncryption", AAZObjectType) + + customer_managed_key_encryption = _builder.get(".properties.encryption.customerManagedKeyEncryption") + if customer_managed_key_encryption is not None: + customer_managed_key_encryption.set_prop("keyEncryptionKeyIdentity", AAZObjectType, ".key_identity") + customer_managed_key_encryption.set_prop("keyEncryptionKeyUrl", AAZStrType, ".key_url") + + key_encryption_key_identity = _builder.get(".properties.encryption.customerManagedKeyEncryption.keyEncryptionKeyIdentity") + if key_encryption_key_identity is not None: + key_encryption_key_identity.set_prop("identityType", AAZStrType, ".identity_type") + key_encryption_key_identity.set_prop("userAssignedIdentityResourceId", AAZStrType, ".user_assigned_identities") + + tags = _builder.get(".tags") + if tags is not None: + tags.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.identity = AAZObjectType() + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType() + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType() + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.encryption = AAZObjectType() + properties.fluid_relay_endpoints = AAZObjectType( + serialized_name="fluidRelayEndpoints", + flags={"read_only": True}, + ) + properties.frs_tenant_id = AAZStrType( + serialized_name="frsTenantId", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + ) + properties.storagesku = AAZStrType() + + encryption = cls._schema_on_200.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + fluid_relay_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints + fluid_relay_endpoints.orderer_endpoints = AAZListType( + serialized_name="ordererEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.service_endpoints = AAZListType( + serialized_name="serviceEndpoints", + flags={"read_only": True}, + ) + fluid_relay_endpoints.storage_endpoints = AAZListType( + serialized_name="storageEndpoints", + flags={"read_only": True}, + ) + + orderer_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.orderer_endpoints + orderer_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + service_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.service_endpoints + service_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + storage_endpoints = cls._schema_on_200.properties.fluid_relay_endpoints.storage_endpoints + storage_endpoints.Element = AAZStrType( + flags={"read_only": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + flags={"read_only": True}, + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + flags={"read_only": True}, + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + flags={"read_only": True}, + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + flags={"read_only": True}, + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + flags={"read_only": True}, + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + flags={"read_only": True}, + ) + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +__all__ = ["Update"] diff --git a/src/fluid-relay/azext_fluid_relay/azext_metadata.json b/src/fluid-relay/azext_fluid_relay/azext_metadata.json new file mode 100644 index 00000000000..5992a05c912 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/azext_metadata.json @@ -0,0 +1,3 @@ +{ + "azext.minCliCoreVersion": "2.39.0" +} \ No newline at end of file diff --git a/src/fluid-relay/azext_fluid_relay/commands.py b/src/fluid-relay/azext_fluid_relay/commands.py new file mode 100644 index 00000000000..b0d842e4993 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/commands.py @@ -0,0 +1,15 @@ +# -------------------------------------------------------------------------------------------- +# 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: disable=too-many-lines +# pylint: disable=too-many-statements + +# from azure.cli.core.commands import CliCommandType + + +def load_command_table(self, _): # pylint: disable=unused-argument + pass diff --git a/src/fluid-relay/azext_fluid_relay/custom.py b/src/fluid-relay/azext_fluid_relay/custom.py new file mode 100644 index 00000000000..86df1e48ef5 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/custom.py @@ -0,0 +1,14 @@ +# -------------------------------------------------------------------------------------------- +# 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: disable=too-many-lines +# pylint: disable=too-many-statements + +from knack.log import get_logger + + +logger = get_logger(__name__) diff --git a/src/fluid-relay/azext_fluid_relay/tests/__init__.py b/src/fluid-relay/azext_fluid_relay/tests/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/tests/__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/fluid-relay/azext_fluid_relay/tests/latest/__init__.py b/src/fluid-relay/azext_fluid_relay/tests/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/tests/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/fluid-relay/azext_fluid_relay/tests/latest/recordings/test_fluid_relay_scenario.yaml b/src/fluid-relay/azext_fluid_relay/tests/latest/recordings/test_fluid_relay_scenario.yaml new file mode 100644 index 00000000000..e7ee88f7aa7 --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/tests/latest/recordings/test_fluid_relay_scenario.yaml @@ -0,0 +1,1356 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - identity create + Connection: + - keep-alive + ParameterSetName: + - -n -g --query + User-Agent: + - AZURECLI/2.38.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001","name":"cli_test_fluid_relay000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-07-27T06:41:53Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '331' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:04 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "westus2"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - identity create + Connection: + - keep-alive + Content-Length: + - '23' + Content-Type: + - application/json + ParameterSetName: + - -n -g --query + User-Agent: + - AZURECLI/2.38.0 azsdk-python-azure-mgmt-msi/6.0.1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1?api-version=2021-09-30-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1","name":"id1","type":"Microsoft.ManagedIdentity/userAssignedIdentities","location":"westus2","tags":{},"properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","principalId":"72dc1201-200f-44e6-a633-4ede68ac20e9","clientId":"a48701c2-d4b1-4eb5-bd8b-144f60fb5a11"}}' + headers: + cache-control: + - no-cache + content-length: + - '435' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:10 GMT + expires: + - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - identity create + Connection: + - keep-alive + ParameterSetName: + - -n -g --query + User-Agent: + - AZURECLI/2.38.0 azsdk-python-azure-mgmt-resource/21.1.0b1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001?api-version=2021-04-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001","name":"cli_test_fluid_relay000001","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"product":"azurecli","cause":"automation","date":"2022-07-27T06:41:53Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '331' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:11 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"location": "westus2"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - identity create + Connection: + - keep-alive + Content-Length: + - '23' + Content-Type: + - application/json + ParameterSetName: + - -n -g --query + User-Agent: + - AZURECLI/2.38.0 azsdk-python-azure-mgmt-msi/6.0.1 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2?api-version=2021-09-30-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2","name":"id2","type":"Microsoft.ManagedIdentity/userAssignedIdentities","location":"westus2","tags":{},"properties":{"tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","principalId":"0c5df8a7-4b88-4ed3-b6fd-30bf178eaba9","clientId":"5fd3f6f2-4914-4534-9e60-00f4308e36e7"}}' + headers: + cache-control: + - no-cache + content-length: + - '435' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:18 GMT + expires: + - '-1' + location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2 + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + status: + code: 201 + message: Created +- request: + body: '{"identity": {"type": "SystemAssigned"}, "location": "westus2", "properties": + {"storagesku": "standard"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server create + Connection: + - keep-alive + Content-Length: + - '105' + Content-Type: + - application/json + ParameterSetName: + - -n -l -g --sku --identity + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1","name":"testfr1","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:23.0042091Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:23.0042091Z"},"identity":{"principalId":"d629f377-8bd5-4c7b-8d78-9a0b70dbbfe9","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"properties":{"frsTenantId":"c3c6a81d-8cac-4012-9f33-0bdbafeea4da","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '943' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:28 GMT + etag: + - '"ae01f581-0000-0500-0000-62e0de530000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: '{"tags": {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server update + Connection: + - keep-alive + Content-Length: + - '31' + Content-Type: + - application/json + ParameterSetName: + - -n -g --tags + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1","name":"testfr1","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:23.0042091Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:30.6775284Z"},"identity":{"principalId":"d629f377-8bd5-4c7b-8d78-9a0b70dbbfe9","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"properties":{"frsTenantId":"c3c6a81d-8cac-4012-9f33-0bdbafeea4da","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '971' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:33 GMT + etag: + - '"ae01ff81-0000-0500-0000-62e0de580000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: '{"identity": {"type": "SystemAssigned, UserAssigned", "userAssignedIdentities": + {"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": + {}, "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2": + {}}}, "location": "westus2", "properties": {"storagesku": "standard"}, "tags": + {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server create + Connection: + - keep-alive + Content-Length: + - '506' + Content-Type: + - application/json + ParameterSetName: + - -n -l -g --sku --tags --identity + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2","name":"testfr2","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:39.3947795Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:39.3947795Z"},"identity":{"principalId":"c40188fb-0305-4960-be8f-06809b9a8794","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned, + UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1":{"clientId":"a48701c2-d4b1-4eb5-bd8b-144f60fb5a11","principalId":"72dc1201-200f-44e6-a633-4ede68ac20e9"},"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2":{"clientId":"5fd3f6f2-4914-4534-9e60-00f4308e36e7","principalId":"0c5df8a7-4b88-4ed3-b6fd-30bf178eaba9"}}},"properties":{"frsTenantId":"b7728456-3743-488f-931f-7660d393b20c","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:44 GMT + etag: + - '"ae011182-0000-0500-0000-62e0de640000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: '{"tags": {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server update + Connection: + - keep-alive + Content-Length: + - '31' + Content-Type: + - application/json + ParameterSetName: + - -n -g --tags + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2","name":"testfr2","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:39.3947795Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:47.7152823Z"},"identity":{"principalId":"c40188fb-0305-4960-be8f-06809b9a8794","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned, + UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1":{"clientId":"a48701c2-d4b1-4eb5-bd8b-144f60fb5a11","principalId":"72dc1201-200f-44e6-a633-4ede68ac20e9"},"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2":{"clientId":"5fd3f6f2-4914-4534-9e60-00f4308e36e7","principalId":"0c5df8a7-4b88-4ed3-b6fd-30bf178eaba9"}}},"properties":{"frsTenantId":"b7728456-3743-488f-931f-7660d393b20c","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:42:51 GMT + etag: + - '"ae011c82-0000-0500-0000-62e0de6a0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: '{"identity": {"type": "UserAssigned", "userAssignedIdentities": {"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": + {}}}, "location": "westus2", "properties": {"encryption": {"customerManagedKeyEncryption": + {"keyEncryptionKeyIdentity": {"identityType": "UserAssigned", "userAssignedIdentityResourceId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1"}, + "keyEncryptionKeyUrl": "https://contosovault.vault.azure.net/keys/contosokek"}}, + "storagesku": "basic"}, "tags": {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server create + Connection: + - keep-alive + Content-Length: + - '708' + Content-Type: + - application/json + ParameterSetName: + - -n -l -g --sku --key-identity --key-url --tags --identity + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr3?api-version=2022-06-01 + response: + body: + string: '{"error":{"code":"503","message":"CMK is temporarily not available + and it is not allowed to enable CMK on new Fluid Relay resource for now."}}' + headers: + cache-control: + - no-cache + connection: + - close + content-length: + - '142' + content-type: + - application/json + date: + - Wed, 27 Jul 2022 06:42:56 GMT + etag: + - W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-failure-cause: + - service + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - Express + status: + code: 503 + message: Service Unavailable +- request: + body: '{"identity": {"type": "UserAssigned", "userAssignedIdentities": {"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": + {}}}, "location": "westus2", "properties": {"encryption": {"customerManagedKeyEncryption": + {"keyEncryptionKeyIdentity": {"identityType": "UserAssigned", "userAssignedIdentityResourceId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1"}, + "keyEncryptionKeyUrl": "https://contosovault.vault.azure.net/keys/contosokek"}}, + "storagesku": "basic"}, "tags": {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server create + Connection: + - keep-alive + Content-Length: + - '708' + Content-Type: + - application/json + ParameterSetName: + - -n -l -g --sku --key-identity --key-url --tags --identity + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr3?api-version=2022-06-01 + response: + body: + string: '{"error":{"code":"503","message":"CMK is temporarily not available + and it is not allowed to enable CMK on new Fluid Relay resource for now."}}' + headers: + cache-control: + - no-cache + connection: + - close + content-length: + - '142' + content-type: + - application/json + date: + - Wed, 27 Jul 2022 06:43:01 GMT + etag: + - W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-failure-cause: + - service + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 503 + message: Service Unavailable +- request: + body: '{"identity": {"type": "UserAssigned", "userAssignedIdentities": {"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": + {}}}, "location": "westus2", "properties": {"encryption": {"customerManagedKeyEncryption": + {"keyEncryptionKeyIdentity": {"identityType": "UserAssigned", "userAssignedIdentityResourceId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1"}, + "keyEncryptionKeyUrl": "https://contosovault.vault.azure.net/keys/contosokek"}}, + "storagesku": "basic"}, "tags": {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server create + Connection: + - keep-alive + Content-Length: + - '708' + Content-Type: + - application/json + ParameterSetName: + - -n -l -g --sku --key-identity --key-url --tags --identity + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr3?api-version=2022-06-01 + response: + body: + string: '{"error":{"code":"503","message":"CMK is temporarily not available + and it is not allowed to enable CMK on new Fluid Relay resource for now."}}' + headers: + cache-control: + - no-cache + connection: + - close + content-length: + - '142' + content-type: + - application/json + date: + - Wed, 27 Jul 2022 06:43:07 GMT + etag: + - W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-failure-cause: + - service + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 503 + message: Service Unavailable +- request: + body: '{"identity": {"type": "UserAssigned", "userAssignedIdentities": {"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": + {}}}, "location": "westus2", "properties": {"encryption": {"customerManagedKeyEncryption": + {"keyEncryptionKeyIdentity": {"identityType": "UserAssigned", "userAssignedIdentityResourceId": + "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1"}, + "keyEncryptionKeyUrl": "https://contosovault.vault.azure.net/keys/contosokek"}}, + "storagesku": "basic"}, "tags": {"category": "sales"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server create + Connection: + - keep-alive + Content-Length: + - '708' + Content-Type: + - application/json + ParameterSetName: + - -n -l -g --sku --key-identity --key-url --tags --identity + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr3?api-version=2022-06-01 + response: + body: + string: '{"error":{"code":"503","message":"CMK is temporarily not available + and it is not allowed to enable CMK on new Fluid Relay resource for now."}}' + headers: + cache-control: + - no-cache + connection: + - close + content-length: + - '142' + content-type: + - application/json + date: + - Wed, 27 Jul 2022 06:43:14 GMT + etag: + - W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-failure-cause: + - service + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1198' + x-powered-by: + - Express + status: + code: 503 + message: Service Unavailable +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers?api-version=2022-06-01 + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1","name":"testfr1","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:23.0042091Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:30.6775284Z"},"identity":{"principalId":"d629f377-8bd5-4c7b-8d78-9a0b70dbbfe9","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"properties":{"frsTenantId":"c3c6a81d-8cac-4012-9f33-0bdbafeea4da","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2","name":"testfr2","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:39.3947795Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:47.7152823Z"},"identity":{"principalId":"c40188fb-0305-4960-be8f-06809b9a8794","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned, + UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1":{"clientId":"a48701c2-d4b1-4eb5-bd8b-144f60fb5a11","principalId":"72dc1201-200f-44e6-a633-4ede68ac20e9"},"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2":{"clientId":"5fd3f6f2-4914-4534-9e60-00f4308e36e7","principalId":"0c5df8a7-4b88-4ed3-b6fd-30bf178eaba9"}}},"properties":{"frsTenantId":"b7728456-3743-488f-931f-7660d393b20c","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '2524' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:15 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-original-request-ids: + - 3c742d57-d7d3-4761-8283-056f4acdbe2c + - 7f033a67-fe7b-46d8-ab42-526cd4f4a994 + - a5a88535-4b00-4f4d-9a0e-15702c890ad4 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server list + Connection: + - keep-alive + ParameterSetName: + - --subscription + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.FluidRelay/fluidRelayServers?api-version=2022-06-01 + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1","name":"testfr1","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:23.0042091Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:30.6775284Z"},"identity":{"principalId":"d629f377-8bd5-4c7b-8d78-9a0b70dbbfe9","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"properties":{"frsTenantId":"c3c6a81d-8cac-4012-9f33-0bdbafeea4da","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}},{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2","name":"testfr2","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:39.3947795Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:47.7152823Z"},"identity":{"principalId":"c40188fb-0305-4960-be8f-06809b9a8794","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned, + UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1":{"clientId":"a48701c2-d4b1-4eb5-bd8b-144f60fb5a11","principalId":"72dc1201-200f-44e6-a633-4ede68ac20e9"},"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2":{"clientId":"5fd3f6f2-4914-4534-9e60-00f4308e36e7","principalId":"0c5df8a7-4b88-4ed3-b6fd-30bf178eaba9"}}},"properties":{"frsTenantId":"b7728456-3743-488f-931f-7660d393b20c","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '2524' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:17 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-original-request-ids: + - 85371fea-fa57-41b8-ad84-9f95f76d3598 + - 469f6b43-26bc-474c-8900-9330f3baf2fc + - 1a2fd77d-067c-4e6b-a557-911bd2b6ad0f + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server list-key + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g --server-name + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1/listKeys?api-version=2022-06-01 + response: + body: + string: '{"key1":"ee4045db087ea247f2f51e51b3b79388","key2":"717c7d0faee7f4ca75175d08e02f5d37"}' + headers: + cache-control: + - no-cache + content-length: + - '85' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:19 GMT + etag: + - W/"55-xBAzgzOStlj7JVgAloV7SI1Fl1w" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server list-key + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -g --server-name + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2/listKeys?api-version=2022-06-01 + response: + body: + string: '{"key1":"c5067a40fb0226aff480fa27b9e2ac0e","key2":"d51e7a6099c5d1c7270664940c424ba8"}' + headers: + cache-control: + - no-cache + content-length: + - '85' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:20 GMT + etag: + - W/"55-WLo/d0M3wYNXy37ABB/Z0nWfmQE" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: '{"keyName": "key1"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server regenerate-key + Connection: + - keep-alive + Content-Length: + - '19' + Content-Type: + - application/json + ParameterSetName: + - -g --server-name --key-name + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1/regenerateKey?api-version=2022-06-01 + response: + body: + string: '{"key1":"bc897dab05e739f1008d09d6d713fd28","key2":"717c7d0faee7f4ca75175d08e02f5d37"}' + headers: + cache-control: + - no-cache + content-length: + - '85' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:23 GMT + etag: + - W/"55-JaYO1UjIH13U/HLuapvtT6a7+oY" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: '{"keyName": "key1"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server regenerate-key + Connection: + - keep-alive + Content-Length: + - '19' + Content-Type: + - application/json + ParameterSetName: + - -g --server-name --key-name + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2/regenerateKey?api-version=2022-06-01 + response: + body: + string: '{"key1":"09621cdc129808a2136a86130939784c","key2":"d51e7a6099c5d1c7270664940c424ba8"}' + headers: + cache-control: + - no-cache + content-length: + - '85' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:26 GMT + etag: + - W/"55-OemhXID6kbdEg+zs+EkpFLdoUQI" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-writes: + - '1199' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1","name":"testfr1","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:23.0042091Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:30.6775284Z"},"identity":{"principalId":"d629f377-8bd5-4c7b-8d78-9a0b70dbbfe9","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned"},"properties":{"frsTenantId":"c3c6a81d-8cac-4012-9f33-0bdbafeea4da","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '971' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:29 GMT + etag: + - '"ae01ff81-0000-0500-0000-62e0de580000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server show + Connection: + - keep-alive + ParameterSetName: + - -g -n + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2?api-version=2022-06-01 + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2","name":"testfr2","type":"microsoft.fluidrelay/fluidrelayservers","location":"westus2","tags":{"category":"sales"},"systemData":{"createdBy":"v-taoxuzeng@microsoft.com","createdByType":"User","createdAt":"2022-07-27T06:42:39.3947795Z","lastModifiedBy":"v-taoxuzeng@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2022-07-27T06:42:47.7152823Z"},"identity":{"principalId":"c40188fb-0305-4960-be8f-06809b9a8794","tenantId":"54826b22-38d6-4fb2-bad9-b7b93a3e9c5a","type":"SystemAssigned, + UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1":{"clientId":"a48701c2-d4b1-4eb5-bd8b-144f60fb5a11","principalId":"72dc1201-200f-44e6-a633-4ede68ac20e9"},"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cli_test_fluid_relay000001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2":{"clientId":"5fd3f6f2-4914-4534-9e60-00f4308e36e7","principalId":"0c5df8a7-4b88-4ed3-b6fd-30bf178eaba9"}}},"properties":{"frsTenantId":"b7728456-3743-488f-931f-7660d393b20c","fluidRelayEndpoints":{"ordererEndpoints":["https://alfred.westus2.fluidrelay.azure.com"],"storageEndpoints":["https://historian.westus2.fluidrelay.azure.com"],"serviceEndpoints":["https://us.fluidrelay.azure.com"]},"provisioningState":"Succeeded"}}' + headers: + cache-control: + - no-cache + content-length: + - '1540' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:31 GMT + etag: + - '"ae011c82-0000-0500-0000-62e0de6a0000"' + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay container list + Connection: + - keep-alive + ParameterSetName: + - -g --server-name + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1/fluidRelayContainers?api-version=2022-06-01 + response: + body: + string: '{"value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:33 GMT + etag: + - W/"c-ct3goOI+b+kRZv2R9j2fTtMXwkk" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay container list + Connection: + - keep-alive + ParameterSetName: + - -g --server-name + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2/fluidRelayContainers?api-version=2022-06-01 + response: + body: + string: '{"value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:34 GMT + etag: + - W/"c-ct3goOI+b+kRZv2R9j2fTtMXwkk" + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g -y + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr1?api-version=2022-06-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Wed, 27 Jul 2022 06:43:42 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g -y + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers/testfr2?api-version=2022-06-01 + response: + body: + string: '' + headers: + cache-control: + - no-cache + content-length: + - '0' + date: + - Wed, 27 Jul 2022 06:43:51 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + x-content-type-options: + - nosniff + x-ms-providerhub-traffic: + - 'True' + x-ms-ratelimit-remaining-subscription-deletes: + - '14999' + x-powered-by: + - Express + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_fluid_relay000001/providers/Microsoft.FluidRelay/fluidRelayServers?api-version=2022-06-01 + response: + body: + string: '{"value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:53 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-original-request-ids: + - 349a2383-6728-444e-b3ad-203af56e21e1 + - 8f9dd0a3-08b0-48a3-9326-fdb23272d990 + - aadb7e52-2f07-4999-a66d-4cdb34d26193 + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - fluid-relay server list + Connection: + - keep-alive + ParameterSetName: + - --subscription + User-Agent: + - AZURECLI/2.38.0 (AAZ) azsdk-python-core/1.24.0 Python/3.9.5 (Windows-10-10.0.19044-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.FluidRelay/fluidRelayServers?api-version=2022-06-01 + response: + body: + string: '{"value":[]}' + headers: + cache-control: + - no-cache + content-length: + - '12' + content-type: + - application/json; charset=utf-8 + date: + - Wed, 27 Jul 2022 06:43:55 GMT + expires: + - '-1' + pragma: + - no-cache + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-original-request-ids: + - 5ff9b2a2-3f64-44d8-addb-041fae8be394 + - 56d3edd7-f082-43e5-b22b-263f190ec033 + - 03644279-a7b1-4d16-b37d-a592fcb9f39b + status: + code: 200 + message: OK +version: 1 diff --git a/src/fluid-relay/azext_fluid_relay/tests/latest/test_fluid_relay.py b/src/fluid-relay/azext_fluid_relay/tests/latest/test_fluid_relay.py new file mode 100644 index 00000000000..163a882caff --- /dev/null +++ b/src/fluid-relay/azext_fluid_relay/tests/latest/test_fluid_relay.py @@ -0,0 +1,76 @@ +# -------------------------------------------------------------------------------------------- +# 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 +# -------------------------------------------------------------------------------------------- + +from azure.cli.testsdk import * + + +class FluidRelayScenario(ScenarioTest): + # TODO: add tests here + + @ResourceGroupPreparer(name_prefix='cli_test_fluid_relay', location='westus2') + def test_fluid_relay_scenario(self, resource_group): + self.kwargs.update({ + 'subscription_id': self.get_subscription_id(), + 'server_name1': 'testfr1', + 'server_name2': 'testfr2', + 'server_name3': 'testfr3', + 'identity_name1': 'id1', + 'identity_name2': 'id2', + }) + + self.kwargs['id1'] = self.cmd('identity create -n {identity_name1} -g {rg} --query id').get_output_in_json() + self.kwargs['id2'] = self.cmd('identity create -n {identity_name2} -g {rg} --query id').get_output_in_json() + self.cmd('fluid-relay server create -n {server_name1} -l westus2 -g {rg} --sku standard ' + '--identity type="SystemAssigned"', + checks=[self.check('identity.type', 'SystemAssigned'), + self.check('name', 'testfr1'), + self.check('provisioningState', 'Succeeded')]) + self.cmd('fluid-relay server update -n {server_name1} -g {rg} --tags category=sales', + self.check('tags.category', 'sales')) + + self.cmd('fluid-relay server create -n {server_name2} -l westus2 -g {rg} --sku standard --tags category=sales ' + '--identity \"{{type:\'SystemAssigned, UserAssigned\',user-assigned-identities:{{"/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1","/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/{rg}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id2"}}}}\"', + checks=[self.check('identity.type', 'SystemAssigned, UserAssigned'), + self.check('name', 'testfr2'), + self.check('provisioningState', 'Succeeded')] + ) + self.cmd('fluid-relay server update -n {server_name2} -g {rg} --tags category=sales', + self.check('tags.category', 'sales')) + + from azure.core.exceptions import HttpResponseError + with self.assertRaisesRegex(HttpResponseError, 'CMK is temporarily not available and it is not allowed to enable CMK on new Fluid Relay resource for now.'): + self.cmd('fluid-relay server create -n {server_name3} -l westus2 -g {rg} --sku basic ' + '--key-identity \"{{identity-type:"UserAssigned",user-assigned-identities:{id1}}}\" ' + '--key-url="https://contosovault.vault.azure.net/keys/contosokek" --tags category=sales ' + '--identity \"{{type:"UserAssigned",user-assigned-identities:{{{id1}}}}}\"') + + self.cmd('fluid-relay server list -g {rg}', checks=self.check('length(@)', 2)) + self.cmd('fluid-relay server list --subscription {subscription_id}') + self.cmd('fluid-relay server list-key -g {rg} --server-name {server_name1}', + checks=self.check('length(@)', 2)) + self.cmd('fluid-relay server list-key -g {rg} --server-name {server_name2}', + checks=self.check('length(@)', 2)) + self.cmd('fluid-relay server regenerate-key -g {rg} --server-name {server_name1} --key-name key1', + checks=self.check('length(@)', 2)) + self.cmd('fluid-relay server regenerate-key -g {rg} --server-name {server_name2} --key-name key1', + checks=self.check('length(@)', 2)) + self.cmd('fluid-relay server show -g {rg} -n {server_name1}', + checks=[self.check('identity.type', 'SystemAssigned'), + self.check('name', 'testfr1')]) + self.cmd('fluid-relay server show -g {rg} -n {server_name2}', + checks=[self.check('identity.type', 'SystemAssigned, UserAssigned'), + self.check('name', 'testfr2')] + ) + + self.cmd('fluid-relay container list -g {rg} --server-name {server_name1}', checks=self.check('length(@)', 0)) + self.cmd('fluid-relay container list -g {rg} --server-name {server_name2}', checks=self.check('length(@)', 0)) + + self.cmd('fluid-relay server delete -n {server_name1} -g {rg} -y') + self.cmd('fluid-relay server delete -n {server_name2} -g {rg} -y') + + self.cmd('fluid-relay server list -g {rg}', checks=self.check('length(@)', 0)) + self.cmd('fluid-relay server list --subscription {subscription_id}') diff --git a/src/fluid-relay/setup.cfg b/src/fluid-relay/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/fluid-relay/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/fluid-relay/setup.py b/src/fluid-relay/setup.py new file mode 100644 index 00000000000..d3f79791580 --- /dev/null +++ b/src/fluid-relay/setup.py @@ -0,0 +1,49 @@ +# -------------------------------------------------------------------------------------------- +# 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 +# -------------------------------------------------------------------------------------------- + +from codecs import open +from setuptools import setup, find_packages + + +# HISTORY.rst entry. +VERSION = '0.1.0' + +# The full list of classifiers is available at +# https://pypi.python.org/pypi?%3Aaction=list_classifiers +CLASSIFIERS = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [] + +with open('README.md', 'r', encoding='utf-8') as f: + README = f.read() +with open('HISTORY.rst', 'r', encoding='utf-8') as f: + HISTORY = f.read() + +setup( + name='fluid-relay', + version=VERSION, + description='Microsoft Azure Command-Line Tools FluidRelay Extension.', + long_description=README + '\n\n' + HISTORY, + license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/fluid-relay', + classifiers=CLASSIFIERS, + packages=find_packages(exclude=["tests"]), + package_data={'azext_fluid_relay': ['azext_metadata.json']}, + install_requires=DEPENDENCIES +) diff --git a/src/service_name.json b/src/service_name.json index 97fd51cdd9b..ff08a262f9e 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -189,6 +189,11 @@ "AzureServiceName": "Azure Elastic", "URL": "https://docs.microsoft.com/en-us/azure/partner-solutions/elastic/overview" }, + { + "Command": "az fluid-relay", + "AzureServiceName": "Azure Fluid Relay", + "URL": "https://docs.microsoft.com/en-us/azure/azure-fluid-relay/overview/overview" + }, { "Command": "az footprint", "AzureServiceName": "Azure Monitor",