From 0d70396bf468b82c5f7b0ced657d029a099d1b9c Mon Sep 17 00:00:00 2001 From: Matthew Christopher Date: Tue, 4 Feb 2025 10:58:04 -0800 Subject: [PATCH] Update SignalR API version to 2024-03-01 Add new resources: * Replicas * CustomCertificate * CustomDomain --- docs/hugo/content/reference/_index.md | 25 +- .../reference/containerregistry/_index.md | 8 +- .../reference/signalrservice/_index.md | 17 +- .../custom_certificate_extension_types_gen.go | 20 + .../custom_domain_extension_types_gen.go | 20 + .../replica_extension_types_gen.go | 20 + .../signal_r_extension_authorization.go | 2 +- .../signal_r_extension_authorization_test.go | 2 +- .../signal_r_extension_types_gen.go | 8 +- .../customizations/structure.txt | 3 + .../v1api20211001/signal_r_types_gen.go | 531 +- .../v1api20211001/signal_r_types_gen_test.go | 81 +- .../storage/signal_r_types_gen.go | 4334 +++++++++- .../storage/signal_r_types_gen_test.go | 1686 +++- .../v1api20211001/storage/structure.txt | 38 + .../arm/custom_certificate_spec_types_gen.go | 42 + .../custom_certificate_spec_types_gen_test.go | 156 + .../custom_certificate_status_types_gen.go | 120 + ...ustom_certificate_status_types_gen_test.go | 242 + .../arm/custom_domain_spec_types_gen.go | 44 + .../arm/custom_domain_spec_types_gen_test.go | 227 + .../arm/custom_domain_status_types_gen.go | 40 + .../custom_domain_status_types_gen_test.go | 242 + .../arm/replica_spec_types_gen.go | 88 + .../arm/replica_spec_types_gen_test.go | 224 + .../arm/replica_status_types_gen.go | 89 + .../arm/replica_status_types_gen_test.go | 240 + .../arm/signal_r_spec_types_gen.go | 422 + .../arm/signal_r_spec_types_gen_test.go | 1373 +++ .../arm/signal_r_status_types_gen.go | 465 + .../arm/signal_r_status_types_gen_test.go | 1534 ++++ .../v1api20240301/arm/structure.txt | 371 + .../custom_certificate_types_gen.go | 1304 +++ .../custom_certificate_types_gen_test.go | 629 ++ .../v1api20240301/custom_domain_types_gen.go | 1206 +++ .../custom_domain_types_gen_test.go | 710 ++ v2/api/signalrservice/v1api20240301/doc.go | 10 + .../v1api20240301/groupversion_info_gen.go | 32 + .../v1api20240301/replica_types_gen.go | 1521 ++++ .../v1api20240301/replica_types_gen_test.go | 738 ++ .../v1api20240301/signal_r_types_gen.go | 7605 +++++++++++++++++ .../v1api20240301/signal_r_types_gen_test.go | 4768 +++++++++++ .../storage/custom_certificate_types_gen.go | 270 + .../custom_certificate_types_gen_test.go | 359 + .../storage/custom_domain_types_gen.go | 265 + .../storage/custom_domain_types_gen_test.go | 406 + .../storage/groupversion_info_gen.go | 32 + .../storage/replica_types_gen.go | 275 + .../storage/replica_types_gen_test.go | 426 + .../storage/signal_r_types_gen.go | 608 ++ .../storage/signal_r_types_gen_test.go | 2870 +++++++ .../v1api20240301/storage/structure.txt | 319 + .../storage/zz_generated.deepcopy.go | 2596 ++++++ .../v1api20240301/structure.txt | 411 + .../v1api20240301/zz_generated.deepcopy.go | 2202 +++++ v2/api/signalrservice/versions_matrix.md | 143 +- v2/azure-arm.yaml | 24 + .../controllers/controller_resources_gen.go | 50 +- ...ice_v1api20211001_CreationAndDeletion.yaml | 1026 +++ ...ice_v1api20240301_CreationAndDeletion.yaml | 1462 ++++ ...nalrservice_v1api_CreationAndDeletion.yaml | 613 -- ..._SignalRService_SignalR_20240301_CRUD.yaml | 2709 ++++++ ...> signalrservice_signalr_20211001_test.go} | 16 +- .../signalrservice_signalr_20240301_test.go | 232 + v2/internal/testcommon/samples_tester.go | 4 + .../v1api20211001_signalr.yaml | 0 .../v1api20240301_customcertificate.yaml | 14 + .../v1api20240301_customdomain.yaml | 14 + .../v1api20240301/v1api20240301_replica.yaml | 12 + .../v1api20240301/v1api20240301_signalr.yaml | 60 + 70 files changed, 47268 insertions(+), 1387 deletions(-) create mode 100644 v2/api/signalrservice/customizations/custom_certificate_extension_types_gen.go create mode 100644 v2/api/signalrservice/customizations/custom_domain_extension_types_gen.go create mode 100644 v2/api/signalrservice/customizations/replica_extension_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/arm/structure.txt create mode 100644 v2/api/signalrservice/v1api20240301/custom_certificate_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/custom_certificate_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/custom_domain_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/custom_domain_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/doc.go create mode 100644 v2/api/signalrservice/v1api20240301/groupversion_info_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/replica_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/replica_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/signal_r_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/signal_r_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/groupversion_info_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/replica_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/replica_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen_test.go create mode 100644 v2/api/signalrservice/v1api20240301/storage/structure.txt create mode 100644 v2/api/signalrservice/v1api20240301/storage/zz_generated.deepcopy.go create mode 100644 v2/api/signalrservice/v1api20240301/structure.txt create mode 100644 v2/api/signalrservice/v1api20240301/zz_generated.deepcopy.go create mode 100644 v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20211001_CreationAndDeletion.yaml create mode 100644 v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20240301_CreationAndDeletion.yaml delete mode 100644 v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api_CreationAndDeletion.yaml create mode 100644 v2/internal/controllers/recordings/Test_SignalRService_SignalR_20240301_CRUD.yaml rename v2/internal/controllers/{crd_signalr_test.go => signalrservice_signalr_20211001_test.go} (91%) create mode 100644 v2/internal/controllers/signalrservice_signalr_20240301_test.go rename v2/samples/signalrservice/{v1api => v1api20211001}/v1api20211001_signalr.yaml (100%) create mode 100644 v2/samples/signalrservice/v1api20240301/v1api20240301_customcertificate.yaml create mode 100644 v2/samples/signalrservice/v1api20240301/v1api20240301_customdomain.yaml create mode 100644 v2/samples/signalrservice/v1api20240301/v1api20240301_replica.yaml create mode 100644 v2/samples/signalrservice/v1api20240301/v1api20240301_signalr.yaml diff --git a/docs/hugo/content/reference/_index.md b/docs/hugo/content/reference/_index.md index 61e46b1ed86..3700b4c02cd 100644 --- a/docs/hugo/content/reference/_index.md +++ b/docs/hugo/content/reference/_index.md @@ -202,10 +202,10 @@ To install the CRDs for these resources, your ASO configuration must include `co Development of these new resources is complete and they will be available in the next release of ASO. -| Resource | ARM Version | CRD Version | Supported From | Sample | -|---------------------|-------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| -| Registry | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml) | -| RegistryReplication | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml) | +| Resource | ARM Version | CRD Version | Supported From | Sample | +|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| [Registry](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20230701/#containerregistry.azure.com/v1api20230701.Registry) | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml) | +| [RegistryReplication](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20230701/#containerregistry.azure.com/v1api20230701.RegistryReplication) | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml) | ### Released @@ -706,13 +706,24 @@ These resource(s) are available for use in the current release of ASO. Different To install the CRDs for these resources, your ASO configuration must include `signalrservice.azure.com/*` as a one of the configured CRD patterns. See [CRD Management in ASO](https://azure.github.io/azure-service-operator/guide/crd-management/) for details on doing this for both [Helm](https://azure.github.io/azure-service-operator/guide/crd-management/#helm) and [YAML](https://azure.github.io/azure-service-operator/guide/crd-management/#yaml) based installations. +### Next Release + +Development of these new resources is complete and they will be available in the next release of ASO. + +| Resource | ARM Version | CRD Version | Supported From | Sample | +|-------------------|-------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------| +| CustomCertificate | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_customcertificate.yaml) | +| CustomDomain | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_customdomain.yaml) | +| Replica | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_replica.yaml) | +| SignalR | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_signalr.yaml) | + ### Released These resource(s) are available for use in the current release of ASO. Different versions of a given resource reflect different versions of the Azure ARM API. -| Resource | ARM Version | CRD Version | Supported From | Sample | -|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------| -| [SignalR](https://azure.github.io/azure-service-operator/reference/signalrservice/v1api20211001/#signalrservice.azure.com/v1api20211001.SignalR) | 2021-10-01 | v1api20211001 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api/v1api20211001_signalr.yaml) | +| Resource | ARM Version | CRD Version | Supported From | Sample | +|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------| +| [SignalR](https://azure.github.io/azure-service-operator/reference/signalrservice/v1api20211001/#signalrservice.azure.com/v1api20211001.SignalR) | 2021-10-01 | v1api20211001 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20211001/v1api20211001_signalr.yaml) | ## Sql diff --git a/docs/hugo/content/reference/containerregistry/_index.md b/docs/hugo/content/reference/containerregistry/_index.md index ab4cf016030..94ef65e6dd4 100644 --- a/docs/hugo/content/reference/containerregistry/_index.md +++ b/docs/hugo/content/reference/containerregistry/_index.md @@ -9,10 +9,10 @@ To install the CRDs for these resources, your ASO configuration must include `co Development of these new resources is complete and they will be available in the next release of ASO. -| Resource | ARM Version | CRD Version | Supported From | Sample | -|---------------------|-------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| -| Registry | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml) | -| RegistryReplication | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml) | +| Resource | ARM Version | CRD Version | Supported From | Sample | +|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| [Registry](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20230701/#containerregistry.azure.com/v1api20230701.Registry) | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml) | +| [RegistryReplication](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20230701/#containerregistry.azure.com/v1api20230701.RegistryReplication) | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml) | ### Released diff --git a/docs/hugo/content/reference/signalrservice/_index.md b/docs/hugo/content/reference/signalrservice/_index.md index 4e8cd4a9562..46bdf0bd2d7 100644 --- a/docs/hugo/content/reference/signalrservice/_index.md +++ b/docs/hugo/content/reference/signalrservice/_index.md @@ -5,11 +5,22 @@ no_list: true --- To install the CRDs for these resources, your ASO configuration must include `signalrservice.azure.com/*` as a one of the configured CRD patterns. See [CRD Management in ASO](https://azure.github.io/azure-service-operator/guide/crd-management/) for details on doing this for both [Helm](https://azure.github.io/azure-service-operator/guide/crd-management/#helm) and [YAML](https://azure.github.io/azure-service-operator/guide/crd-management/#yaml) based installations. +### Next Release + +Development of these new resources is complete and they will be available in the next release of ASO. + +| Resource | ARM Version | CRD Version | Supported From | Sample | +|-------------------|-------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------| +| CustomCertificate | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_customcertificate.yaml) | +| CustomDomain | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_customdomain.yaml) | +| Replica | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_replica.yaml) | +| SignalR | 2024-03-01 | v1api20240301 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20240301/v1api20240301_signalr.yaml) | + ### Released These resource(s) are available for use in the current release of ASO. Different versions of a given resource reflect different versions of the Azure ARM API. -| Resource | ARM Version | CRD Version | Supported From | Sample | -|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------| -| [SignalR](https://azure.github.io/azure-service-operator/reference/signalrservice/v1api20211001/#signalrservice.azure.com/v1api20211001.SignalR) | 2021-10-01 | v1api20211001 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api/v1api20211001_signalr.yaml) | +| Resource | ARM Version | CRD Version | Supported From | Sample | +|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|--------------------------------------------------------------------------------------------------------------------------------------| +| [SignalR](https://azure.github.io/azure-service-operator/reference/signalrservice/v1api20211001/#signalrservice.azure.com/v1api20211001.SignalR) | 2021-10-01 | v1api20211001 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/signalrservice/v1api20211001/v1api20211001_signalr.yaml) | diff --git a/v2/api/signalrservice/customizations/custom_certificate_extension_types_gen.go b/v2/api/signalrservice/customizations/custom_certificate_extension_types_gen.go new file mode 100644 index 00000000000..845b28974f7 --- /dev/null +++ b/v2/api/signalrservice/customizations/custom_certificate_extension_types_gen.go @@ -0,0 +1,20 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package customizations + +import ( + v20240301 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type CustomCertificateExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *CustomCertificateExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20240301.CustomCertificate{}, + &storage.CustomCertificate{}} +} diff --git a/v2/api/signalrservice/customizations/custom_domain_extension_types_gen.go b/v2/api/signalrservice/customizations/custom_domain_extension_types_gen.go new file mode 100644 index 00000000000..6c9403e824e --- /dev/null +++ b/v2/api/signalrservice/customizations/custom_domain_extension_types_gen.go @@ -0,0 +1,20 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package customizations + +import ( + v20240301 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type CustomDomainExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *CustomDomainExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20240301.CustomDomain{}, + &storage.CustomDomain{}} +} diff --git a/v2/api/signalrservice/customizations/replica_extension_types_gen.go b/v2/api/signalrservice/customizations/replica_extension_types_gen.go new file mode 100644 index 00000000000..f773cc0025a --- /dev/null +++ b/v2/api/signalrservice/customizations/replica_extension_types_gen.go @@ -0,0 +1,20 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package customizations + +import ( + v20240301 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type ReplicaExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *ReplicaExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20240301.Replica{}, + &storage.Replica{}} +} diff --git a/v2/api/signalrservice/customizations/signal_r_extension_authorization.go b/v2/api/signalrservice/customizations/signal_r_extension_authorization.go index a1fe97ddb7c..d9d226d9a4c 100644 --- a/v2/api/signalrservice/customizations/signal_r_extension_authorization.go +++ b/v2/api/signalrservice/customizations/signal_r_extension_authorization.go @@ -16,7 +16,7 @@ import ( v1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/conversion" - signalr "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + signalr "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" "github.com/Azure/azure-service-operator/v2/internal/genericarmclient" "github.com/Azure/azure-service-operator/v2/internal/set" "github.com/Azure/azure-service-operator/v2/internal/util/to" diff --git a/v2/api/signalrservice/customizations/signal_r_extension_authorization_test.go b/v2/api/signalrservice/customizations/signal_r_extension_authorization_test.go index 25fe8762ebe..0a302e668e0 100644 --- a/v2/api/signalrservice/customizations/signal_r_extension_authorization_test.go +++ b/v2/api/signalrservice/customizations/signal_r_extension_authorization_test.go @@ -11,7 +11,7 @@ import ( . "github.com/onsi/gomega" - signalr "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + signalr "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" testreflect "github.com/Azure/azure-service-operator/v2/internal/testcommon/reflect" ) diff --git a/v2/api/signalrservice/customizations/signal_r_extension_types_gen.go b/v2/api/signalrservice/customizations/signal_r_extension_types_gen.go index 50272f385c4..fb39e0bca5a 100644 --- a/v2/api/signalrservice/customizations/signal_r_extension_types_gen.go +++ b/v2/api/signalrservice/customizations/signal_r_extension_types_gen.go @@ -5,7 +5,9 @@ package customizations import ( v20211001 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001" - storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + v20211001s "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + v20240301 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301" + v20240301s "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -16,5 +18,7 @@ type SignalRExtension struct { func (extension *SignalRExtension) GetExtendedResources() []genruntime.KubernetesResource { return []genruntime.KubernetesResource{ &v20211001.SignalR{}, - &storage.SignalR{}} + &v20211001s.SignalR{}, + &v20240301.SignalR{}, + &v20240301s.SignalR{}} } diff --git a/v2/api/signalrservice/customizations/structure.txt b/v2/api/signalrservice/customizations/structure.txt index 0c2c5b9173f..09127dd16b9 100644 --- a/v2/api/signalrservice/customizations/structure.txt +++ b/v2/api/signalrservice/customizations/structure.txt @@ -1,4 +1,7 @@ // Code generated by azure-service-operator-codegen. DO NOT EDIT. github.com/Azure/azure-service-operator/v2/api/signalrservice/customizations ---------------------------------------------------------------------------- +CustomCertificateExtension: Object (0 properties) +CustomDomainExtension: Object (0 properties) +ReplicaExtension: Object (0 properties) SignalRExtension: Object (0 properties) diff --git a/v2/api/signalrservice/v1api20211001/signal_r_types_gen.go b/v2/api/signalrservice/v1api20211001/signal_r_types_gen.go index e7ce6c87a6a..0678321463f 100644 --- a/v2/api/signalrservice/v1api20211001/signal_r_types_gen.go +++ b/v2/api/signalrservice/v1api20211001/signal_r_types_gen.go @@ -53,22 +53,36 @@ var _ conversion.Convertible = &SignalR{} // ConvertFrom populates our SignalR from the provided hub SignalR func (signalR *SignalR) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.SignalR) - if !ok { - return fmt.Errorf("expected signalrservice/v1api20211001/storage/SignalR but received %T instead", hub) + // intermediate variable for conversion + var source storage.SignalR + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") } - return signalR.AssignProperties_From_SignalR(source) + err = signalR.AssignProperties_From_SignalR(&source) + if err != nil { + return eris.Wrap(err, "converting from source to signalR") + } + + return nil } // ConvertTo populates the provided hub SignalR from our SignalR func (signalR *SignalR) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.SignalR) - if !ok { - return fmt.Errorf("expected signalrservice/v1api20211001/storage/SignalR but received %T instead", hub) + // intermediate variable for conversion + var destination storage.SignalR + err := signalR.AssignProperties_To_SignalR(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from signalR") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return signalR.AssignProperties_To_SignalR(destination) + return nil } // +kubebuilder:webhook:path=/mutate-signalrservice-azure-com-v1api20211001-signalr,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=signalrs,verbs=create;update,versions=v1api20211001,name=default.v1api20211001.signalrs.signalrservice.azure.com,admissionReviewVersions=v1 @@ -114,17 +128,6 @@ func (signalR *SignalR) SecretDestinationExpressions() []*core.DestinationExpres return signalR.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &SignalR{} - -// InitializeSpec initializes the spec for this resource from the given status -func (signalR *SignalR) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*SignalR_STATUS); ok { - return signalR.Spec.Initialize_From_SignalR_STATUS(s) - } - - return fmt.Errorf("expected Status of type SignalR_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &SignalR{} // AzureName returns the Azure name of the resource @@ -1158,148 +1161,6 @@ func (signalR *SignalR_Spec) AssignProperties_To_SignalR_Spec(destination *stora return nil } -// Initialize_From_SignalR_STATUS populates our SignalR_Spec from the provided source SignalR_STATUS -func (signalR *SignalR_Spec) Initialize_From_SignalR_STATUS(source *SignalR_STATUS) error { - - // Cors - if source.Cors != nil { - var cor SignalRCorsSettings - err := cor.Initialize_From_SignalRCorsSettings_STATUS(source.Cors) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_SignalRCorsSettings_STATUS() to populate field Cors") - } - signalR.Cors = &cor - } else { - signalR.Cors = nil - } - - // DisableAadAuth - if source.DisableAadAuth != nil { - disableAadAuth := *source.DisableAadAuth - signalR.DisableAadAuth = &disableAadAuth - } else { - signalR.DisableAadAuth = nil - } - - // DisableLocalAuth - if source.DisableLocalAuth != nil { - disableLocalAuth := *source.DisableLocalAuth - signalR.DisableLocalAuth = &disableLocalAuth - } else { - signalR.DisableLocalAuth = nil - } - - // Features - if source.Features != nil { - featureList := make([]SignalRFeature, len(source.Features)) - for featureIndex, featureItem := range source.Features { - // Shadow the loop variable to avoid aliasing - featureItem := featureItem - var feature SignalRFeature - err := feature.Initialize_From_SignalRFeature_STATUS(&featureItem) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_SignalRFeature_STATUS() to populate field Features") - } - featureList[featureIndex] = feature - } - signalR.Features = featureList - } else { - signalR.Features = nil - } - - // Identity - if source.Identity != nil { - var identity ManagedIdentity - err := identity.Initialize_From_ManagedIdentity_STATUS(source.Identity) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ManagedIdentity_STATUS() to populate field Identity") - } - signalR.Identity = &identity - } else { - signalR.Identity = nil - } - - // Kind - if source.Kind != nil { - kind := genruntime.ToEnum(string(*source.Kind), serviceKind_Values) - signalR.Kind = &kind - } else { - signalR.Kind = nil - } - - // Location - signalR.Location = genruntime.ClonePointerToString(source.Location) - - // NetworkACLs - if source.NetworkACLs != nil { - var networkACL SignalRNetworkACLs - err := networkACL.Initialize_From_SignalRNetworkACLs_STATUS(source.NetworkACLs) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_SignalRNetworkACLs_STATUS() to populate field NetworkACLs") - } - signalR.NetworkACLs = &networkACL - } else { - signalR.NetworkACLs = nil - } - - // PublicNetworkAccess - signalR.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) - - // ResourceLogConfiguration - if source.ResourceLogConfiguration != nil { - var resourceLogConfiguration ResourceLogConfiguration - err := resourceLogConfiguration.Initialize_From_ResourceLogConfiguration_STATUS(source.ResourceLogConfiguration) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ResourceLogConfiguration_STATUS() to populate field ResourceLogConfiguration") - } - signalR.ResourceLogConfiguration = &resourceLogConfiguration - } else { - signalR.ResourceLogConfiguration = nil - } - - // Sku - if source.Sku != nil { - var sku ResourceSku - err := sku.Initialize_From_ResourceSku_STATUS(source.Sku) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ResourceSku_STATUS() to populate field Sku") - } - signalR.Sku = &sku - } else { - signalR.Sku = nil - } - - // Tags - signalR.Tags = genruntime.CloneMapOfStringToString(source.Tags) - - // Tls - if source.Tls != nil { - var tl SignalRTlsSettings - err := tl.Initialize_From_SignalRTlsSettings_STATUS(source.Tls) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_SignalRTlsSettings_STATUS() to populate field Tls") - } - signalR.Tls = &tl - } else { - signalR.Tls = nil - } - - // Upstream - if source.Upstream != nil { - var upstream ServerlessUpstreamSettings - err := upstream.Initialize_From_ServerlessUpstreamSettings_STATUS(source.Upstream) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ServerlessUpstreamSettings_STATUS() to populate field Upstream") - } - signalR.Upstream = &upstream - } else { - signalR.Upstream = nil - } - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (signalR *SignalR_Spec) OriginalVersion() string { return GroupVersion.Version @@ -2356,33 +2217,6 @@ func (identity *ManagedIdentity) AssignProperties_To_ManagedIdentity(destination return nil } -// Initialize_From_ManagedIdentity_STATUS populates our ManagedIdentity from the provided source ManagedIdentity_STATUS -func (identity *ManagedIdentity) Initialize_From_ManagedIdentity_STATUS(source *ManagedIdentity_STATUS) error { - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), managedIdentityType_Values) - identity.Type = &typeVar - } else { - identity.Type = nil - } - - // UserAssignedIdentities - if source.UserAssignedIdentities != nil { - userAssignedIdentityList := make([]UserAssignedIdentityDetails, 0, len(source.UserAssignedIdentities)) - for userAssignedIdentitiesKey := range source.UserAssignedIdentities { - userAssignedIdentitiesRef := genruntime.CreateResourceReferenceFromARMID(userAssignedIdentitiesKey) - userAssignedIdentityList = append(userAssignedIdentityList, UserAssignedIdentityDetails{Reference: userAssignedIdentitiesRef}) - } - identity.UserAssignedIdentities = userAssignedIdentityList - } else { - identity.UserAssignedIdentities = nil - } - - // No error - return nil -} - // A class represent managed identities used for request and response type ManagedIdentity_STATUS struct { // PrincipalId: Get the principal id for the system assigned identity. @@ -2737,31 +2571,6 @@ func (configuration *ResourceLogConfiguration) AssignProperties_To_ResourceLogCo return nil } -// Initialize_From_ResourceLogConfiguration_STATUS populates our ResourceLogConfiguration from the provided source ResourceLogConfiguration_STATUS -func (configuration *ResourceLogConfiguration) Initialize_From_ResourceLogConfiguration_STATUS(source *ResourceLogConfiguration_STATUS) error { - - // Categories - if source.Categories != nil { - categoryList := make([]ResourceLogCategory, len(source.Categories)) - for categoryIndex, categoryItem := range source.Categories { - // Shadow the loop variable to avoid aliasing - categoryItem := categoryItem - var category ResourceLogCategory - err := category.Initialize_From_ResourceLogCategory_STATUS(&categoryItem) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ResourceLogCategory_STATUS() to populate field Categories") - } - categoryList[categoryIndex] = category - } - configuration.Categories = categoryList - } else { - configuration.Categories = nil - } - - // No error - return nil -} - // Resource log configuration of a Microsoft.SignalRService resource. type ResourceLogConfiguration_STATUS struct { // Categories: Gets or sets the list of category configurations. @@ -2992,27 +2801,6 @@ func (resourceSku *ResourceSku) AssignProperties_To_ResourceSku(destination *sto return nil } -// Initialize_From_ResourceSku_STATUS populates our ResourceSku from the provided source ResourceSku_STATUS -func (resourceSku *ResourceSku) Initialize_From_ResourceSku_STATUS(source *ResourceSku_STATUS) error { - - // Capacity - resourceSku.Capacity = genruntime.ClonePointerToInt(source.Capacity) - - // Name - resourceSku.Name = genruntime.ClonePointerToString(source.Name) - - // Tier - if source.Tier != nil { - tier := genruntime.ToEnum(string(*source.Tier), signalRSkuTier_Values) - resourceSku.Tier = &tier - } else { - resourceSku.Tier = nil - } - - // No error - return nil -} - // The billing information of the resource. type ResourceSku_STATUS struct { // Capacity: Optional, integer. The unit count of the resource. 1 by default. @@ -3261,31 +3049,6 @@ func (settings *ServerlessUpstreamSettings) AssignProperties_To_ServerlessUpstre return nil } -// Initialize_From_ServerlessUpstreamSettings_STATUS populates our ServerlessUpstreamSettings from the provided source ServerlessUpstreamSettings_STATUS -func (settings *ServerlessUpstreamSettings) Initialize_From_ServerlessUpstreamSettings_STATUS(source *ServerlessUpstreamSettings_STATUS) error { - - // Templates - if source.Templates != nil { - templateList := make([]UpstreamTemplate, len(source.Templates)) - for templateIndex, templateItem := range source.Templates { - // Shadow the loop variable to avoid aliasing - templateItem := templateItem - var template UpstreamTemplate - err := template.Initialize_From_UpstreamTemplate_STATUS(&templateItem) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_UpstreamTemplate_STATUS() to populate field Templates") - } - templateList[templateIndex] = template - } - settings.Templates = templateList - } else { - settings.Templates = nil - } - - // No error - return nil -} - // The settings for the Upstream when the service is in server-less mode. type ServerlessUpstreamSettings_STATUS struct { // Templates: Gets or sets the list of Upstream URL templates. Order matters, and the first matching template takes effects. @@ -3540,16 +3303,6 @@ func (settings *SignalRCorsSettings) AssignProperties_To_SignalRCorsSettings(des return nil } -// Initialize_From_SignalRCorsSettings_STATUS populates our SignalRCorsSettings from the provided source SignalRCorsSettings_STATUS -func (settings *SignalRCorsSettings) Initialize_From_SignalRCorsSettings_STATUS(source *SignalRCorsSettings_STATUS) error { - - // AllowedOrigins - settings.AllowedOrigins = genruntime.CloneSliceOfString(source.AllowedOrigins) - - // No error - return nil -} - // Cross-Origin Resource Sharing (CORS) settings. type SignalRCorsSettings_STATUS struct { // AllowedOrigins: Gets or sets the list of origins that should be allowed to make cross-origin calls (for example: @@ -3768,32 +3521,6 @@ func (feature *SignalRFeature) AssignProperties_To_SignalRFeature(destination *s return nil } -// Initialize_From_SignalRFeature_STATUS populates our SignalRFeature from the provided source SignalRFeature_STATUS -func (feature *SignalRFeature) Initialize_From_SignalRFeature_STATUS(source *SignalRFeature_STATUS) error { - - // Flag - if source.Flag != nil { - flag := genruntime.ToEnum(string(*source.Flag), featureFlags_Values) - feature.Flag = &flag - } else { - feature.Flag = nil - } - - // Properties - feature.Properties = genruntime.CloneMapOfStringToString(source.Properties) - - // Value - if source.Value != nil { - value := *source.Value - feature.Value = &value - } else { - feature.Value = nil - } - - // No error - return nil -} - // Feature of a resource, which controls the runtime behavior. type SignalRFeature_STATUS struct { // Flag: FeatureFlags is the supported features of Azure SignalR service. @@ -4103,51 +3830,6 @@ func (acLs *SignalRNetworkACLs) AssignProperties_To_SignalRNetworkACLs(destinati return nil } -// Initialize_From_SignalRNetworkACLs_STATUS populates our SignalRNetworkACLs from the provided source SignalRNetworkACLs_STATUS -func (acLs *SignalRNetworkACLs) Initialize_From_SignalRNetworkACLs_STATUS(source *SignalRNetworkACLs_STATUS) error { - - // DefaultAction - if source.DefaultAction != nil { - defaultAction := genruntime.ToEnum(string(*source.DefaultAction), aCLAction_Values) - acLs.DefaultAction = &defaultAction - } else { - acLs.DefaultAction = nil - } - - // PrivateEndpoints - if source.PrivateEndpoints != nil { - privateEndpointList := make([]PrivateEndpointACL, len(source.PrivateEndpoints)) - for privateEndpointIndex, privateEndpointItem := range source.PrivateEndpoints { - // Shadow the loop variable to avoid aliasing - privateEndpointItem := privateEndpointItem - var privateEndpoint PrivateEndpointACL - err := privateEndpoint.Initialize_From_PrivateEndpointACL_STATUS(&privateEndpointItem) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_PrivateEndpointACL_STATUS() to populate field PrivateEndpoints") - } - privateEndpointList[privateEndpointIndex] = privateEndpoint - } - acLs.PrivateEndpoints = privateEndpointList - } else { - acLs.PrivateEndpoints = nil - } - - // PublicNetwork - if source.PublicNetwork != nil { - var publicNetwork NetworkACL - err := publicNetwork.Initialize_From_NetworkACL_STATUS(source.PublicNetwork) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_NetworkACL_STATUS() to populate field PublicNetwork") - } - acLs.PublicNetwork = &publicNetwork - } else { - acLs.PublicNetwork = nil - } - - // No error - return nil -} - // Network ACLs for the resource type SignalRNetworkACLs_STATUS struct { // DefaultAction: Azure Networking ACL Action. @@ -4522,21 +4204,6 @@ func (settings *SignalRTlsSettings) AssignProperties_To_SignalRTlsSettings(desti return nil } -// Initialize_From_SignalRTlsSettings_STATUS populates our SignalRTlsSettings from the provided source SignalRTlsSettings_STATUS -func (settings *SignalRTlsSettings) Initialize_From_SignalRTlsSettings_STATUS(source *SignalRTlsSettings_STATUS) error { - - // ClientCertEnabled - if source.ClientCertEnabled != nil { - clientCertEnabled := *source.ClientCertEnabled - settings.ClientCertEnabled = &clientCertEnabled - } else { - settings.ClientCertEnabled = nil - } - - // No error - return nil -} - // TLS settings for the resource type SignalRTlsSettings_STATUS struct { // ClientCertEnabled: Request client certificate during TLS handshake if enabled @@ -5028,41 +4695,6 @@ func (networkACL *NetworkACL) AssignProperties_To_NetworkACL(destination *storag return nil } -// Initialize_From_NetworkACL_STATUS populates our NetworkACL from the provided source NetworkACL_STATUS -func (networkACL *NetworkACL) Initialize_From_NetworkACL_STATUS(source *NetworkACL_STATUS) error { - - // Allow - if source.Allow != nil { - allowList := make([]SignalRRequestType, len(source.Allow)) - for allowIndex, allowItem := range source.Allow { - // Shadow the loop variable to avoid aliasing - allowItem := allowItem - allow := genruntime.ToEnum(string(allowItem), signalRRequestType_Values) - allowList[allowIndex] = allow - } - networkACL.Allow = allowList - } else { - networkACL.Allow = nil - } - - // Deny - if source.Deny != nil { - denyList := make([]SignalRRequestType, len(source.Deny)) - for denyIndex, denyItem := range source.Deny { - // Shadow the loop variable to avoid aliasing - denyItem := denyItem - deny := genruntime.ToEnum(string(denyItem), signalRRequestType_Values) - denyList[denyIndex] = deny - } - networkACL.Deny = denyList - } else { - networkACL.Deny = nil - } - - // No error - return nil -} - // Network ACL type NetworkACL_STATUS struct { // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. @@ -5340,44 +4972,6 @@ func (endpointACL *PrivateEndpointACL) AssignProperties_To_PrivateEndpointACL(de return nil } -// Initialize_From_PrivateEndpointACL_STATUS populates our PrivateEndpointACL from the provided source PrivateEndpointACL_STATUS -func (endpointACL *PrivateEndpointACL) Initialize_From_PrivateEndpointACL_STATUS(source *PrivateEndpointACL_STATUS) error { - - // Allow - if source.Allow != nil { - allowList := make([]SignalRRequestType, len(source.Allow)) - for allowIndex, allowItem := range source.Allow { - // Shadow the loop variable to avoid aliasing - allowItem := allowItem - allow := genruntime.ToEnum(string(allowItem), signalRRequestType_Values) - allowList[allowIndex] = allow - } - endpointACL.Allow = allowList - } else { - endpointACL.Allow = nil - } - - // Deny - if source.Deny != nil { - denyList := make([]SignalRRequestType, len(source.Deny)) - for denyIndex, denyItem := range source.Deny { - // Shadow the loop variable to avoid aliasing - denyItem := denyItem - deny := genruntime.ToEnum(string(denyItem), signalRRequestType_Values) - denyList[denyIndex] = deny - } - endpointACL.Deny = denyList - } else { - endpointACL.Deny = nil - } - - // Name - endpointACL.Name = genruntime.ClonePointerToString(source.Name) - - // No error - return nil -} - // ACL for a private endpoint type PrivateEndpointACL_STATUS struct { // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. @@ -5608,19 +5202,6 @@ func (category *ResourceLogCategory) AssignProperties_To_ResourceLogCategory(des return nil } -// Initialize_From_ResourceLogCategory_STATUS populates our ResourceLogCategory from the provided source ResourceLogCategory_STATUS -func (category *ResourceLogCategory) Initialize_From_ResourceLogCategory_STATUS(source *ResourceLogCategory_STATUS) error { - - // Enabled - category.Enabled = genruntime.ClonePointerToString(source.Enabled) - - // Name - category.Name = genruntime.ClonePointerToString(source.Name) - - // No error - return nil -} - // Resource log category configuration of a Microsoft.SignalRService resource. type ResourceLogCategory_STATUS struct { // Enabled: Indicates whether or the resource log category is enabled. @@ -6081,37 +5662,6 @@ func (template *UpstreamTemplate) AssignProperties_To_UpstreamTemplate(destinati return nil } -// Initialize_From_UpstreamTemplate_STATUS populates our UpstreamTemplate from the provided source UpstreamTemplate_STATUS -func (template *UpstreamTemplate) Initialize_From_UpstreamTemplate_STATUS(source *UpstreamTemplate_STATUS) error { - - // Auth - if source.Auth != nil { - var auth UpstreamAuthSettings - err := auth.Initialize_From_UpstreamAuthSettings_STATUS(source.Auth) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_UpstreamAuthSettings_STATUS() to populate field Auth") - } - template.Auth = &auth - } else { - template.Auth = nil - } - - // CategoryPattern - template.CategoryPattern = genruntime.ClonePointerToString(source.CategoryPattern) - - // EventPattern - template.EventPattern = genruntime.ClonePointerToString(source.EventPattern) - - // HubPattern - template.HubPattern = genruntime.ClonePointerToString(source.HubPattern) - - // UrlTemplate - template.UrlTemplate = genruntime.ClonePointerToString(source.UrlTemplate) - - // No error - return nil -} - // Upstream template item settings. It defines the Upstream URL of the incoming requests. // The template defines the pattern // of the event, the hub or the category of the incoming request that matches current URL template. @@ -6554,33 +6104,6 @@ func (settings *UpstreamAuthSettings) AssignProperties_To_UpstreamAuthSettings(d return nil } -// Initialize_From_UpstreamAuthSettings_STATUS populates our UpstreamAuthSettings from the provided source UpstreamAuthSettings_STATUS -func (settings *UpstreamAuthSettings) Initialize_From_UpstreamAuthSettings_STATUS(source *UpstreamAuthSettings_STATUS) error { - - // ManagedIdentity - if source.ManagedIdentity != nil { - var managedIdentity ManagedIdentitySettings - err := managedIdentity.Initialize_From_ManagedIdentitySettings_STATUS(source.ManagedIdentity) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ManagedIdentitySettings_STATUS() to populate field ManagedIdentity") - } - settings.ManagedIdentity = &managedIdentity - } else { - settings.ManagedIdentity = nil - } - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), upstreamAuthType_Values) - settings.Type = &typeVar - } else { - settings.Type = nil - } - - // No error - return nil -} - // Upstream auth settings. If not set, no auth is used for upstream messages. type UpstreamAuthSettings_STATUS struct { // ManagedIdentity: Managed identity settings for upstream. @@ -6766,16 +6289,6 @@ func (settings *ManagedIdentitySettings) AssignProperties_To_ManagedIdentitySett return nil } -// Initialize_From_ManagedIdentitySettings_STATUS populates our ManagedIdentitySettings from the provided source ManagedIdentitySettings_STATUS -func (settings *ManagedIdentitySettings) Initialize_From_ManagedIdentitySettings_STATUS(source *ManagedIdentitySettings_STATUS) error { - - // Resource - settings.Resource = genruntime.ClonePointerToString(source.Resource) - - // No error - return nil -} - // Managed identity settings for upstream. type ManagedIdentitySettings_STATUS struct { // Resource: The Resource indicating the App ID URI of the target resource. diff --git a/v2/api/signalrservice/v1api20211001/signal_r_types_gen_test.go b/v2/api/signalrservice/v1api20211001/signal_r_types_gen_test.go index b348f9b1860..3dc6894d3ea 100644 --- a/v2/api/signalrservice/v1api20211001/signal_r_types_gen_test.go +++ b/v2/api/signalrservice/v1api20211001/signal_r_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20211001 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + v20211001s "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + v20240301s "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -35,7 +36,7 @@ func RunPropertyAssignmentTestForManagedIdentity(subject ManagedIdentity) string copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ManagedIdentity + var other v20211001s.ManagedIdentity err := copied.AssignProperties_To_ManagedIdentity(&other) if err != nil { return err.Error() @@ -151,7 +152,7 @@ func RunPropertyAssignmentTestForManagedIdentitySettings(subject ManagedIdentity copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ManagedIdentitySettings + var other v20211001s.ManagedIdentitySettings err := copied.AssignProperties_To_ManagedIdentitySettings(&other) if err != nil { return err.Error() @@ -254,7 +255,7 @@ func RunPropertyAssignmentTestForManagedIdentitySettings_STATUS(subject ManagedI copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ManagedIdentitySettings_STATUS + var other v20211001s.ManagedIdentitySettings_STATUS err := copied.AssignProperties_To_ManagedIdentitySettings_STATUS(&other) if err != nil { return err.Error() @@ -357,7 +358,7 @@ func RunPropertyAssignmentTestForManagedIdentity_STATUS(subject ManagedIdentity_ copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ManagedIdentity_STATUS + var other v20211001s.ManagedIdentity_STATUS err := copied.AssignProperties_To_ManagedIdentity_STATUS(&other) if err != nil { return err.Error() @@ -478,7 +479,7 @@ func RunPropertyAssignmentTestForNetworkACL(subject NetworkACL) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.NetworkACL + var other v20211001s.NetworkACL err := copied.AssignProperties_To_NetworkACL(&other) if err != nil { return err.Error() @@ -589,7 +590,7 @@ func RunPropertyAssignmentTestForNetworkACL_STATUS(subject NetworkACL_STATUS) st copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.NetworkACL_STATUS + var other v20211001s.NetworkACL_STATUS err := copied.AssignProperties_To_NetworkACL_STATUS(&other) if err != nil { return err.Error() @@ -700,7 +701,7 @@ func RunPropertyAssignmentTestForPrivateEndpointACL(subject PrivateEndpointACL) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.PrivateEndpointACL + var other v20211001s.PrivateEndpointACL err := copied.AssignProperties_To_PrivateEndpointACL(&other) if err != nil { return err.Error() @@ -812,7 +813,7 @@ func RunPropertyAssignmentTestForPrivateEndpointACL_STATUS(subject PrivateEndpoi copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.PrivateEndpointACL_STATUS + var other v20211001s.PrivateEndpointACL_STATUS err := copied.AssignProperties_To_PrivateEndpointACL_STATUS(&other) if err != nil { return err.Error() @@ -925,7 +926,7 @@ func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubRes copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + var other v20211001s.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&other) if err != nil { return err.Error() @@ -1028,7 +1029,7 @@ func RunPropertyAssignmentTestForResourceLogCategory(subject ResourceLogCategory copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceLogCategory + var other v20211001s.ResourceLogCategory err := copied.AssignProperties_To_ResourceLogCategory(&other) if err != nil { return err.Error() @@ -1132,7 +1133,7 @@ func RunPropertyAssignmentTestForResourceLogCategory_STATUS(subject ResourceLogC copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceLogCategory_STATUS + var other v20211001s.ResourceLogCategory_STATUS err := copied.AssignProperties_To_ResourceLogCategory_STATUS(&other) if err != nil { return err.Error() @@ -1236,7 +1237,7 @@ func RunPropertyAssignmentTestForResourceLogConfiguration(subject ResourceLogCon copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceLogConfiguration + var other v20211001s.ResourceLogConfiguration err := copied.AssignProperties_To_ResourceLogConfiguration(&other) if err != nil { return err.Error() @@ -1339,7 +1340,7 @@ func RunPropertyAssignmentTestForResourceLogConfiguration_STATUS(subject Resourc copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceLogConfiguration_STATUS + var other v20211001s.ResourceLogConfiguration_STATUS err := copied.AssignProperties_To_ResourceLogConfiguration_STATUS(&other) if err != nil { return err.Error() @@ -1442,7 +1443,7 @@ func RunPropertyAssignmentTestForResourceSku(subject ResourceSku) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceSku + var other v20211001s.ResourceSku err := copied.AssignProperties_To_ResourceSku(&other) if err != nil { return err.Error() @@ -1550,7 +1551,7 @@ func RunPropertyAssignmentTestForResourceSku_STATUS(subject ResourceSku_STATUS) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceSku_STATUS + var other v20211001s.ResourceSku_STATUS err := copied.AssignProperties_To_ResourceSku_STATUS(&other) if err != nil { return err.Error() @@ -1660,7 +1661,7 @@ func RunPropertyAssignmentTestForServerlessUpstreamSettings(subject ServerlessUp copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ServerlessUpstreamSettings + var other v20211001s.ServerlessUpstreamSettings err := copied.AssignProperties_To_ServerlessUpstreamSettings(&other) if err != nil { return err.Error() @@ -1763,7 +1764,7 @@ func RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS(subject Serve copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ServerlessUpstreamSettings_STATUS + var other v20211001s.ServerlessUpstreamSettings_STATUS err := copied.AssignProperties_To_ServerlessUpstreamSettings_STATUS(&other) if err != nil { return err.Error() @@ -1866,7 +1867,7 @@ func RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubRes copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + var other v20211001s.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded err := copied.AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&other) if err != nil { return err.Error() @@ -1970,7 +1971,7 @@ func RunResourceConversionTestForSignalR(subject SignalR) string { copied := subject.DeepCopy() // Convert to our hub version - var hub storage.SignalR + var hub v20240301s.SignalR err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -2012,7 +2013,7 @@ func RunPropertyAssignmentTestForSignalR(subject SignalR) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalR + var other v20211001s.SignalR err := copied.AssignProperties_To_SignalR(&other) if err != nil { return err.Error() @@ -2115,7 +2116,7 @@ func RunPropertyAssignmentTestForSignalRCorsSettings(subject SignalRCorsSettings copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRCorsSettings + var other v20211001s.SignalRCorsSettings err := copied.AssignProperties_To_SignalRCorsSettings(&other) if err != nil { return err.Error() @@ -2218,7 +2219,7 @@ func RunPropertyAssignmentTestForSignalRCorsSettings_STATUS(subject SignalRCorsS copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRCorsSettings_STATUS + var other v20211001s.SignalRCorsSettings_STATUS err := copied.AssignProperties_To_SignalRCorsSettings_STATUS(&other) if err != nil { return err.Error() @@ -2321,7 +2322,7 @@ func RunPropertyAssignmentTestForSignalRFeature(subject SignalRFeature) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRFeature + var other v20211001s.SignalRFeature err := copied.AssignProperties_To_SignalRFeature(&other) if err != nil { return err.Error() @@ -2431,7 +2432,7 @@ func RunPropertyAssignmentTestForSignalRFeature_STATUS(subject SignalRFeature_ST copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRFeature_STATUS + var other v20211001s.SignalRFeature_STATUS err := copied.AssignProperties_To_SignalRFeature_STATUS(&other) if err != nil { return err.Error() @@ -2542,7 +2543,7 @@ func RunPropertyAssignmentTestForSignalRNetworkACLs(subject SignalRNetworkACLs) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRNetworkACLs + var other v20211001s.SignalRNetworkACLs err := copied.AssignProperties_To_SignalRNetworkACLs(&other) if err != nil { return err.Error() @@ -2659,7 +2660,7 @@ func RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS(subject SignalRNetwor copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRNetworkACLs_STATUS + var other v20211001s.SignalRNetworkACLs_STATUS err := copied.AssignProperties_To_SignalRNetworkACLs_STATUS(&other) if err != nil { return err.Error() @@ -2777,7 +2778,7 @@ func RunPropertyAssignmentTestForSignalROperatorSecrets(subject SignalROperatorS copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalROperatorSecrets + var other v20211001s.SignalROperatorSecrets err := copied.AssignProperties_To_SignalROperatorSecrets(&other) if err != nil { return err.Error() @@ -2874,7 +2875,7 @@ func RunPropertyAssignmentTestForSignalROperatorSpec(subject SignalROperatorSpec copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalROperatorSpec + var other v20211001s.SignalROperatorSpec err := copied.AssignProperties_To_SignalROperatorSpec(&other) if err != nil { return err.Error() @@ -2977,7 +2978,7 @@ func RunPropertyAssignmentTestForSignalRTlsSettings(subject SignalRTlsSettings) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRTlsSettings + var other v20211001s.SignalRTlsSettings err := copied.AssignProperties_To_SignalRTlsSettings(&other) if err != nil { return err.Error() @@ -3079,7 +3080,7 @@ func RunPropertyAssignmentTestForSignalRTlsSettings_STATUS(subject SignalRTlsSet copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalRTlsSettings_STATUS + var other v20211001s.SignalRTlsSettings_STATUS err := copied.AssignProperties_To_SignalRTlsSettings_STATUS(&other) if err != nil { return err.Error() @@ -3182,7 +3183,7 @@ func RunPropertyAssignmentTestForSignalR_STATUS(subject SignalR_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalR_STATUS + var other v20211001s.SignalR_STATUS err := copied.AssignProperties_To_SignalR_STATUS(&other) if err != nil { return err.Error() @@ -3334,7 +3335,7 @@ func RunPropertyAssignmentTestForSignalR_Spec(subject SignalR_Spec) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SignalR_Spec + var other v20211001s.SignalR_Spec err := copied.AssignProperties_To_SignalR_Spec(&other) if err != nil { return err.Error() @@ -3466,7 +3467,7 @@ func RunPropertyAssignmentTestForSystemData_STATUS(subject SystemData_STATUS) st copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.SystemData_STATUS + var other v20211001s.SystemData_STATUS err := copied.AssignProperties_To_SystemData_STATUS(&other) if err != nil { return err.Error() @@ -3581,7 +3582,7 @@ func RunPropertyAssignmentTestForUpstreamAuthSettings(subject UpstreamAuthSettin copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UpstreamAuthSettings + var other v20211001s.UpstreamAuthSettings err := copied.AssignProperties_To_UpstreamAuthSettings(&other) if err != nil { return err.Error() @@ -3698,7 +3699,7 @@ func RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS(subject UpstreamAut copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UpstreamAuthSettings_STATUS + var other v20211001s.UpstreamAuthSettings_STATUS err := copied.AssignProperties_To_UpstreamAuthSettings_STATUS(&other) if err != nil { return err.Error() @@ -3815,7 +3816,7 @@ func RunPropertyAssignmentTestForUpstreamTemplate(subject UpstreamTemplate) stri copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UpstreamTemplate + var other v20211001s.UpstreamTemplate err := copied.AssignProperties_To_UpstreamTemplate(&other) if err != nil { return err.Error() @@ -3934,7 +3935,7 @@ func RunPropertyAssignmentTestForUpstreamTemplate_STATUS(subject UpstreamTemplat copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UpstreamTemplate_STATUS + var other v20211001s.UpstreamTemplate_STATUS err := copied.AssignProperties_To_UpstreamTemplate_STATUS(&other) if err != nil { return err.Error() @@ -4054,7 +4055,7 @@ func RunPropertyAssignmentTestForUserAssignedIdentityDetails(subject UserAssigne copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserAssignedIdentityDetails + var other v20211001s.UserAssignedIdentityDetails err := copied.AssignProperties_To_UserAssignedIdentityDetails(&other) if err != nil { return err.Error() @@ -4151,7 +4152,7 @@ func RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS(subject Use copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserAssignedIdentityProperty_STATUS + var other v20211001s.UserAssignedIdentityProperty_STATUS err := copied.AssignProperties_To_UserAssignedIdentityProperty_STATUS(&other) if err != nil { return err.Error() diff --git a/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen.go b/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen.go index bc8ba06e557..74fbfd00c34 100644 --- a/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen.go +++ b/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" @@ -12,14 +14,11 @@ import ( "github.com/rotisserie/eris" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" ) -// +kubebuilder:rbac:groups=signalrservice.azure.com,resources=signalrs,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=signalrservice.azure.com,resources={signalrs/status,signalrs/finalizers},verbs=get;update;patch - // +kubebuilder:object:root=true // +kubebuilder:subresource:status -// +kubebuilder:storageversion // +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" // +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" @@ -47,6 +46,28 @@ func (signalR *SignalR) SetConditions(conditions conditions.Conditions) { signalR.Status.Conditions = conditions } +var _ conversion.Convertible = &SignalR{} + +// ConvertFrom populates our SignalR from the provided hub SignalR +func (signalR *SignalR) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.SignalR) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/SignalR but received %T instead", hub) + } + + return signalR.AssignProperties_From_SignalR(source) +} + +// ConvertTo populates the provided hub SignalR from our SignalR +func (signalR *SignalR) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.SignalR) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/SignalR but received %T instead", hub) + } + + return signalR.AssignProperties_To_SignalR(destination) +} + var _ configmaps.Exporter = &SignalR{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -142,8 +163,75 @@ func (signalR *SignalR) SetStatus(status genruntime.ConvertibleStatus) error { return nil } -// Hub marks that this SignalR is the hub type for conversion -func (signalR *SignalR) Hub() {} +// AssignProperties_From_SignalR populates our SignalR from the provided source SignalR +func (signalR *SignalR) AssignProperties_From_SignalR(source *storage.SignalR) error { + + // ObjectMeta + signalR.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec SignalR_Spec + err := spec.AssignProperties_From_SignalR_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalR_Spec() to populate field Spec") + } + signalR.Spec = spec + + // Status + var status SignalR_STATUS + err = status.AssignProperties_From_SignalR_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalR_STATUS() to populate field Status") + } + signalR.Status = status + + // Invoke the augmentConversionForSignalR interface (if implemented) to customize the conversion + var signalRAsAny any = signalR + if augmentedSignalR, ok := signalRAsAny.(augmentConversionForSignalR); ok { + err := augmentedSignalR.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalR populates the provided destination SignalR from our SignalR +func (signalR *SignalR) AssignProperties_To_SignalR(destination *storage.SignalR) error { + + // ObjectMeta + destination.ObjectMeta = *signalR.ObjectMeta.DeepCopy() + + // Spec + var spec storage.SignalR_Spec + err := signalR.Spec.AssignProperties_To_SignalR_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalR_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.SignalR_STATUS + err = signalR.Status.AssignProperties_To_SignalR_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalR_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForSignalR interface (if implemented) to customize the conversion + var signalRAsAny any = signalR + if augmentedSignalR, ok := signalRAsAny.(augmentConversionForSignalR); ok { + err := augmentedSignalR.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} // OriginalGVK returns a GroupValueKind for the original API version used to create the resource func (signalR *SignalR) OriginalGVK() *schema.GroupVersionKind { @@ -171,6 +259,11 @@ type APIVersion string const APIVersion_Value = APIVersion("2021-10-01") +type augmentConversionForSignalR interface { + AssignPropertiesFrom(src *storage.SignalR) error + AssignPropertiesTo(dst *storage.SignalR) error +} + // Storage version of v1api20211001.SignalR_Spec type SignalR_Spec struct { // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it @@ -205,20 +298,492 @@ var _ genruntime.ConvertibleSpec = &SignalR_Spec{} // ConvertSpecFrom populates our SignalR_Spec from the provided source func (signalR *SignalR_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == signalR { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.SignalR_Spec) + if ok { + // Populate our instance from source + return signalR.AssignProperties_From_SignalR_Spec(src) + } + + // Convert to an intermediate form + src = &storage.SignalR_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(signalR) + // Update our instance from src + err = signalR.AssignProperties_From_SignalR_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our SignalR_Spec func (signalR *SignalR_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == signalR { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.SignalR_Spec) + if ok { + // Populate destination from our instance + return signalR.AssignProperties_To_SignalR_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.SignalR_Spec{} + err := signalR.AssignProperties_To_SignalR_Spec(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecTo()") + } + + // Update dst from our instance + err = dst.ConvertSpecTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecTo()") + } + + return nil +} + +// AssignProperties_From_SignalR_Spec populates our SignalR_Spec from the provided source SignalR_Spec +func (signalR *SignalR_Spec) AssignProperties_From_SignalR_Spec(source *storage.SignalR_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AzureName + signalR.AzureName = source.AzureName + + // Cors + if source.Cors != nil { + var cor SignalRCorsSettings + err := cor.AssignProperties_From_SignalRCorsSettings(source.Cors) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRCorsSettings() to populate field Cors") + } + signalR.Cors = &cor + } else { + signalR.Cors = nil + } + + // DisableAadAuth + if source.DisableAadAuth != nil { + disableAadAuth := *source.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } else { + signalR.DisableAadAuth = nil + } + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } else { + signalR.DisableLocalAuth = nil + } + + // Features + if source.Features != nil { + featureList := make([]SignalRFeature, len(source.Features)) + for featureIndex, featureItem := range source.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature SignalRFeature + err := feature.AssignProperties_From_SignalRFeature(&featureItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRFeature() to populate field Features") + } + featureList[featureIndex] = feature + } + signalR.Features = featureList + } else { + signalR.Features = nil + } + + // Identity + if source.Identity != nil { + var identity ManagedIdentity + err := identity.AssignProperties_From_ManagedIdentity(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentity() to populate field Identity") + } + signalR.Identity = &identity + } else { + signalR.Identity = nil + } + + // Kind + signalR.Kind = genruntime.ClonePointerToString(source.Kind) + + // LiveTraceConfiguration + if source.LiveTraceConfiguration != nil { + propertyBag.Add("LiveTraceConfiguration", *source.LiveTraceConfiguration) + } else { + propertyBag.Remove("LiveTraceConfiguration") + } + + // Location + signalR.Location = genruntime.ClonePointerToString(source.Location) + + // NetworkACLs + if source.NetworkACLs != nil { + var networkACL SignalRNetworkACLs + err := networkACL.AssignProperties_From_SignalRNetworkACLs(source.NetworkACLs) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRNetworkACLs() to populate field NetworkACLs") + } + signalR.NetworkACLs = &networkACL + } else { + signalR.NetworkACLs = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec SignalROperatorSpec + err := operatorSpec.AssignProperties_From_SignalROperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalROperatorSpec() to populate field OperatorSpec") + } + signalR.OperatorSpec = &operatorSpec + } else { + signalR.OperatorSpec = nil + } + + // OriginalVersion + signalR.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + signalR.Owner = &owner + } else { + signalR.Owner = nil + } + + // PublicNetworkAccess + signalR.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // RegionEndpointEnabled + if source.RegionEndpointEnabled != nil { + propertyBag.Add("RegionEndpointEnabled", *source.RegionEndpointEnabled) + } else { + propertyBag.Remove("RegionEndpointEnabled") + } + + // ResourceLogConfiguration + if source.ResourceLogConfiguration != nil { + var resourceLogConfiguration ResourceLogConfiguration + err := resourceLogConfiguration.AssignProperties_From_ResourceLogConfiguration(source.ResourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogConfiguration() to populate field ResourceLogConfiguration") + } + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } else { + signalR.ResourceLogConfiguration = nil + } + + // ResourceStopped + if source.ResourceStopped != nil { + propertyBag.Add("ResourceStopped", *source.ResourceStopped) + } else { + propertyBag.Remove("ResourceStopped") + } + + // Serverless + if source.Serverless != nil { + propertyBag.Add("Serverless", *source.Serverless) + } else { + propertyBag.Remove("Serverless") + } + + // Sku + if source.Sku != nil { + var sku ResourceSku + err := sku.AssignProperties_From_ResourceSku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceSku() to populate field Sku") + } + signalR.Sku = &sku + } else { + signalR.Sku = nil + } + + // Tags + signalR.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Tls + if source.Tls != nil { + var tl SignalRTlsSettings + err := tl.AssignProperties_From_SignalRTlsSettings(source.Tls) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRTlsSettings() to populate field Tls") + } + signalR.Tls = &tl + } else { + signalR.Tls = nil + } + + // Upstream + if source.Upstream != nil { + var upstream ServerlessUpstreamSettings + err := upstream.AssignProperties_From_ServerlessUpstreamSettings(source.Upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ServerlessUpstreamSettings() to populate field Upstream") + } + signalR.Upstream = &upstream + } else { + signalR.Upstream = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + signalR.PropertyBag = propertyBag + } else { + signalR.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalR_Spec interface (if implemented) to customize the conversion + var signalRAsAny any = signalR + if augmentedSignalR, ok := signalRAsAny.(augmentConversionForSignalR_Spec); ok { + err := augmentedSignalR.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalR_Spec populates the provided destination SignalR_Spec from our SignalR_Spec +func (signalR *SignalR_Spec) AssignProperties_To_SignalR_Spec(destination *storage.SignalR_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(signalR.PropertyBag) + + // AzureName + destination.AzureName = signalR.AzureName + + // Cors + if signalR.Cors != nil { + var cor storage.SignalRCorsSettings + err := signalR.Cors.AssignProperties_To_SignalRCorsSettings(&cor) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRCorsSettings() to populate field Cors") + } + destination.Cors = &cor + } else { + destination.Cors = nil + } + + // DisableAadAuth + if signalR.DisableAadAuth != nil { + disableAadAuth := *signalR.DisableAadAuth + destination.DisableAadAuth = &disableAadAuth + } else { + destination.DisableAadAuth = nil + } + + // DisableLocalAuth + if signalR.DisableLocalAuth != nil { + disableLocalAuth := *signalR.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // Features + if signalR.Features != nil { + featureList := make([]storage.SignalRFeature, len(signalR.Features)) + for featureIndex, featureItem := range signalR.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature storage.SignalRFeature + err := featureItem.AssignProperties_To_SignalRFeature(&feature) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRFeature() to populate field Features") + } + featureList[featureIndex] = feature + } + destination.Features = featureList + } else { + destination.Features = nil + } + + // Identity + if signalR.Identity != nil { + var identity storage.ManagedIdentity + err := signalR.Identity.AssignProperties_To_ManagedIdentity(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentity() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Kind + destination.Kind = genruntime.ClonePointerToString(signalR.Kind) + + // LiveTraceConfiguration + if propertyBag.Contains("LiveTraceConfiguration") { + var liveTraceConfiguration storage.LiveTraceConfiguration + err := propertyBag.Pull("LiveTraceConfiguration", &liveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "pulling 'LiveTraceConfiguration' from propertyBag") + } + + destination.LiveTraceConfiguration = &liveTraceConfiguration + } else { + destination.LiveTraceConfiguration = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(signalR.Location) + + // NetworkACLs + if signalR.NetworkACLs != nil { + var networkACL storage.SignalRNetworkACLs + err := signalR.NetworkACLs.AssignProperties_To_SignalRNetworkACLs(&networkACL) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRNetworkACLs() to populate field NetworkACLs") + } + destination.NetworkACLs = &networkACL + } else { + destination.NetworkACLs = nil + } + + // OperatorSpec + if signalR.OperatorSpec != nil { + var operatorSpec storage.SignalROperatorSpec + err := signalR.OperatorSpec.AssignProperties_To_SignalROperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalROperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = signalR.OriginalVersion + + // Owner + if signalR.Owner != nil { + owner := signalR.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(signalR.PublicNetworkAccess) + + // RegionEndpointEnabled + if propertyBag.Contains("RegionEndpointEnabled") { + var regionEndpointEnabled string + err := propertyBag.Pull("RegionEndpointEnabled", ®ionEndpointEnabled) + if err != nil { + return eris.Wrap(err, "pulling 'RegionEndpointEnabled' from propertyBag") + } + + destination.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + destination.RegionEndpointEnabled = nil + } + + // ResourceLogConfiguration + if signalR.ResourceLogConfiguration != nil { + var resourceLogConfiguration storage.ResourceLogConfiguration + err := signalR.ResourceLogConfiguration.AssignProperties_To_ResourceLogConfiguration(&resourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogConfiguration() to populate field ResourceLogConfiguration") + } + destination.ResourceLogConfiguration = &resourceLogConfiguration + } else { + destination.ResourceLogConfiguration = nil + } + + // ResourceStopped + if propertyBag.Contains("ResourceStopped") { + var resourceStopped string + err := propertyBag.Pull("ResourceStopped", &resourceStopped) + if err != nil { + return eris.Wrap(err, "pulling 'ResourceStopped' from propertyBag") + } + + destination.ResourceStopped = &resourceStopped + } else { + destination.ResourceStopped = nil + } + + // Serverless + if propertyBag.Contains("Serverless") { + var serverless storage.ServerlessSettings + err := propertyBag.Pull("Serverless", &serverless) + if err != nil { + return eris.Wrap(err, "pulling 'Serverless' from propertyBag") + } + + destination.Serverless = &serverless + } else { + destination.Serverless = nil + } + + // Sku + if signalR.Sku != nil { + var sku storage.ResourceSku + err := signalR.Sku.AssignProperties_To_ResourceSku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceSku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(signalR.Tags) + + // Tls + if signalR.Tls != nil { + var tl storage.SignalRTlsSettings + err := signalR.Tls.AssignProperties_To_SignalRTlsSettings(&tl) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRTlsSettings() to populate field Tls") + } + destination.Tls = &tl + } else { + destination.Tls = nil + } + + // Upstream + if signalR.Upstream != nil { + var upstream storage.ServerlessUpstreamSettings + err := signalR.Upstream.AssignProperties_To_ServerlessUpstreamSettings(&upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ServerlessUpstreamSettings() to populate field Upstream") + } + destination.Upstream = &upstream + } else { + destination.Upstream = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil } - return destination.ConvertSpecFrom(signalR) + // Invoke the augmentConversionForSignalR_Spec interface (if implemented) to customize the conversion + var signalRAsAny any = signalR + if augmentedSignalR, ok := signalRAsAny.(augmentConversionForSignalR_Spec); ok { + err := augmentedSignalR.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20211001.SignalR_STATUS @@ -258,127 +823,1699 @@ var _ genruntime.ConvertibleStatus = &SignalR_STATUS{} // ConvertStatusFrom populates our SignalR_STATUS from the provided source func (signalR *SignalR_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == signalR { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.SignalR_STATUS) + if ok { + // Populate our instance from source + return signalR.AssignProperties_From_SignalR_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.SignalR_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = signalR.AssignProperties_From_SignalR_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") } - return source.ConvertStatusTo(signalR) + return nil } // ConvertStatusTo populates the provided destination from our SignalR_STATUS func (signalR *SignalR_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == signalR { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.SignalR_STATUS) + if ok { + // Populate destination from our instance + return signalR.AssignProperties_To_SignalR_STATUS(dst) } - return destination.ConvertStatusFrom(signalR) -} + // Convert to an intermediate form + dst = &storage.SignalR_STATUS{} + err := signalR.AssignProperties_To_SignalR_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } -// Storage version of v1api20211001.ManagedIdentity -// A class represent managed identities used for request and response -type ManagedIdentity struct { - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Type *string `json:"type,omitempty"` - UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` -} + // Update dst from our instance + err = dst.ConvertStatusTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusTo()") + } -// Storage version of v1api20211001.ManagedIdentity_STATUS -// A class represent managed identities used for request and response -type ManagedIdentity_STATUS struct { - PrincipalId *string `json:"principalId,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - TenantId *string `json:"tenantId,omitempty"` - Type *string `json:"type,omitempty"` - UserAssignedIdentities map[string]UserAssignedIdentityProperty_STATUS `json:"userAssignedIdentities,omitempty"` + return nil } -// Storage version of v1api20211001.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded -// A private endpoint connection to an azure resource -type PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded struct { - Id *string `json:"id,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} +// AssignProperties_From_SignalR_STATUS populates our SignalR_STATUS from the provided source SignalR_STATUS +func (signalR *SignalR_STATUS) AssignProperties_From_SignalR_STATUS(source *storage.SignalR_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) -// Storage version of v1api20211001.ResourceLogConfiguration -// Resource log configuration of a Microsoft.SignalRService resource. -type ResourceLogConfiguration struct { - Categories []ResourceLogCategory `json:"categories,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // Conditions + signalR.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) -// Storage version of v1api20211001.ResourceLogConfiguration_STATUS -// Resource log configuration of a Microsoft.SignalRService resource. -type ResourceLogConfiguration_STATUS struct { - Categories []ResourceLogCategory_STATUS `json:"categories,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // Cors + if source.Cors != nil { + var cor SignalRCorsSettings_STATUS + err := cor.AssignProperties_From_SignalRCorsSettings_STATUS(source.Cors) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRCorsSettings_STATUS() to populate field Cors") + } + signalR.Cors = &cor + } else { + signalR.Cors = nil + } -// Storage version of v1api20211001.ResourceSku -// The billing information of the resource. -type ResourceSku struct { - Capacity *int `json:"capacity,omitempty"` - Name *string `json:"name,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Tier *string `json:"tier,omitempty"` -} + // DisableAadAuth + if source.DisableAadAuth != nil { + disableAadAuth := *source.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } else { + signalR.DisableAadAuth = nil + } -// Storage version of v1api20211001.ResourceSku_STATUS -// The billing information of the resource. -type ResourceSku_STATUS struct { - Capacity *int `json:"capacity,omitempty"` - Family *string `json:"family,omitempty"` - Name *string `json:"name,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Size *string `json:"size,omitempty"` - Tier *string `json:"tier,omitempty"` -} + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } else { + signalR.DisableLocalAuth = nil + } -// Storage version of v1api20211001.ServerlessUpstreamSettings -// The settings for the Upstream when the service is in server-less mode. -type ServerlessUpstreamSettings struct { - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Templates []UpstreamTemplate `json:"templates,omitempty"` -} + // ExternalIP + signalR.ExternalIP = genruntime.ClonePointerToString(source.ExternalIP) -// Storage version of v1api20211001.ServerlessUpstreamSettings_STATUS -// The settings for the Upstream when the service is in server-less mode. -type ServerlessUpstreamSettings_STATUS struct { - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Templates []UpstreamTemplate_STATUS `json:"templates,omitempty"` -} + // Features + if source.Features != nil { + featureList := make([]SignalRFeature_STATUS, len(source.Features)) + for featureIndex, featureItem := range source.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature SignalRFeature_STATUS + err := feature.AssignProperties_From_SignalRFeature_STATUS(&featureItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRFeature_STATUS() to populate field Features") + } + featureList[featureIndex] = feature + } + signalR.Features = featureList + } else { + signalR.Features = nil + } -// Storage version of v1api20211001.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded -// Describes a Shared Private Link Resource -type SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded struct { - Id *string `json:"id,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // HostName + signalR.HostName = genruntime.ClonePointerToString(source.HostName) -// Storage version of v1api20211001.SignalRCorsSettings -// Cross-Origin Resource Sharing (CORS) settings. -type SignalRCorsSettings struct { - AllowedOrigins []string `json:"allowedOrigins,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // HostNamePrefix + signalR.HostNamePrefix = genruntime.ClonePointerToString(source.HostNamePrefix) -// Storage version of v1api20211001.SignalRCorsSettings_STATUS -// Cross-Origin Resource Sharing (CORS) settings. -type SignalRCorsSettings_STATUS struct { - AllowedOrigins []string `json:"allowedOrigins,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // Id + signalR.Id = genruntime.ClonePointerToString(source.Id) -// Storage version of v1api20211001.SignalRFeature -// Feature of a resource, which controls the runtime behavior. -type SignalRFeature struct { - Flag *string `json:"flag,omitempty"` - Properties map[string]string `json:"properties,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Value *string `json:"value,omitempty"` -} + // Identity + if source.Identity != nil { + var identity ManagedIdentity_STATUS + err := identity.AssignProperties_From_ManagedIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentity_STATUS() to populate field Identity") + } + signalR.Identity = &identity + } else { + signalR.Identity = nil + } -// Storage version of v1api20211001.SignalRFeature_STATUS -// Feature of a resource, which controls the runtime behavior. + // Kind + signalR.Kind = genruntime.ClonePointerToString(source.Kind) + + // LiveTraceConfiguration + if source.LiveTraceConfiguration != nil { + propertyBag.Add("LiveTraceConfiguration", *source.LiveTraceConfiguration) + } else { + propertyBag.Remove("LiveTraceConfiguration") + } + + // Location + signalR.Location = genruntime.ClonePointerToString(source.Location) + + // Name + signalR.Name = genruntime.ClonePointerToString(source.Name) + + // NetworkACLs + if source.NetworkACLs != nil { + var networkACL SignalRNetworkACLs_STATUS + err := networkACL.AssignProperties_From_SignalRNetworkACLs_STATUS(source.NetworkACLs) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRNetworkACLs_STATUS() to populate field NetworkACLs") + } + signalR.NetworkACLs = &networkACL + } else { + signalR.NetworkACLs = nil + } + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + signalR.PrivateEndpointConnections = privateEndpointConnectionList + } else { + signalR.PrivateEndpointConnections = nil + } + + // ProvisioningState + signalR.ProvisioningState = genruntime.ClonePointerToString(source.ProvisioningState) + + // PublicNetworkAccess + signalR.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // PublicPort + signalR.PublicPort = genruntime.ClonePointerToInt(source.PublicPort) + + // RegionEndpointEnabled + if source.RegionEndpointEnabled != nil { + propertyBag.Add("RegionEndpointEnabled", *source.RegionEndpointEnabled) + } else { + propertyBag.Remove("RegionEndpointEnabled") + } + + // ResourceLogConfiguration + if source.ResourceLogConfiguration != nil { + var resourceLogConfiguration ResourceLogConfiguration_STATUS + err := resourceLogConfiguration.AssignProperties_From_ResourceLogConfiguration_STATUS(source.ResourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogConfiguration_STATUS() to populate field ResourceLogConfiguration") + } + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } else { + signalR.ResourceLogConfiguration = nil + } + + // ResourceStopped + if source.ResourceStopped != nil { + propertyBag.Add("ResourceStopped", *source.ResourceStopped) + } else { + propertyBag.Remove("ResourceStopped") + } + + // ServerPort + signalR.ServerPort = genruntime.ClonePointerToInt(source.ServerPort) + + // Serverless + if source.Serverless != nil { + propertyBag.Add("Serverless", *source.Serverless) + } else { + propertyBag.Remove("Serverless") + } + + // SharedPrivateLinkResources + if source.SharedPrivateLinkResources != nil { + sharedPrivateLinkResourceList := make([]SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, len(source.SharedPrivateLinkResources)) + for sharedPrivateLinkResourceIndex, sharedPrivateLinkResourceItem := range source.SharedPrivateLinkResources { + // Shadow the loop variable to avoid aliasing + sharedPrivateLinkResourceItem := sharedPrivateLinkResourceItem + var sharedPrivateLinkResource SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := sharedPrivateLinkResource.AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&sharedPrivateLinkResourceItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded() to populate field SharedPrivateLinkResources") + } + sharedPrivateLinkResourceList[sharedPrivateLinkResourceIndex] = sharedPrivateLinkResource + } + signalR.SharedPrivateLinkResources = sharedPrivateLinkResourceList + } else { + signalR.SharedPrivateLinkResources = nil + } + + // Sku + if source.Sku != nil { + var sku ResourceSku_STATUS + err := sku.AssignProperties_From_ResourceSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceSku_STATUS() to populate field Sku") + } + signalR.Sku = &sku + } else { + signalR.Sku = nil + } + + // SystemData + if source.SystemData != nil { + var systemDatum SystemData_STATUS + err := systemDatum.AssignProperties_From_SystemData_STATUS(source.SystemData) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SystemData_STATUS() to populate field SystemData") + } + signalR.SystemData = &systemDatum + } else { + signalR.SystemData = nil + } + + // Tags + signalR.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Tls + if source.Tls != nil { + var tl SignalRTlsSettings_STATUS + err := tl.AssignProperties_From_SignalRTlsSettings_STATUS(source.Tls) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRTlsSettings_STATUS() to populate field Tls") + } + signalR.Tls = &tl + } else { + signalR.Tls = nil + } + + // Type + signalR.Type = genruntime.ClonePointerToString(source.Type) + + // Upstream + if source.Upstream != nil { + var upstream ServerlessUpstreamSettings_STATUS + err := upstream.AssignProperties_From_ServerlessUpstreamSettings_STATUS(source.Upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ServerlessUpstreamSettings_STATUS() to populate field Upstream") + } + signalR.Upstream = &upstream + } else { + signalR.Upstream = nil + } + + // Version + signalR.Version = genruntime.ClonePointerToString(source.Version) + + // Update the property bag + if len(propertyBag) > 0 { + signalR.PropertyBag = propertyBag + } else { + signalR.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalR_STATUS interface (if implemented) to customize the conversion + var signalRAsAny any = signalR + if augmentedSignalR, ok := signalRAsAny.(augmentConversionForSignalR_STATUS); ok { + err := augmentedSignalR.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalR_STATUS populates the provided destination SignalR_STATUS from our SignalR_STATUS +func (signalR *SignalR_STATUS) AssignProperties_To_SignalR_STATUS(destination *storage.SignalR_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(signalR.PropertyBag) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(signalR.Conditions) + + // Cors + if signalR.Cors != nil { + var cor storage.SignalRCorsSettings_STATUS + err := signalR.Cors.AssignProperties_To_SignalRCorsSettings_STATUS(&cor) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRCorsSettings_STATUS() to populate field Cors") + } + destination.Cors = &cor + } else { + destination.Cors = nil + } + + // DisableAadAuth + if signalR.DisableAadAuth != nil { + disableAadAuth := *signalR.DisableAadAuth + destination.DisableAadAuth = &disableAadAuth + } else { + destination.DisableAadAuth = nil + } + + // DisableLocalAuth + if signalR.DisableLocalAuth != nil { + disableLocalAuth := *signalR.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // ExternalIP + destination.ExternalIP = genruntime.ClonePointerToString(signalR.ExternalIP) + + // Features + if signalR.Features != nil { + featureList := make([]storage.SignalRFeature_STATUS, len(signalR.Features)) + for featureIndex, featureItem := range signalR.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature storage.SignalRFeature_STATUS + err := featureItem.AssignProperties_To_SignalRFeature_STATUS(&feature) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRFeature_STATUS() to populate field Features") + } + featureList[featureIndex] = feature + } + destination.Features = featureList + } else { + destination.Features = nil + } + + // HostName + destination.HostName = genruntime.ClonePointerToString(signalR.HostName) + + // HostNamePrefix + destination.HostNamePrefix = genruntime.ClonePointerToString(signalR.HostNamePrefix) + + // Id + destination.Id = genruntime.ClonePointerToString(signalR.Id) + + // Identity + if signalR.Identity != nil { + var identity storage.ManagedIdentity_STATUS + err := signalR.Identity.AssignProperties_To_ManagedIdentity_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentity_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Kind + destination.Kind = genruntime.ClonePointerToString(signalR.Kind) + + // LiveTraceConfiguration + if propertyBag.Contains("LiveTraceConfiguration") { + var liveTraceConfiguration storage.LiveTraceConfiguration_STATUS + err := propertyBag.Pull("LiveTraceConfiguration", &liveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "pulling 'LiveTraceConfiguration' from propertyBag") + } + + destination.LiveTraceConfiguration = &liveTraceConfiguration + } else { + destination.LiveTraceConfiguration = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(signalR.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(signalR.Name) + + // NetworkACLs + if signalR.NetworkACLs != nil { + var networkACL storage.SignalRNetworkACLs_STATUS + err := signalR.NetworkACLs.AssignProperties_To_SignalRNetworkACLs_STATUS(&networkACL) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRNetworkACLs_STATUS() to populate field NetworkACLs") + } + destination.NetworkACLs = &networkACL + } else { + destination.NetworkACLs = nil + } + + // PrivateEndpointConnections + if signalR.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, len(signalR.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range signalR.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ProvisioningState + destination.ProvisioningState = genruntime.ClonePointerToString(signalR.ProvisioningState) + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(signalR.PublicNetworkAccess) + + // PublicPort + destination.PublicPort = genruntime.ClonePointerToInt(signalR.PublicPort) + + // RegionEndpointEnabled + if propertyBag.Contains("RegionEndpointEnabled") { + var regionEndpointEnabled string + err := propertyBag.Pull("RegionEndpointEnabled", ®ionEndpointEnabled) + if err != nil { + return eris.Wrap(err, "pulling 'RegionEndpointEnabled' from propertyBag") + } + + destination.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + destination.RegionEndpointEnabled = nil + } + + // ResourceLogConfiguration + if signalR.ResourceLogConfiguration != nil { + var resourceLogConfiguration storage.ResourceLogConfiguration_STATUS + err := signalR.ResourceLogConfiguration.AssignProperties_To_ResourceLogConfiguration_STATUS(&resourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogConfiguration_STATUS() to populate field ResourceLogConfiguration") + } + destination.ResourceLogConfiguration = &resourceLogConfiguration + } else { + destination.ResourceLogConfiguration = nil + } + + // ResourceStopped + if propertyBag.Contains("ResourceStopped") { + var resourceStopped string + err := propertyBag.Pull("ResourceStopped", &resourceStopped) + if err != nil { + return eris.Wrap(err, "pulling 'ResourceStopped' from propertyBag") + } + + destination.ResourceStopped = &resourceStopped + } else { + destination.ResourceStopped = nil + } + + // ServerPort + destination.ServerPort = genruntime.ClonePointerToInt(signalR.ServerPort) + + // Serverless + if propertyBag.Contains("Serverless") { + var serverless storage.ServerlessSettings_STATUS + err := propertyBag.Pull("Serverless", &serverless) + if err != nil { + return eris.Wrap(err, "pulling 'Serverless' from propertyBag") + } + + destination.Serverless = &serverless + } else { + destination.Serverless = nil + } + + // SharedPrivateLinkResources + if signalR.SharedPrivateLinkResources != nil { + sharedPrivateLinkResourceList := make([]storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, len(signalR.SharedPrivateLinkResources)) + for sharedPrivateLinkResourceIndex, sharedPrivateLinkResourceItem := range signalR.SharedPrivateLinkResources { + // Shadow the loop variable to avoid aliasing + sharedPrivateLinkResourceItem := sharedPrivateLinkResourceItem + var sharedPrivateLinkResource storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := sharedPrivateLinkResourceItem.AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&sharedPrivateLinkResource) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded() to populate field SharedPrivateLinkResources") + } + sharedPrivateLinkResourceList[sharedPrivateLinkResourceIndex] = sharedPrivateLinkResource + } + destination.SharedPrivateLinkResources = sharedPrivateLinkResourceList + } else { + destination.SharedPrivateLinkResources = nil + } + + // Sku + if signalR.Sku != nil { + var sku storage.ResourceSku_STATUS + err := signalR.Sku.AssignProperties_To_ResourceSku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceSku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SystemData + if signalR.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := signalR.SystemData.AssignProperties_To_SystemData_STATUS(&systemDatum) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SystemData_STATUS() to populate field SystemData") + } + destination.SystemData = &systemDatum + } else { + destination.SystemData = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(signalR.Tags) + + // Tls + if signalR.Tls != nil { + var tl storage.SignalRTlsSettings_STATUS + err := signalR.Tls.AssignProperties_To_SignalRTlsSettings_STATUS(&tl) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRTlsSettings_STATUS() to populate field Tls") + } + destination.Tls = &tl + } else { + destination.Tls = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(signalR.Type) + + // Upstream + if signalR.Upstream != nil { + var upstream storage.ServerlessUpstreamSettings_STATUS + err := signalR.Upstream.AssignProperties_To_ServerlessUpstreamSettings_STATUS(&upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ServerlessUpstreamSettings_STATUS() to populate field Upstream") + } + destination.Upstream = &upstream + } else { + destination.Upstream = nil + } + + // Version + destination.Version = genruntime.ClonePointerToString(signalR.Version) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalR_STATUS interface (if implemented) to customize the conversion + var signalRAsAny any = signalR + if augmentedSignalR, ok := signalRAsAny.(augmentConversionForSignalR_STATUS); ok { + err := augmentedSignalR.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForSignalR_Spec interface { + AssignPropertiesFrom(src *storage.SignalR_Spec) error + AssignPropertiesTo(dst *storage.SignalR_Spec) error +} + +type augmentConversionForSignalR_STATUS interface { + AssignPropertiesFrom(src *storage.SignalR_STATUS) error + AssignPropertiesTo(dst *storage.SignalR_STATUS) error +} + +// Storage version of v1api20211001.ManagedIdentity +// A class represent managed identities used for request and response +type ManagedIdentity struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// AssignProperties_From_ManagedIdentity populates our ManagedIdentity from the provided source ManagedIdentity +func (identity *ManagedIdentity) AssignProperties_From_ManagedIdentity(source *storage.ManagedIdentity) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Type + identity.Type = genruntime.ClonePointerToString(source.Type) + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]UserAssignedIdentityDetails, len(source.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity UserAssignedIdentityDetails + err := userAssignedIdentity.AssignProperties_From_UserAssignedIdentityDetails(&userAssignedIdentityItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + identity.UserAssignedIdentities = userAssignedIdentityList + } else { + identity.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + identity.PropertyBag = propertyBag + } else { + identity.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentity interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForManagedIdentity); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentity populates the provided destination ManagedIdentity from our ManagedIdentity +func (identity *ManagedIdentity) AssignProperties_To_ManagedIdentity(destination *storage.ManagedIdentity) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(identity.PropertyBag) + + // Type + destination.Type = genruntime.ClonePointerToString(identity.Type) + + // UserAssignedIdentities + if identity.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]storage.UserAssignedIdentityDetails, len(identity.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range identity.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity storage.UserAssignedIdentityDetails + err := userAssignedIdentityItem.AssignProperties_To_UserAssignedIdentityDetails(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityList + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentity interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForManagedIdentity); ok { + err := augmentedIdentity.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ManagedIdentity_STATUS +// A class represent managed identities used for request and response +type ManagedIdentity_STATUS struct { + PrincipalId *string `json:"principalId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + TenantId *string `json:"tenantId,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities map[string]UserAssignedIdentityProperty_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// AssignProperties_From_ManagedIdentity_STATUS populates our ManagedIdentity_STATUS from the provided source ManagedIdentity_STATUS +func (identity *ManagedIdentity_STATUS) AssignProperties_From_ManagedIdentity_STATUS(source *storage.ManagedIdentity_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // PrincipalId + identity.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // TenantId + identity.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // Type + identity.Type = genruntime.ClonePointerToString(source.Type) + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]UserAssignedIdentityProperty_STATUS, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity UserAssignedIdentityProperty_STATUS + err := userAssignedIdentity.AssignProperties_From_UserAssignedIdentityProperty_STATUS(&userAssignedIdentityValue) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserAssignedIdentityProperty_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + identity.UserAssignedIdentities = userAssignedIdentityMap + } else { + identity.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + identity.PropertyBag = propertyBag + } else { + identity.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForManagedIdentity_STATUS); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentity_STATUS populates the provided destination ManagedIdentity_STATUS from our ManagedIdentity_STATUS +func (identity *ManagedIdentity_STATUS) AssignProperties_To_ManagedIdentity_STATUS(destination *storage.ManagedIdentity_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(identity.PropertyBag) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(identity.PrincipalId) + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(identity.TenantId) + + // Type + destination.Type = genruntime.ClonePointerToString(identity.Type) + + // UserAssignedIdentities + if identity.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]storage.UserAssignedIdentityProperty_STATUS, len(identity.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range identity.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity storage.UserAssignedIdentityProperty_STATUS + err := userAssignedIdentityValue.AssignProperties_To_UserAssignedIdentityProperty_STATUS(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserAssignedIdentityProperty_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityMap + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForManagedIdentity_STATUS); ok { + err := augmentedIdentity.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded +// A private endpoint connection to an azure resource +type PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded populates our PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded from the provided source PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded +func (embedded *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(source *storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Id + embedded.Id = genruntime.ClonePointerToString(source.Id) + + // Update the property bag + if len(propertyBag) > 0 { + embedded.PropertyBag = propertyBag + } else { + embedded.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded interface (if implemented) to customize the conversion + var embeddedAsAny any = embedded + if augmentedEmbedded, ok := embeddedAsAny.(augmentConversionForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded); ok { + err := augmentedEmbedded.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded populates the provided destination PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded from our PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded +func (embedded *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(destination *storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(embedded.PropertyBag) + + // Id + destination.Id = genruntime.ClonePointerToString(embedded.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded interface (if implemented) to customize the conversion + var embeddedAsAny any = embedded + if augmentedEmbedded, ok := embeddedAsAny.(augmentConversionForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded); ok { + err := augmentedEmbedded.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ResourceLogConfiguration +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration struct { + Categories []ResourceLogCategory `json:"categories,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_ResourceLogConfiguration populates our ResourceLogConfiguration from the provided source ResourceLogConfiguration +func (configuration *ResourceLogConfiguration) AssignProperties_From_ResourceLogConfiguration(source *storage.ResourceLogConfiguration) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Categories + if source.Categories != nil { + categoryList := make([]ResourceLogCategory, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category ResourceLogCategory + err := category.AssignProperties_From_ResourceLogCategory(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogCategory() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + configuration.PropertyBag = propertyBag + } else { + configuration.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogConfiguration interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForResourceLogConfiguration); ok { + err := augmentedConfiguration.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceLogConfiguration populates the provided destination ResourceLogConfiguration from our ResourceLogConfiguration +func (configuration *ResourceLogConfiguration) AssignProperties_To_ResourceLogConfiguration(destination *storage.ResourceLogConfiguration) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(configuration.PropertyBag) + + // Categories + if configuration.Categories != nil { + categoryList := make([]storage.ResourceLogCategory, len(configuration.Categories)) + for categoryIndex, categoryItem := range configuration.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category storage.ResourceLogCategory + err := categoryItem.AssignProperties_To_ResourceLogCategory(&category) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogCategory() to populate field Categories") + } + categoryList[categoryIndex] = category + } + destination.Categories = categoryList + } else { + destination.Categories = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogConfiguration interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForResourceLogConfiguration); ok { + err := augmentedConfiguration.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ResourceLogConfiguration_STATUS +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration_STATUS struct { + Categories []ResourceLogCategory_STATUS `json:"categories,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_ResourceLogConfiguration_STATUS populates our ResourceLogConfiguration_STATUS from the provided source ResourceLogConfiguration_STATUS +func (configuration *ResourceLogConfiguration_STATUS) AssignProperties_From_ResourceLogConfiguration_STATUS(source *storage.ResourceLogConfiguration_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Categories + if source.Categories != nil { + categoryList := make([]ResourceLogCategory_STATUS, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category ResourceLogCategory_STATUS + err := category.AssignProperties_From_ResourceLogCategory_STATUS(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + configuration.PropertyBag = propertyBag + } else { + configuration.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogConfiguration_STATUS interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForResourceLogConfiguration_STATUS); ok { + err := augmentedConfiguration.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceLogConfiguration_STATUS populates the provided destination ResourceLogConfiguration_STATUS from our ResourceLogConfiguration_STATUS +func (configuration *ResourceLogConfiguration_STATUS) AssignProperties_To_ResourceLogConfiguration_STATUS(destination *storage.ResourceLogConfiguration_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(configuration.PropertyBag) + + // Categories + if configuration.Categories != nil { + categoryList := make([]storage.ResourceLogCategory_STATUS, len(configuration.Categories)) + for categoryIndex, categoryItem := range configuration.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category storage.ResourceLogCategory_STATUS + err := categoryItem.AssignProperties_To_ResourceLogCategory_STATUS(&category) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + destination.Categories = categoryList + } else { + destination.Categories = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogConfiguration_STATUS interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForResourceLogConfiguration_STATUS); ok { + err := augmentedConfiguration.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ResourceSku +// The billing information of the resource. +type ResourceSku struct { + Capacity *int `json:"capacity,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +// AssignProperties_From_ResourceSku populates our ResourceSku from the provided source ResourceSku +func (resourceSku *ResourceSku) AssignProperties_From_ResourceSku(source *storage.ResourceSku) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Capacity + resourceSku.Capacity = genruntime.ClonePointerToInt(source.Capacity) + + // Name + resourceSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + resourceSku.Tier = genruntime.ClonePointerToString(source.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + resourceSku.PropertyBag = propertyBag + } else { + resourceSku.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceSku interface (if implemented) to customize the conversion + var resourceSkuAsAny any = resourceSku + if augmentedResourceSku, ok := resourceSkuAsAny.(augmentConversionForResourceSku); ok { + err := augmentedResourceSku.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceSku populates the provided destination ResourceSku from our ResourceSku +func (resourceSku *ResourceSku) AssignProperties_To_ResourceSku(destination *storage.ResourceSku) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(resourceSku.PropertyBag) + + // Capacity + destination.Capacity = genruntime.ClonePointerToInt(resourceSku.Capacity) + + // Name + destination.Name = genruntime.ClonePointerToString(resourceSku.Name) + + // Tier + destination.Tier = genruntime.ClonePointerToString(resourceSku.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceSku interface (if implemented) to customize the conversion + var resourceSkuAsAny any = resourceSku + if augmentedResourceSku, ok := resourceSkuAsAny.(augmentConversionForResourceSku); ok { + err := augmentedResourceSku.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ResourceSku_STATUS +// The billing information of the resource. +type ResourceSku_STATUS struct { + Capacity *int `json:"capacity,omitempty"` + Family *string `json:"family,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Size *string `json:"size,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +// AssignProperties_From_ResourceSku_STATUS populates our ResourceSku_STATUS from the provided source ResourceSku_STATUS +func (resourceSku *ResourceSku_STATUS) AssignProperties_From_ResourceSku_STATUS(source *storage.ResourceSku_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Capacity + resourceSku.Capacity = genruntime.ClonePointerToInt(source.Capacity) + + // Family + resourceSku.Family = genruntime.ClonePointerToString(source.Family) + + // Name + resourceSku.Name = genruntime.ClonePointerToString(source.Name) + + // Size + resourceSku.Size = genruntime.ClonePointerToString(source.Size) + + // Tier + resourceSku.Tier = genruntime.ClonePointerToString(source.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + resourceSku.PropertyBag = propertyBag + } else { + resourceSku.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceSku_STATUS interface (if implemented) to customize the conversion + var resourceSkuAsAny any = resourceSku + if augmentedResourceSku, ok := resourceSkuAsAny.(augmentConversionForResourceSku_STATUS); ok { + err := augmentedResourceSku.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceSku_STATUS populates the provided destination ResourceSku_STATUS from our ResourceSku_STATUS +func (resourceSku *ResourceSku_STATUS) AssignProperties_To_ResourceSku_STATUS(destination *storage.ResourceSku_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(resourceSku.PropertyBag) + + // Capacity + destination.Capacity = genruntime.ClonePointerToInt(resourceSku.Capacity) + + // Family + destination.Family = genruntime.ClonePointerToString(resourceSku.Family) + + // Name + destination.Name = genruntime.ClonePointerToString(resourceSku.Name) + + // Size + destination.Size = genruntime.ClonePointerToString(resourceSku.Size) + + // Tier + destination.Tier = genruntime.ClonePointerToString(resourceSku.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceSku_STATUS interface (if implemented) to customize the conversion + var resourceSkuAsAny any = resourceSku + if augmentedResourceSku, ok := resourceSkuAsAny.(augmentConversionForResourceSku_STATUS); ok { + err := augmentedResourceSku.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ServerlessUpstreamSettings +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Templates []UpstreamTemplate `json:"templates,omitempty"` +} + +// AssignProperties_From_ServerlessUpstreamSettings populates our ServerlessUpstreamSettings from the provided source ServerlessUpstreamSettings +func (settings *ServerlessUpstreamSettings) AssignProperties_From_ServerlessUpstreamSettings(source *storage.ServerlessUpstreamSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Templates + if source.Templates != nil { + templateList := make([]UpstreamTemplate, len(source.Templates)) + for templateIndex, templateItem := range source.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template UpstreamTemplate + err := template.AssignProperties_From_UpstreamTemplate(&templateItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamTemplate() to populate field Templates") + } + templateList[templateIndex] = template + } + settings.Templates = templateList + } else { + settings.Templates = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForServerlessUpstreamSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForServerlessUpstreamSettings); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ServerlessUpstreamSettings populates the provided destination ServerlessUpstreamSettings from our ServerlessUpstreamSettings +func (settings *ServerlessUpstreamSettings) AssignProperties_To_ServerlessUpstreamSettings(destination *storage.ServerlessUpstreamSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // Templates + if settings.Templates != nil { + templateList := make([]storage.UpstreamTemplate, len(settings.Templates)) + for templateIndex, templateItem := range settings.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template storage.UpstreamTemplate + err := templateItem.AssignProperties_To_UpstreamTemplate(&template) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamTemplate() to populate field Templates") + } + templateList[templateIndex] = template + } + destination.Templates = templateList + } else { + destination.Templates = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForServerlessUpstreamSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForServerlessUpstreamSettings); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.ServerlessUpstreamSettings_STATUS +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings_STATUS struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Templates []UpstreamTemplate_STATUS `json:"templates,omitempty"` +} + +// AssignProperties_From_ServerlessUpstreamSettings_STATUS populates our ServerlessUpstreamSettings_STATUS from the provided source ServerlessUpstreamSettings_STATUS +func (settings *ServerlessUpstreamSettings_STATUS) AssignProperties_From_ServerlessUpstreamSettings_STATUS(source *storage.ServerlessUpstreamSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Templates + if source.Templates != nil { + templateList := make([]UpstreamTemplate_STATUS, len(source.Templates)) + for templateIndex, templateItem := range source.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template UpstreamTemplate_STATUS + err := template.AssignProperties_From_UpstreamTemplate_STATUS(&templateItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamTemplate_STATUS() to populate field Templates") + } + templateList[templateIndex] = template + } + settings.Templates = templateList + } else { + settings.Templates = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForServerlessUpstreamSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForServerlessUpstreamSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ServerlessUpstreamSettings_STATUS populates the provided destination ServerlessUpstreamSettings_STATUS from our ServerlessUpstreamSettings_STATUS +func (settings *ServerlessUpstreamSettings_STATUS) AssignProperties_To_ServerlessUpstreamSettings_STATUS(destination *storage.ServerlessUpstreamSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // Templates + if settings.Templates != nil { + templateList := make([]storage.UpstreamTemplate_STATUS, len(settings.Templates)) + for templateIndex, templateItem := range settings.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template storage.UpstreamTemplate_STATUS + err := templateItem.AssignProperties_To_UpstreamTemplate_STATUS(&template) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamTemplate_STATUS() to populate field Templates") + } + templateList[templateIndex] = template + } + destination.Templates = templateList + } else { + destination.Templates = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForServerlessUpstreamSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForServerlessUpstreamSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded +// Describes a Shared Private Link Resource +type SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded populates our SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded from the provided source SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded +func (embedded *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(source *storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Id + embedded.Id = genruntime.ClonePointerToString(source.Id) + + // Update the property bag + if len(propertyBag) > 0 { + embedded.PropertyBag = propertyBag + } else { + embedded.PropertyBag = nil + } + + // Invoke the augmentConversionForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded interface (if implemented) to customize the conversion + var embeddedAsAny any = embedded + if augmentedEmbedded, ok := embeddedAsAny.(augmentConversionForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded); ok { + err := augmentedEmbedded.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded populates the provided destination SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded from our SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded +func (embedded *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(destination *storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(embedded.PropertyBag) + + // Id + destination.Id = genruntime.ClonePointerToString(embedded.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded interface (if implemented) to customize the conversion + var embeddedAsAny any = embedded + if augmentedEmbedded, ok := embeddedAsAny.(augmentConversionForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded); ok { + err := augmentedEmbedded.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.SignalRCorsSettings +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings struct { + AllowedOrigins []string `json:"allowedOrigins,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_SignalRCorsSettings populates our SignalRCorsSettings from the provided source SignalRCorsSettings +func (settings *SignalRCorsSettings) AssignProperties_From_SignalRCorsSettings(source *storage.SignalRCorsSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AllowedOrigins + settings.AllowedOrigins = genruntime.CloneSliceOfString(source.AllowedOrigins) + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRCorsSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRCorsSettings); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRCorsSettings populates the provided destination SignalRCorsSettings from our SignalRCorsSettings +func (settings *SignalRCorsSettings) AssignProperties_To_SignalRCorsSettings(destination *storage.SignalRCorsSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // AllowedOrigins + destination.AllowedOrigins = genruntime.CloneSliceOfString(settings.AllowedOrigins) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRCorsSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRCorsSettings); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.SignalRCorsSettings_STATUS +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings_STATUS struct { + AllowedOrigins []string `json:"allowedOrigins,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_SignalRCorsSettings_STATUS populates our SignalRCorsSettings_STATUS from the provided source SignalRCorsSettings_STATUS +func (settings *SignalRCorsSettings_STATUS) AssignProperties_From_SignalRCorsSettings_STATUS(source *storage.SignalRCorsSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AllowedOrigins + settings.AllowedOrigins = genruntime.CloneSliceOfString(source.AllowedOrigins) + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRCorsSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRCorsSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRCorsSettings_STATUS populates the provided destination SignalRCorsSettings_STATUS from our SignalRCorsSettings_STATUS +func (settings *SignalRCorsSettings_STATUS) AssignProperties_To_SignalRCorsSettings_STATUS(destination *storage.SignalRCorsSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // AllowedOrigins + destination.AllowedOrigins = genruntime.CloneSliceOfString(settings.AllowedOrigins) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRCorsSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRCorsSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.SignalRFeature +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature struct { + Flag *string `json:"flag,omitempty"` + Properties map[string]string `json:"properties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// AssignProperties_From_SignalRFeature populates our SignalRFeature from the provided source SignalRFeature +func (feature *SignalRFeature) AssignProperties_From_SignalRFeature(source *storage.SignalRFeature) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Flag + feature.Flag = genruntime.ClonePointerToString(source.Flag) + + // Properties + feature.Properties = genruntime.CloneMapOfStringToString(source.Properties) + + // Value + feature.Value = genruntime.ClonePointerToString(source.Value) + + // Update the property bag + if len(propertyBag) > 0 { + feature.PropertyBag = propertyBag + } else { + feature.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRFeature interface (if implemented) to customize the conversion + var featureAsAny any = feature + if augmentedFeature, ok := featureAsAny.(augmentConversionForSignalRFeature); ok { + err := augmentedFeature.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRFeature populates the provided destination SignalRFeature from our SignalRFeature +func (feature *SignalRFeature) AssignProperties_To_SignalRFeature(destination *storage.SignalRFeature) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(feature.PropertyBag) + + // Flag + destination.Flag = genruntime.ClonePointerToString(feature.Flag) + + // Properties + destination.Properties = genruntime.CloneMapOfStringToString(feature.Properties) + + // Value + destination.Value = genruntime.ClonePointerToString(feature.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRFeature interface (if implemented) to customize the conversion + var featureAsAny any = feature + if augmentedFeature, ok := featureAsAny.(augmentConversionForSignalRFeature); ok { + err := augmentedFeature.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.SignalRFeature_STATUS +// Feature of a resource, which controls the runtime behavior. type SignalRFeature_STATUS struct { Flag *string `json:"flag,omitempty"` Properties map[string]string `json:"properties,omitempty"` @@ -386,6 +2523,74 @@ type SignalRFeature_STATUS struct { Value *string `json:"value,omitempty"` } +// AssignProperties_From_SignalRFeature_STATUS populates our SignalRFeature_STATUS from the provided source SignalRFeature_STATUS +func (feature *SignalRFeature_STATUS) AssignProperties_From_SignalRFeature_STATUS(source *storage.SignalRFeature_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Flag + feature.Flag = genruntime.ClonePointerToString(source.Flag) + + // Properties + feature.Properties = genruntime.CloneMapOfStringToString(source.Properties) + + // Value + feature.Value = genruntime.ClonePointerToString(source.Value) + + // Update the property bag + if len(propertyBag) > 0 { + feature.PropertyBag = propertyBag + } else { + feature.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRFeature_STATUS interface (if implemented) to customize the conversion + var featureAsAny any = feature + if augmentedFeature, ok := featureAsAny.(augmentConversionForSignalRFeature_STATUS); ok { + err := augmentedFeature.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRFeature_STATUS populates the provided destination SignalRFeature_STATUS from our SignalRFeature_STATUS +func (feature *SignalRFeature_STATUS) AssignProperties_To_SignalRFeature_STATUS(destination *storage.SignalRFeature_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(feature.PropertyBag) + + // Flag + destination.Flag = genruntime.ClonePointerToString(feature.Flag) + + // Properties + destination.Properties = genruntime.CloneMapOfStringToString(feature.Properties) + + // Value + destination.Value = genruntime.ClonePointerToString(feature.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRFeature_STATUS interface (if implemented) to customize the conversion + var featureAsAny any = feature + if augmentedFeature, ok := featureAsAny.(augmentConversionForSignalRFeature_STATUS); ok { + err := augmentedFeature.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.SignalRNetworkACLs // Network ACLs for the resource type SignalRNetworkACLs struct { @@ -395,13 +2600,285 @@ type SignalRNetworkACLs struct { PublicNetwork *NetworkACL `json:"publicNetwork,omitempty"` } -// Storage version of v1api20211001.SignalRNetworkACLs_STATUS -// Network ACLs for the resource -type SignalRNetworkACLs_STATUS struct { - DefaultAction *string `json:"defaultAction,omitempty"` - PrivateEndpoints []PrivateEndpointACL_STATUS `json:"privateEndpoints,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - PublicNetwork *NetworkACL_STATUS `json:"publicNetwork,omitempty"` +// AssignProperties_From_SignalRNetworkACLs populates our SignalRNetworkACLs from the provided source SignalRNetworkACLs +func (acLs *SignalRNetworkACLs) AssignProperties_From_SignalRNetworkACLs(source *storage.SignalRNetworkACLs) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DefaultAction + acLs.DefaultAction = genruntime.ClonePointerToString(source.DefaultAction) + + // IpRules + if len(source.IpRules) > 0 { + propertyBag.Add("IpRules", source.IpRules) + } else { + propertyBag.Remove("IpRules") + } + + // PrivateEndpoints + if source.PrivateEndpoints != nil { + privateEndpointList := make([]PrivateEndpointACL, len(source.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range source.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint PrivateEndpointACL + err := privateEndpoint.AssignProperties_From_PrivateEndpointACL(&privateEndpointItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointACL() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + acLs.PrivateEndpoints = privateEndpointList + } else { + acLs.PrivateEndpoints = nil + } + + // PublicNetwork + if source.PublicNetwork != nil { + var publicNetwork NetworkACL + err := publicNetwork.AssignProperties_From_NetworkACL(source.PublicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkACL() to populate field PublicNetwork") + } + acLs.PublicNetwork = &publicNetwork + } else { + acLs.PublicNetwork = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + acLs.PropertyBag = propertyBag + } else { + acLs.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRNetworkACLs interface (if implemented) to customize the conversion + var acLsAsAny any = acLs + if augmentedAcLs, ok := acLsAsAny.(augmentConversionForSignalRNetworkACLs); ok { + err := augmentedAcLs.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRNetworkACLs populates the provided destination SignalRNetworkACLs from our SignalRNetworkACLs +func (acLs *SignalRNetworkACLs) AssignProperties_To_SignalRNetworkACLs(destination *storage.SignalRNetworkACLs) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(acLs.PropertyBag) + + // DefaultAction + destination.DefaultAction = genruntime.ClonePointerToString(acLs.DefaultAction) + + // IpRules + if propertyBag.Contains("IpRules") { + var ipRule []storage.IPRule + err := propertyBag.Pull("IpRules", &ipRule) + if err != nil { + return eris.Wrap(err, "pulling 'IpRules' from propertyBag") + } + + destination.IpRules = ipRule + } else { + destination.IpRules = nil + } + + // PrivateEndpoints + if acLs.PrivateEndpoints != nil { + privateEndpointList := make([]storage.PrivateEndpointACL, len(acLs.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range acLs.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint storage.PrivateEndpointACL + err := privateEndpointItem.AssignProperties_To_PrivateEndpointACL(&privateEndpoint) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointACL() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + destination.PrivateEndpoints = privateEndpointList + } else { + destination.PrivateEndpoints = nil + } + + // PublicNetwork + if acLs.PublicNetwork != nil { + var publicNetwork storage.NetworkACL + err := acLs.PublicNetwork.AssignProperties_To_NetworkACL(&publicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkACL() to populate field PublicNetwork") + } + destination.PublicNetwork = &publicNetwork + } else { + destination.PublicNetwork = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRNetworkACLs interface (if implemented) to customize the conversion + var acLsAsAny any = acLs + if augmentedAcLs, ok := acLsAsAny.(augmentConversionForSignalRNetworkACLs); ok { + err := augmentedAcLs.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20211001.SignalRNetworkACLs_STATUS +// Network ACLs for the resource +type SignalRNetworkACLs_STATUS struct { + DefaultAction *string `json:"defaultAction,omitempty"` + PrivateEndpoints []PrivateEndpointACL_STATUS `json:"privateEndpoints,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetwork *NetworkACL_STATUS `json:"publicNetwork,omitempty"` +} + +// AssignProperties_From_SignalRNetworkACLs_STATUS populates our SignalRNetworkACLs_STATUS from the provided source SignalRNetworkACLs_STATUS +func (acLs *SignalRNetworkACLs_STATUS) AssignProperties_From_SignalRNetworkACLs_STATUS(source *storage.SignalRNetworkACLs_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DefaultAction + acLs.DefaultAction = genruntime.ClonePointerToString(source.DefaultAction) + + // IpRules + if len(source.IpRules) > 0 { + propertyBag.Add("IpRules", source.IpRules) + } else { + propertyBag.Remove("IpRules") + } + + // PrivateEndpoints + if source.PrivateEndpoints != nil { + privateEndpointList := make([]PrivateEndpointACL_STATUS, len(source.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range source.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint PrivateEndpointACL_STATUS + err := privateEndpoint.AssignProperties_From_PrivateEndpointACL_STATUS(&privateEndpointItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointACL_STATUS() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + acLs.PrivateEndpoints = privateEndpointList + } else { + acLs.PrivateEndpoints = nil + } + + // PublicNetwork + if source.PublicNetwork != nil { + var publicNetwork NetworkACL_STATUS + err := publicNetwork.AssignProperties_From_NetworkACL_STATUS(source.PublicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkACL_STATUS() to populate field PublicNetwork") + } + acLs.PublicNetwork = &publicNetwork + } else { + acLs.PublicNetwork = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + acLs.PropertyBag = propertyBag + } else { + acLs.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRNetworkACLs_STATUS interface (if implemented) to customize the conversion + var acLsAsAny any = acLs + if augmentedAcLs, ok := acLsAsAny.(augmentConversionForSignalRNetworkACLs_STATUS); ok { + err := augmentedAcLs.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRNetworkACLs_STATUS populates the provided destination SignalRNetworkACLs_STATUS from our SignalRNetworkACLs_STATUS +func (acLs *SignalRNetworkACLs_STATUS) AssignProperties_To_SignalRNetworkACLs_STATUS(destination *storage.SignalRNetworkACLs_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(acLs.PropertyBag) + + // DefaultAction + destination.DefaultAction = genruntime.ClonePointerToString(acLs.DefaultAction) + + // IpRules + if propertyBag.Contains("IpRules") { + var ipRule []storage.IPRule_STATUS + err := propertyBag.Pull("IpRules", &ipRule) + if err != nil { + return eris.Wrap(err, "pulling 'IpRules' from propertyBag") + } + + destination.IpRules = ipRule + } else { + destination.IpRules = nil + } + + // PrivateEndpoints + if acLs.PrivateEndpoints != nil { + privateEndpointList := make([]storage.PrivateEndpointACL_STATUS, len(acLs.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range acLs.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint storage.PrivateEndpointACL_STATUS + err := privateEndpointItem.AssignProperties_To_PrivateEndpointACL_STATUS(&privateEndpoint) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointACL_STATUS() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + destination.PrivateEndpoints = privateEndpointList + } else { + destination.PrivateEndpoints = nil + } + + // PublicNetwork + if acLs.PublicNetwork != nil { + var publicNetwork storage.NetworkACL_STATUS + err := acLs.PublicNetwork.AssignProperties_To_NetworkACL_STATUS(&publicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkACL_STATUS() to populate field PublicNetwork") + } + destination.PublicNetwork = &publicNetwork + } else { + destination.PublicNetwork = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRNetworkACLs_STATUS interface (if implemented) to customize the conversion + var acLsAsAny any = acLs + if augmentedAcLs, ok := acLsAsAny.(augmentConversionForSignalRNetworkACLs_STATUS); ok { + err := augmentedAcLs.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20211001.SignalROperatorSpec @@ -413,6 +2890,152 @@ type SignalROperatorSpec struct { Secrets *SignalROperatorSecrets `json:"secrets,omitempty"` } +// AssignProperties_From_SignalROperatorSpec populates our SignalROperatorSpec from the provided source SignalROperatorSpec +func (operator *SignalROperatorSpec) AssignProperties_From_SignalROperatorSpec(source *storage.SignalROperatorSpec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // Secrets + if source.Secrets != nil { + var secret SignalROperatorSecrets + err := secret.AssignProperties_From_SignalROperatorSecrets(source.Secrets) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalROperatorSecrets() to populate field Secrets") + } + operator.Secrets = &secret + } else { + operator.Secrets = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + operator.PropertyBag = propertyBag + } else { + operator.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalROperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForSignalROperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalROperatorSpec populates the provided destination SignalROperatorSpec from our SignalROperatorSpec +func (operator *SignalROperatorSpec) AssignProperties_To_SignalROperatorSpec(destination *storage.SignalROperatorSpec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(operator.PropertyBag) + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Secrets + if operator.Secrets != nil { + var secret storage.SignalROperatorSecrets + err := operator.Secrets.AssignProperties_To_SignalROperatorSecrets(&secret) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalROperatorSecrets() to populate field Secrets") + } + destination.Secrets = &secret + } else { + destination.Secrets = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalROperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForSignalROperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.SignalRTlsSettings // TLS settings for the resource type SignalRTlsSettings struct { @@ -420,6 +3043,72 @@ type SignalRTlsSettings struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_SignalRTlsSettings populates our SignalRTlsSettings from the provided source SignalRTlsSettings +func (settings *SignalRTlsSettings) AssignProperties_From_SignalRTlsSettings(source *storage.SignalRTlsSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ClientCertEnabled + if source.ClientCertEnabled != nil { + clientCertEnabled := *source.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } else { + settings.ClientCertEnabled = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRTlsSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRTlsSettings); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRTlsSettings populates the provided destination SignalRTlsSettings from our SignalRTlsSettings +func (settings *SignalRTlsSettings) AssignProperties_To_SignalRTlsSettings(destination *storage.SignalRTlsSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // ClientCertEnabled + if settings.ClientCertEnabled != nil { + clientCertEnabled := *settings.ClientCertEnabled + destination.ClientCertEnabled = &clientCertEnabled + } else { + destination.ClientCertEnabled = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRTlsSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRTlsSettings); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.SignalRTlsSettings_STATUS // TLS settings for the resource type SignalRTlsSettings_STATUS struct { @@ -427,6 +3116,72 @@ type SignalRTlsSettings_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_SignalRTlsSettings_STATUS populates our SignalRTlsSettings_STATUS from the provided source SignalRTlsSettings_STATUS +func (settings *SignalRTlsSettings_STATUS) AssignProperties_From_SignalRTlsSettings_STATUS(source *storage.SignalRTlsSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ClientCertEnabled + if source.ClientCertEnabled != nil { + clientCertEnabled := *source.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } else { + settings.ClientCertEnabled = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRTlsSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRTlsSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalRTlsSettings_STATUS populates the provided destination SignalRTlsSettings_STATUS from our SignalRTlsSettings_STATUS +func (settings *SignalRTlsSettings_STATUS) AssignProperties_To_SignalRTlsSettings_STATUS(destination *storage.SignalRTlsSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // ClientCertEnabled + if settings.ClientCertEnabled != nil { + clientCertEnabled := *settings.ClientCertEnabled + destination.ClientCertEnabled = &clientCertEnabled + } else { + destination.ClientCertEnabled = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalRTlsSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForSignalRTlsSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.SystemData_STATUS // Metadata pertaining to creation and last modification of the resource. type SystemData_STATUS struct { @@ -439,6 +3194,192 @@ type SystemData_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_SystemData_STATUS populates our SystemData_STATUS from the provided source SystemData_STATUS +func (data *SystemData_STATUS) AssignProperties_From_SystemData_STATUS(source *storage.SystemData_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // CreatedAt + data.CreatedAt = genruntime.ClonePointerToString(source.CreatedAt) + + // CreatedBy + data.CreatedBy = genruntime.ClonePointerToString(source.CreatedBy) + + // CreatedByType + data.CreatedByType = genruntime.ClonePointerToString(source.CreatedByType) + + // LastModifiedAt + data.LastModifiedAt = genruntime.ClonePointerToString(source.LastModifiedAt) + + // LastModifiedBy + data.LastModifiedBy = genruntime.ClonePointerToString(source.LastModifiedBy) + + // LastModifiedByType + data.LastModifiedByType = genruntime.ClonePointerToString(source.LastModifiedByType) + + // Update the property bag + if len(propertyBag) > 0 { + data.PropertyBag = propertyBag + } else { + data.PropertyBag = nil + } + + // Invoke the augmentConversionForSystemData_STATUS interface (if implemented) to customize the conversion + var dataAsAny any = data + if augmentedData, ok := dataAsAny.(augmentConversionForSystemData_STATUS); ok { + err := augmentedData.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SystemData_STATUS populates the provided destination SystemData_STATUS from our SystemData_STATUS +func (data *SystemData_STATUS) AssignProperties_To_SystemData_STATUS(destination *storage.SystemData_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(data.PropertyBag) + + // CreatedAt + destination.CreatedAt = genruntime.ClonePointerToString(data.CreatedAt) + + // CreatedBy + destination.CreatedBy = genruntime.ClonePointerToString(data.CreatedBy) + + // CreatedByType + destination.CreatedByType = genruntime.ClonePointerToString(data.CreatedByType) + + // LastModifiedAt + destination.LastModifiedAt = genruntime.ClonePointerToString(data.LastModifiedAt) + + // LastModifiedBy + destination.LastModifiedBy = genruntime.ClonePointerToString(data.LastModifiedBy) + + // LastModifiedByType + destination.LastModifiedByType = genruntime.ClonePointerToString(data.LastModifiedByType) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSystemData_STATUS interface (if implemented) to customize the conversion + var dataAsAny any = data + if augmentedData, ok := dataAsAny.(augmentConversionForSystemData_STATUS); ok { + err := augmentedData.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForManagedIdentity interface { + AssignPropertiesFrom(src *storage.ManagedIdentity) error + AssignPropertiesTo(dst *storage.ManagedIdentity) error +} + +type augmentConversionForManagedIdentity_STATUS interface { + AssignPropertiesFrom(src *storage.ManagedIdentity_STATUS) error + AssignPropertiesTo(dst *storage.ManagedIdentity_STATUS) error +} + +type augmentConversionForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded interface { + AssignPropertiesFrom(src *storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) error + AssignPropertiesTo(dst *storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) error +} + +type augmentConversionForResourceLogConfiguration interface { + AssignPropertiesFrom(src *storage.ResourceLogConfiguration) error + AssignPropertiesTo(dst *storage.ResourceLogConfiguration) error +} + +type augmentConversionForResourceLogConfiguration_STATUS interface { + AssignPropertiesFrom(src *storage.ResourceLogConfiguration_STATUS) error + AssignPropertiesTo(dst *storage.ResourceLogConfiguration_STATUS) error +} + +type augmentConversionForResourceSku interface { + AssignPropertiesFrom(src *storage.ResourceSku) error + AssignPropertiesTo(dst *storage.ResourceSku) error +} + +type augmentConversionForResourceSku_STATUS interface { + AssignPropertiesFrom(src *storage.ResourceSku_STATUS) error + AssignPropertiesTo(dst *storage.ResourceSku_STATUS) error +} + +type augmentConversionForServerlessUpstreamSettings interface { + AssignPropertiesFrom(src *storage.ServerlessUpstreamSettings) error + AssignPropertiesTo(dst *storage.ServerlessUpstreamSettings) error +} + +type augmentConversionForServerlessUpstreamSettings_STATUS interface { + AssignPropertiesFrom(src *storage.ServerlessUpstreamSettings_STATUS) error + AssignPropertiesTo(dst *storage.ServerlessUpstreamSettings_STATUS) error +} + +type augmentConversionForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded interface { + AssignPropertiesFrom(src *storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) error + AssignPropertiesTo(dst *storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) error +} + +type augmentConversionForSignalRCorsSettings interface { + AssignPropertiesFrom(src *storage.SignalRCorsSettings) error + AssignPropertiesTo(dst *storage.SignalRCorsSettings) error +} + +type augmentConversionForSignalRCorsSettings_STATUS interface { + AssignPropertiesFrom(src *storage.SignalRCorsSettings_STATUS) error + AssignPropertiesTo(dst *storage.SignalRCorsSettings_STATUS) error +} + +type augmentConversionForSignalRFeature interface { + AssignPropertiesFrom(src *storage.SignalRFeature) error + AssignPropertiesTo(dst *storage.SignalRFeature) error +} + +type augmentConversionForSignalRFeature_STATUS interface { + AssignPropertiesFrom(src *storage.SignalRFeature_STATUS) error + AssignPropertiesTo(dst *storage.SignalRFeature_STATUS) error +} + +type augmentConversionForSignalRNetworkACLs interface { + AssignPropertiesFrom(src *storage.SignalRNetworkACLs) error + AssignPropertiesTo(dst *storage.SignalRNetworkACLs) error +} + +type augmentConversionForSignalRNetworkACLs_STATUS interface { + AssignPropertiesFrom(src *storage.SignalRNetworkACLs_STATUS) error + AssignPropertiesTo(dst *storage.SignalRNetworkACLs_STATUS) error +} + +type augmentConversionForSignalROperatorSpec interface { + AssignPropertiesFrom(src *storage.SignalROperatorSpec) error + AssignPropertiesTo(dst *storage.SignalROperatorSpec) error +} + +type augmentConversionForSignalRTlsSettings interface { + AssignPropertiesFrom(src *storage.SignalRTlsSettings) error + AssignPropertiesTo(dst *storage.SignalRTlsSettings) error +} + +type augmentConversionForSignalRTlsSettings_STATUS interface { + AssignPropertiesFrom(src *storage.SignalRTlsSettings_STATUS) error + AssignPropertiesTo(dst *storage.SignalRTlsSettings_STATUS) error +} + +type augmentConversionForSystemData_STATUS interface { + AssignPropertiesFrom(src *storage.SystemData_STATUS) error + AssignPropertiesTo(dst *storage.SystemData_STATUS) error +} + // Storage version of v1api20211001.NetworkACL // Network ACL type NetworkACL struct { @@ -447,6 +3388,68 @@ type NetworkACL struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_NetworkACL populates our NetworkACL from the provided source NetworkACL +func (networkACL *NetworkACL) AssignProperties_From_NetworkACL(source *storage.NetworkACL) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Allow + networkACL.Allow = genruntime.CloneSliceOfString(source.Allow) + + // Deny + networkACL.Deny = genruntime.CloneSliceOfString(source.Deny) + + // Update the property bag + if len(propertyBag) > 0 { + networkACL.PropertyBag = propertyBag + } else { + networkACL.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkACL interface (if implemented) to customize the conversion + var networkACLAsAny any = networkACL + if augmentedNetworkACL, ok := networkACLAsAny.(augmentConversionForNetworkACL); ok { + err := augmentedNetworkACL.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_NetworkACL populates the provided destination NetworkACL from our NetworkACL +func (networkACL *NetworkACL) AssignProperties_To_NetworkACL(destination *storage.NetworkACL) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(networkACL.PropertyBag) + + // Allow + destination.Allow = genruntime.CloneSliceOfString(networkACL.Allow) + + // Deny + destination.Deny = genruntime.CloneSliceOfString(networkACL.Deny) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkACL interface (if implemented) to customize the conversion + var networkACLAsAny any = networkACL + if augmentedNetworkACL, ok := networkACLAsAny.(augmentConversionForNetworkACL); ok { + err := augmentedNetworkACL.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.NetworkACL_STATUS // Network ACL type NetworkACL_STATUS struct { @@ -455,6 +3458,68 @@ type NetworkACL_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_NetworkACL_STATUS populates our NetworkACL_STATUS from the provided source NetworkACL_STATUS +func (networkACL *NetworkACL_STATUS) AssignProperties_From_NetworkACL_STATUS(source *storage.NetworkACL_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Allow + networkACL.Allow = genruntime.CloneSliceOfString(source.Allow) + + // Deny + networkACL.Deny = genruntime.CloneSliceOfString(source.Deny) + + // Update the property bag + if len(propertyBag) > 0 { + networkACL.PropertyBag = propertyBag + } else { + networkACL.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkACL_STATUS interface (if implemented) to customize the conversion + var networkACLAsAny any = networkACL + if augmentedNetworkACL, ok := networkACLAsAny.(augmentConversionForNetworkACL_STATUS); ok { + err := augmentedNetworkACL.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_NetworkACL_STATUS populates the provided destination NetworkACL_STATUS from our NetworkACL_STATUS +func (networkACL *NetworkACL_STATUS) AssignProperties_To_NetworkACL_STATUS(destination *storage.NetworkACL_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(networkACL.PropertyBag) + + // Allow + destination.Allow = genruntime.CloneSliceOfString(networkACL.Allow) + + // Deny + destination.Deny = genruntime.CloneSliceOfString(networkACL.Deny) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkACL_STATUS interface (if implemented) to customize the conversion + var networkACLAsAny any = networkACL + if augmentedNetworkACL, ok := networkACLAsAny.(augmentConversionForNetworkACL_STATUS); ok { + err := augmentedNetworkACL.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.PrivateEndpointACL // ACL for a private endpoint type PrivateEndpointACL struct { @@ -464,6 +3529,74 @@ type PrivateEndpointACL struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_PrivateEndpointACL populates our PrivateEndpointACL from the provided source PrivateEndpointACL +func (endpointACL *PrivateEndpointACL) AssignProperties_From_PrivateEndpointACL(source *storage.PrivateEndpointACL) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Allow + endpointACL.Allow = genruntime.CloneSliceOfString(source.Allow) + + // Deny + endpointACL.Deny = genruntime.CloneSliceOfString(source.Deny) + + // Name + endpointACL.Name = genruntime.ClonePointerToString(source.Name) + + // Update the property bag + if len(propertyBag) > 0 { + endpointACL.PropertyBag = propertyBag + } else { + endpointACL.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointACL interface (if implemented) to customize the conversion + var endpointACLAsAny any = endpointACL + if augmentedEndpointACL, ok := endpointACLAsAny.(augmentConversionForPrivateEndpointACL); ok { + err := augmentedEndpointACL.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointACL populates the provided destination PrivateEndpointACL from our PrivateEndpointACL +func (endpointACL *PrivateEndpointACL) AssignProperties_To_PrivateEndpointACL(destination *storage.PrivateEndpointACL) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(endpointACL.PropertyBag) + + // Allow + destination.Allow = genruntime.CloneSliceOfString(endpointACL.Allow) + + // Deny + destination.Deny = genruntime.CloneSliceOfString(endpointACL.Deny) + + // Name + destination.Name = genruntime.ClonePointerToString(endpointACL.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointACL interface (if implemented) to customize the conversion + var endpointACLAsAny any = endpointACL + if augmentedEndpointACL, ok := endpointACLAsAny.(augmentConversionForPrivateEndpointACL); ok { + err := augmentedEndpointACL.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.PrivateEndpointACL_STATUS // ACL for a private endpoint type PrivateEndpointACL_STATUS struct { @@ -473,6 +3606,74 @@ type PrivateEndpointACL_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_PrivateEndpointACL_STATUS populates our PrivateEndpointACL_STATUS from the provided source PrivateEndpointACL_STATUS +func (endpointACL *PrivateEndpointACL_STATUS) AssignProperties_From_PrivateEndpointACL_STATUS(source *storage.PrivateEndpointACL_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Allow + endpointACL.Allow = genruntime.CloneSliceOfString(source.Allow) + + // Deny + endpointACL.Deny = genruntime.CloneSliceOfString(source.Deny) + + // Name + endpointACL.Name = genruntime.ClonePointerToString(source.Name) + + // Update the property bag + if len(propertyBag) > 0 { + endpointACL.PropertyBag = propertyBag + } else { + endpointACL.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointACL_STATUS interface (if implemented) to customize the conversion + var endpointACLAsAny any = endpointACL + if augmentedEndpointACL, ok := endpointACLAsAny.(augmentConversionForPrivateEndpointACL_STATUS); ok { + err := augmentedEndpointACL.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointACL_STATUS populates the provided destination PrivateEndpointACL_STATUS from our PrivateEndpointACL_STATUS +func (endpointACL *PrivateEndpointACL_STATUS) AssignProperties_To_PrivateEndpointACL_STATUS(destination *storage.PrivateEndpointACL_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(endpointACL.PropertyBag) + + // Allow + destination.Allow = genruntime.CloneSliceOfString(endpointACL.Allow) + + // Deny + destination.Deny = genruntime.CloneSliceOfString(endpointACL.Deny) + + // Name + destination.Name = genruntime.ClonePointerToString(endpointACL.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointACL_STATUS interface (if implemented) to customize the conversion + var endpointACLAsAny any = endpointACL + if augmentedEndpointACL, ok := endpointACLAsAny.(augmentConversionForPrivateEndpointACL_STATUS); ok { + err := augmentedEndpointACL.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.ResourceLogCategory // Resource log category configuration of a Microsoft.SignalRService resource. type ResourceLogCategory struct { @@ -481,6 +3682,68 @@ type ResourceLogCategory struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_ResourceLogCategory populates our ResourceLogCategory from the provided source ResourceLogCategory +func (category *ResourceLogCategory) AssignProperties_From_ResourceLogCategory(source *storage.ResourceLogCategory) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // Update the property bag + if len(propertyBag) > 0 { + category.PropertyBag = propertyBag + } else { + category.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogCategory interface (if implemented) to customize the conversion + var categoryAsAny any = category + if augmentedCategory, ok := categoryAsAny.(augmentConversionForResourceLogCategory); ok { + err := augmentedCategory.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceLogCategory populates the provided destination ResourceLogCategory from our ResourceLogCategory +func (category *ResourceLogCategory) AssignProperties_To_ResourceLogCategory(destination *storage.ResourceLogCategory) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(category.PropertyBag) + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(category.Enabled) + + // Name + destination.Name = genruntime.ClonePointerToString(category.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogCategory interface (if implemented) to customize the conversion + var categoryAsAny any = category + if augmentedCategory, ok := categoryAsAny.(augmentConversionForResourceLogCategory); ok { + err := augmentedCategory.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.ResourceLogCategory_STATUS // Resource log category configuration of a Microsoft.SignalRService resource. type ResourceLogCategory_STATUS struct { @@ -489,6 +3752,68 @@ type ResourceLogCategory_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_ResourceLogCategory_STATUS populates our ResourceLogCategory_STATUS from the provided source ResourceLogCategory_STATUS +func (category *ResourceLogCategory_STATUS) AssignProperties_From_ResourceLogCategory_STATUS(source *storage.ResourceLogCategory_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // Update the property bag + if len(propertyBag) > 0 { + category.PropertyBag = propertyBag + } else { + category.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogCategory_STATUS interface (if implemented) to customize the conversion + var categoryAsAny any = category + if augmentedCategory, ok := categoryAsAny.(augmentConversionForResourceLogCategory_STATUS); ok { + err := augmentedCategory.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceLogCategory_STATUS populates the provided destination ResourceLogCategory_STATUS from our ResourceLogCategory_STATUS +func (category *ResourceLogCategory_STATUS) AssignProperties_To_ResourceLogCategory_STATUS(destination *storage.ResourceLogCategory_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(category.PropertyBag) + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(category.Enabled) + + // Name + destination.Name = genruntime.ClonePointerToString(category.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceLogCategory_STATUS interface (if implemented) to customize the conversion + var categoryAsAny any = category + if augmentedCategory, ok := categoryAsAny.(augmentConversionForResourceLogCategory_STATUS); ok { + err := augmentedCategory.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.SignalROperatorSecrets type SignalROperatorSecrets struct { PrimaryConnectionString *genruntime.SecretDestination `json:"primaryConnectionString,omitempty"` @@ -498,6 +3823,120 @@ type SignalROperatorSecrets struct { SecondaryKey *genruntime.SecretDestination `json:"secondaryKey,omitempty"` } +// AssignProperties_From_SignalROperatorSecrets populates our SignalROperatorSecrets from the provided source SignalROperatorSecrets +func (secrets *SignalROperatorSecrets) AssignProperties_From_SignalROperatorSecrets(source *storage.SignalROperatorSecrets) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // PrimaryConnectionString + if source.PrimaryConnectionString != nil { + primaryConnectionString := source.PrimaryConnectionString.Copy() + secrets.PrimaryConnectionString = &primaryConnectionString + } else { + secrets.PrimaryConnectionString = nil + } + + // PrimaryKey + if source.PrimaryKey != nil { + primaryKey := source.PrimaryKey.Copy() + secrets.PrimaryKey = &primaryKey + } else { + secrets.PrimaryKey = nil + } + + // SecondaryConnectionString + if source.SecondaryConnectionString != nil { + secondaryConnectionString := source.SecondaryConnectionString.Copy() + secrets.SecondaryConnectionString = &secondaryConnectionString + } else { + secrets.SecondaryConnectionString = nil + } + + // SecondaryKey + if source.SecondaryKey != nil { + secondaryKey := source.SecondaryKey.Copy() + secrets.SecondaryKey = &secondaryKey + } else { + secrets.SecondaryKey = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + secrets.PropertyBag = propertyBag + } else { + secrets.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalROperatorSecrets interface (if implemented) to customize the conversion + var secretsAsAny any = secrets + if augmentedSecrets, ok := secretsAsAny.(augmentConversionForSignalROperatorSecrets); ok { + err := augmentedSecrets.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_SignalROperatorSecrets populates the provided destination SignalROperatorSecrets from our SignalROperatorSecrets +func (secrets *SignalROperatorSecrets) AssignProperties_To_SignalROperatorSecrets(destination *storage.SignalROperatorSecrets) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(secrets.PropertyBag) + + // PrimaryConnectionString + if secrets.PrimaryConnectionString != nil { + primaryConnectionString := secrets.PrimaryConnectionString.Copy() + destination.PrimaryConnectionString = &primaryConnectionString + } else { + destination.PrimaryConnectionString = nil + } + + // PrimaryKey + if secrets.PrimaryKey != nil { + primaryKey := secrets.PrimaryKey.Copy() + destination.PrimaryKey = &primaryKey + } else { + destination.PrimaryKey = nil + } + + // SecondaryConnectionString + if secrets.SecondaryConnectionString != nil { + secondaryConnectionString := secrets.SecondaryConnectionString.Copy() + destination.SecondaryConnectionString = &secondaryConnectionString + } else { + destination.SecondaryConnectionString = nil + } + + // SecondaryKey + if secrets.SecondaryKey != nil { + secondaryKey := secrets.SecondaryKey.Copy() + destination.SecondaryKey = &secondaryKey + } else { + destination.SecondaryKey = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSignalROperatorSecrets interface (if implemented) to customize the conversion + var secretsAsAny any = secrets + if augmentedSecrets, ok := secretsAsAny.(augmentConversionForSignalROperatorSecrets); ok { + err := augmentedSecrets.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.UpstreamTemplate // Upstream template item settings. It defines the Upstream URL of the incoming requests. // The template defines the pattern @@ -511,6 +3950,104 @@ type UpstreamTemplate struct { UrlTemplate *string `json:"urlTemplate,omitempty"` } +// AssignProperties_From_UpstreamTemplate populates our UpstreamTemplate from the provided source UpstreamTemplate +func (template *UpstreamTemplate) AssignProperties_From_UpstreamTemplate(source *storage.UpstreamTemplate) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Auth + if source.Auth != nil { + var auth UpstreamAuthSettings + err := auth.AssignProperties_From_UpstreamAuthSettings(source.Auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamAuthSettings() to populate field Auth") + } + template.Auth = &auth + } else { + template.Auth = nil + } + + // CategoryPattern + template.CategoryPattern = genruntime.ClonePointerToString(source.CategoryPattern) + + // EventPattern + template.EventPattern = genruntime.ClonePointerToString(source.EventPattern) + + // HubPattern + template.HubPattern = genruntime.ClonePointerToString(source.HubPattern) + + // UrlTemplate + template.UrlTemplate = genruntime.ClonePointerToString(source.UrlTemplate) + + // Update the property bag + if len(propertyBag) > 0 { + template.PropertyBag = propertyBag + } else { + template.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamTemplate interface (if implemented) to customize the conversion + var templateAsAny any = template + if augmentedTemplate, ok := templateAsAny.(augmentConversionForUpstreamTemplate); ok { + err := augmentedTemplate.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UpstreamTemplate populates the provided destination UpstreamTemplate from our UpstreamTemplate +func (template *UpstreamTemplate) AssignProperties_To_UpstreamTemplate(destination *storage.UpstreamTemplate) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(template.PropertyBag) + + // Auth + if template.Auth != nil { + var auth storage.UpstreamAuthSettings + err := template.Auth.AssignProperties_To_UpstreamAuthSettings(&auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamAuthSettings() to populate field Auth") + } + destination.Auth = &auth + } else { + destination.Auth = nil + } + + // CategoryPattern + destination.CategoryPattern = genruntime.ClonePointerToString(template.CategoryPattern) + + // EventPattern + destination.EventPattern = genruntime.ClonePointerToString(template.EventPattern) + + // HubPattern + destination.HubPattern = genruntime.ClonePointerToString(template.HubPattern) + + // UrlTemplate + destination.UrlTemplate = genruntime.ClonePointerToString(template.UrlTemplate) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamTemplate interface (if implemented) to customize the conversion + var templateAsAny any = template + if augmentedTemplate, ok := templateAsAny.(augmentConversionForUpstreamTemplate); ok { + err := augmentedTemplate.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.UpstreamTemplate_STATUS // Upstream template item settings. It defines the Upstream URL of the incoming requests. // The template defines the pattern @@ -524,6 +4061,104 @@ type UpstreamTemplate_STATUS struct { UrlTemplate *string `json:"urlTemplate,omitempty"` } +// AssignProperties_From_UpstreamTemplate_STATUS populates our UpstreamTemplate_STATUS from the provided source UpstreamTemplate_STATUS +func (template *UpstreamTemplate_STATUS) AssignProperties_From_UpstreamTemplate_STATUS(source *storage.UpstreamTemplate_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Auth + if source.Auth != nil { + var auth UpstreamAuthSettings_STATUS + err := auth.AssignProperties_From_UpstreamAuthSettings_STATUS(source.Auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamAuthSettings_STATUS() to populate field Auth") + } + template.Auth = &auth + } else { + template.Auth = nil + } + + // CategoryPattern + template.CategoryPattern = genruntime.ClonePointerToString(source.CategoryPattern) + + // EventPattern + template.EventPattern = genruntime.ClonePointerToString(source.EventPattern) + + // HubPattern + template.HubPattern = genruntime.ClonePointerToString(source.HubPattern) + + // UrlTemplate + template.UrlTemplate = genruntime.ClonePointerToString(source.UrlTemplate) + + // Update the property bag + if len(propertyBag) > 0 { + template.PropertyBag = propertyBag + } else { + template.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamTemplate_STATUS interface (if implemented) to customize the conversion + var templateAsAny any = template + if augmentedTemplate, ok := templateAsAny.(augmentConversionForUpstreamTemplate_STATUS); ok { + err := augmentedTemplate.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UpstreamTemplate_STATUS populates the provided destination UpstreamTemplate_STATUS from our UpstreamTemplate_STATUS +func (template *UpstreamTemplate_STATUS) AssignProperties_To_UpstreamTemplate_STATUS(destination *storage.UpstreamTemplate_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(template.PropertyBag) + + // Auth + if template.Auth != nil { + var auth storage.UpstreamAuthSettings_STATUS + err := template.Auth.AssignProperties_To_UpstreamAuthSettings_STATUS(&auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamAuthSettings_STATUS() to populate field Auth") + } + destination.Auth = &auth + } else { + destination.Auth = nil + } + + // CategoryPattern + destination.CategoryPattern = genruntime.ClonePointerToString(template.CategoryPattern) + + // EventPattern + destination.EventPattern = genruntime.ClonePointerToString(template.EventPattern) + + // HubPattern + destination.HubPattern = genruntime.ClonePointerToString(template.HubPattern) + + // UrlTemplate + destination.UrlTemplate = genruntime.ClonePointerToString(template.UrlTemplate) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamTemplate_STATUS interface (if implemented) to customize the conversion + var templateAsAny any = template + if augmentedTemplate, ok := templateAsAny.(augmentConversionForUpstreamTemplate_STATUS); ok { + err := augmentedTemplate.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.UserAssignedIdentityDetails // Information about the user assigned identity for the resource type UserAssignedIdentityDetails struct { @@ -531,6 +4166,62 @@ type UserAssignedIdentityDetails struct { Reference genruntime.ResourceReference `armReference:"Reference" json:"reference,omitempty"` } +// AssignProperties_From_UserAssignedIdentityDetails populates our UserAssignedIdentityDetails from the provided source UserAssignedIdentityDetails +func (details *UserAssignedIdentityDetails) AssignProperties_From_UserAssignedIdentityDetails(source *storage.UserAssignedIdentityDetails) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Reference + details.Reference = source.Reference.Copy() + + // Update the property bag + if len(propertyBag) > 0 { + details.PropertyBag = propertyBag + } else { + details.PropertyBag = nil + } + + // Invoke the augmentConversionForUserAssignedIdentityDetails interface (if implemented) to customize the conversion + var detailsAsAny any = details + if augmentedDetails, ok := detailsAsAny.(augmentConversionForUserAssignedIdentityDetails); ok { + err := augmentedDetails.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UserAssignedIdentityDetails populates the provided destination UserAssignedIdentityDetails from our UserAssignedIdentityDetails +func (details *UserAssignedIdentityDetails) AssignProperties_To_UserAssignedIdentityDetails(destination *storage.UserAssignedIdentityDetails) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(details.PropertyBag) + + // Reference + destination.Reference = details.Reference.Copy() + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUserAssignedIdentityDetails interface (if implemented) to customize the conversion + var detailsAsAny any = details + if augmentedDetails, ok := detailsAsAny.(augmentConversionForUserAssignedIdentityDetails); ok { + err := augmentedDetails.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.UserAssignedIdentityProperty_STATUS // Properties of user assigned identity. type UserAssignedIdentityProperty_STATUS struct { @@ -539,6 +4230,123 @@ type UserAssignedIdentityProperty_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_UserAssignedIdentityProperty_STATUS populates our UserAssignedIdentityProperty_STATUS from the provided source UserAssignedIdentityProperty_STATUS +func (property *UserAssignedIdentityProperty_STATUS) AssignProperties_From_UserAssignedIdentityProperty_STATUS(source *storage.UserAssignedIdentityProperty_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ClientId + property.ClientId = genruntime.ClonePointerToString(source.ClientId) + + // PrincipalId + property.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + property.PropertyBag = propertyBag + } else { + property.PropertyBag = nil + } + + // Invoke the augmentConversionForUserAssignedIdentityProperty_STATUS interface (if implemented) to customize the conversion + var propertyAsAny any = property + if augmentedProperty, ok := propertyAsAny.(augmentConversionForUserAssignedIdentityProperty_STATUS); ok { + err := augmentedProperty.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UserAssignedIdentityProperty_STATUS populates the provided destination UserAssignedIdentityProperty_STATUS from our UserAssignedIdentityProperty_STATUS +func (property *UserAssignedIdentityProperty_STATUS) AssignProperties_To_UserAssignedIdentityProperty_STATUS(destination *storage.UserAssignedIdentityProperty_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(property.PropertyBag) + + // ClientId + destination.ClientId = genruntime.ClonePointerToString(property.ClientId) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(property.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUserAssignedIdentityProperty_STATUS interface (if implemented) to customize the conversion + var propertyAsAny any = property + if augmentedProperty, ok := propertyAsAny.(augmentConversionForUserAssignedIdentityProperty_STATUS); ok { + err := augmentedProperty.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForNetworkACL interface { + AssignPropertiesFrom(src *storage.NetworkACL) error + AssignPropertiesTo(dst *storage.NetworkACL) error +} + +type augmentConversionForNetworkACL_STATUS interface { + AssignPropertiesFrom(src *storage.NetworkACL_STATUS) error + AssignPropertiesTo(dst *storage.NetworkACL_STATUS) error +} + +type augmentConversionForPrivateEndpointACL interface { + AssignPropertiesFrom(src *storage.PrivateEndpointACL) error + AssignPropertiesTo(dst *storage.PrivateEndpointACL) error +} + +type augmentConversionForPrivateEndpointACL_STATUS interface { + AssignPropertiesFrom(src *storage.PrivateEndpointACL_STATUS) error + AssignPropertiesTo(dst *storage.PrivateEndpointACL_STATUS) error +} + +type augmentConversionForResourceLogCategory interface { + AssignPropertiesFrom(src *storage.ResourceLogCategory) error + AssignPropertiesTo(dst *storage.ResourceLogCategory) error +} + +type augmentConversionForResourceLogCategory_STATUS interface { + AssignPropertiesFrom(src *storage.ResourceLogCategory_STATUS) error + AssignPropertiesTo(dst *storage.ResourceLogCategory_STATUS) error +} + +type augmentConversionForSignalROperatorSecrets interface { + AssignPropertiesFrom(src *storage.SignalROperatorSecrets) error + AssignPropertiesTo(dst *storage.SignalROperatorSecrets) error +} + +type augmentConversionForUpstreamTemplate interface { + AssignPropertiesFrom(src *storage.UpstreamTemplate) error + AssignPropertiesTo(dst *storage.UpstreamTemplate) error +} + +type augmentConversionForUpstreamTemplate_STATUS interface { + AssignPropertiesFrom(src *storage.UpstreamTemplate_STATUS) error + AssignPropertiesTo(dst *storage.UpstreamTemplate_STATUS) error +} + +type augmentConversionForUserAssignedIdentityDetails interface { + AssignPropertiesFrom(src *storage.UserAssignedIdentityDetails) error + AssignPropertiesTo(dst *storage.UserAssignedIdentityDetails) error +} + +type augmentConversionForUserAssignedIdentityProperty_STATUS interface { + AssignPropertiesFrom(src *storage.UserAssignedIdentityProperty_STATUS) error + AssignPropertiesTo(dst *storage.UserAssignedIdentityProperty_STATUS) error +} + // Storage version of v1api20211001.UpstreamAuthSettings // Upstream auth settings. If not set, no auth is used for upstream messages. type UpstreamAuthSettings struct { @@ -547,6 +4355,86 @@ type UpstreamAuthSettings struct { Type *string `json:"type,omitempty"` } +// AssignProperties_From_UpstreamAuthSettings populates our UpstreamAuthSettings from the provided source UpstreamAuthSettings +func (settings *UpstreamAuthSettings) AssignProperties_From_UpstreamAuthSettings(source *storage.UpstreamAuthSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ManagedIdentity + if source.ManagedIdentity != nil { + var managedIdentity ManagedIdentitySettings + err := managedIdentity.AssignProperties_From_ManagedIdentitySettings(source.ManagedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentitySettings() to populate field ManagedIdentity") + } + settings.ManagedIdentity = &managedIdentity + } else { + settings.ManagedIdentity = nil + } + + // Type + settings.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamAuthSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForUpstreamAuthSettings); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UpstreamAuthSettings populates the provided destination UpstreamAuthSettings from our UpstreamAuthSettings +func (settings *UpstreamAuthSettings) AssignProperties_To_UpstreamAuthSettings(destination *storage.UpstreamAuthSettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // ManagedIdentity + if settings.ManagedIdentity != nil { + var managedIdentity storage.ManagedIdentitySettings + err := settings.ManagedIdentity.AssignProperties_To_ManagedIdentitySettings(&managedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentitySettings() to populate field ManagedIdentity") + } + destination.ManagedIdentity = &managedIdentity + } else { + destination.ManagedIdentity = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(settings.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamAuthSettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForUpstreamAuthSettings); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.UpstreamAuthSettings_STATUS // Upstream auth settings. If not set, no auth is used for upstream messages. type UpstreamAuthSettings_STATUS struct { @@ -555,6 +4443,96 @@ type UpstreamAuthSettings_STATUS struct { Type *string `json:"type,omitempty"` } +// AssignProperties_From_UpstreamAuthSettings_STATUS populates our UpstreamAuthSettings_STATUS from the provided source UpstreamAuthSettings_STATUS +func (settings *UpstreamAuthSettings_STATUS) AssignProperties_From_UpstreamAuthSettings_STATUS(source *storage.UpstreamAuthSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ManagedIdentity + if source.ManagedIdentity != nil { + var managedIdentity ManagedIdentitySettings_STATUS + err := managedIdentity.AssignProperties_From_ManagedIdentitySettings_STATUS(source.ManagedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentitySettings_STATUS() to populate field ManagedIdentity") + } + settings.ManagedIdentity = &managedIdentity + } else { + settings.ManagedIdentity = nil + } + + // Type + settings.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamAuthSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForUpstreamAuthSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UpstreamAuthSettings_STATUS populates the provided destination UpstreamAuthSettings_STATUS from our UpstreamAuthSettings_STATUS +func (settings *UpstreamAuthSettings_STATUS) AssignProperties_To_UpstreamAuthSettings_STATUS(destination *storage.UpstreamAuthSettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // ManagedIdentity + if settings.ManagedIdentity != nil { + var managedIdentity storage.ManagedIdentitySettings_STATUS + err := settings.ManagedIdentity.AssignProperties_To_ManagedIdentitySettings_STATUS(&managedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentitySettings_STATUS() to populate field ManagedIdentity") + } + destination.ManagedIdentity = &managedIdentity + } else { + destination.ManagedIdentity = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(settings.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUpstreamAuthSettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForUpstreamAuthSettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForUpstreamAuthSettings interface { + AssignPropertiesFrom(src *storage.UpstreamAuthSettings) error + AssignPropertiesTo(dst *storage.UpstreamAuthSettings) error +} + +type augmentConversionForUpstreamAuthSettings_STATUS interface { + AssignPropertiesFrom(src *storage.UpstreamAuthSettings_STATUS) error + AssignPropertiesTo(dst *storage.UpstreamAuthSettings_STATUS) error +} + // Storage version of v1api20211001.ManagedIdentitySettings // Managed identity settings for upstream. type ManagedIdentitySettings struct { @@ -562,6 +4540,62 @@ type ManagedIdentitySettings struct { Resource *string `json:"resource,omitempty"` } +// AssignProperties_From_ManagedIdentitySettings populates our ManagedIdentitySettings from the provided source ManagedIdentitySettings +func (settings *ManagedIdentitySettings) AssignProperties_From_ManagedIdentitySettings(source *storage.ManagedIdentitySettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Resource + settings.Resource = genruntime.ClonePointerToString(source.Resource) + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentitySettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForManagedIdentitySettings); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentitySettings populates the provided destination ManagedIdentitySettings from our ManagedIdentitySettings +func (settings *ManagedIdentitySettings) AssignProperties_To_ManagedIdentitySettings(destination *storage.ManagedIdentitySettings) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // Resource + destination.Resource = genruntime.ClonePointerToString(settings.Resource) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentitySettings interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForManagedIdentitySettings); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20211001.ManagedIdentitySettings_STATUS // Managed identity settings for upstream. type ManagedIdentitySettings_STATUS struct { @@ -569,6 +4603,72 @@ type ManagedIdentitySettings_STATUS struct { Resource *string `json:"resource,omitempty"` } +// AssignProperties_From_ManagedIdentitySettings_STATUS populates our ManagedIdentitySettings_STATUS from the provided source ManagedIdentitySettings_STATUS +func (settings *ManagedIdentitySettings_STATUS) AssignProperties_From_ManagedIdentitySettings_STATUS(source *storage.ManagedIdentitySettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Resource + settings.Resource = genruntime.ClonePointerToString(source.Resource) + + // Update the property bag + if len(propertyBag) > 0 { + settings.PropertyBag = propertyBag + } else { + settings.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentitySettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForManagedIdentitySettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentitySettings_STATUS populates the provided destination ManagedIdentitySettings_STATUS from our ManagedIdentitySettings_STATUS +func (settings *ManagedIdentitySettings_STATUS) AssignProperties_To_ManagedIdentitySettings_STATUS(destination *storage.ManagedIdentitySettings_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(settings.PropertyBag) + + // Resource + destination.Resource = genruntime.ClonePointerToString(settings.Resource) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForManagedIdentitySettings_STATUS interface (if implemented) to customize the conversion + var settingsAsAny any = settings + if augmentedSettings, ok := settingsAsAny.(augmentConversionForManagedIdentitySettings_STATUS); ok { + err := augmentedSettings.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForManagedIdentitySettings interface { + AssignPropertiesFrom(src *storage.ManagedIdentitySettings) error + AssignPropertiesTo(dst *storage.ManagedIdentitySettings) error +} + +type augmentConversionForManagedIdentitySettings_STATUS interface { + AssignPropertiesFrom(src *storage.ManagedIdentitySettings_STATUS) error + AssignPropertiesTo(dst *storage.ManagedIdentitySettings_STATUS) error +} + func init() { SchemeBuilder.Register(&SignalR{}, &SignalRList{}) } diff --git a/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen_test.go b/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen_test.go index 67df8fe783a..e2570ec4a03 100644 --- a/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen_test.go +++ b/v2/api/signalrservice/v1api20211001/storage/signal_r_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -17,6 +18,48 @@ import ( "testing" ) +func Test_ManagedIdentity_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentity to ManagedIdentity via AssignProperties_To_ManagedIdentity & AssignProperties_From_ManagedIdentity returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentity, ManagedIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentity tests if a specific instance of ManagedIdentity can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentity(subject ManagedIdentity) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentity + err := copied.AssignProperties_To_ManagedIdentity(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentity + err = actual.AssignProperties_From_ManagedIdentity(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ManagedIdentity_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -91,6 +134,48 @@ func AddRelatedPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) } +func Test_ManagedIdentitySettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentitySettings to ManagedIdentitySettings via AssignProperties_To_ManagedIdentitySettings & AssignProperties_From_ManagedIdentitySettings returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentitySettings, ManagedIdentitySettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentitySettings tests if a specific instance of ManagedIdentitySettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentitySettings(subject ManagedIdentitySettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentitySettings + err := copied.AssignProperties_To_ManagedIdentitySettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentitySettings + err = actual.AssignProperties_From_ManagedIdentitySettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ManagedIdentitySettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -152,6 +237,48 @@ func AddIndependentPropertyGeneratorsForManagedIdentitySettings(gens map[string] gens["Resource"] = gen.PtrOf(gen.AlphaString()) } +func Test_ManagedIdentitySettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentitySettings_STATUS to ManagedIdentitySettings_STATUS via AssignProperties_To_ManagedIdentitySettings_STATUS & AssignProperties_From_ManagedIdentitySettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentitySettings_STATUS, ManagedIdentitySettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentitySettings_STATUS tests if a specific instance of ManagedIdentitySettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentitySettings_STATUS(subject ManagedIdentitySettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentitySettings_STATUS + err := copied.AssignProperties_To_ManagedIdentitySettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentitySettings_STATUS + err = actual.AssignProperties_From_ManagedIdentitySettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ManagedIdentitySettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -213,6 +340,48 @@ func AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(gens map[ gens["Resource"] = gen.PtrOf(gen.AlphaString()) } +func Test_ManagedIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentity_STATUS to ManagedIdentity_STATUS via AssignProperties_To_ManagedIdentity_STATUS & AssignProperties_From_ManagedIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentity_STATUS, ManagedIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentity_STATUS tests if a specific instance of ManagedIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentity_STATUS(subject ManagedIdentity_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentity_STATUS + err := copied.AssignProperties_To_ManagedIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentity_STATUS + err = actual.AssignProperties_From_ManagedIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ManagedIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -292,6 +461,48 @@ func AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopte UserAssignedIdentityProperty_STATUSGenerator()) } +func Test_NetworkACL_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkACL to NetworkACL via AssignProperties_To_NetworkACL & AssignProperties_From_NetworkACL returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkACL, NetworkACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkACL tests if a specific instance of NetworkACL can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkACL(subject NetworkACL) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.NetworkACL + err := copied.AssignProperties_To_NetworkACL(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkACL + err = actual.AssignProperties_From_NetworkACL(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_NetworkACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -353,6 +564,48 @@ func AddIndependentPropertyGeneratorsForNetworkACL(gens map[string]gopter.Gen) { gens["Deny"] = gen.SliceOf(gen.AlphaString()) } +func Test_NetworkACL_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkACL_STATUS to NetworkACL_STATUS via AssignProperties_To_NetworkACL_STATUS & AssignProperties_From_NetworkACL_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkACL_STATUS, NetworkACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkACL_STATUS tests if a specific instance of NetworkACL_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkACL_STATUS(subject NetworkACL_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.NetworkACL_STATUS + err := copied.AssignProperties_To_NetworkACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkACL_STATUS + err = actual.AssignProperties_From_NetworkACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_NetworkACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -414,6 +667,48 @@ func AddIndependentPropertyGeneratorsForNetworkACL_STATUS(gens map[string]gopter gens["Deny"] = gen.SliceOf(gen.AlphaString()) } +func Test_PrivateEndpointACL_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointACL to PrivateEndpointACL via AssignProperties_To_PrivateEndpointACL & AssignProperties_From_PrivateEndpointACL returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointACL, PrivateEndpointACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointACL tests if a specific instance of PrivateEndpointACL can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointACL(subject PrivateEndpointACL) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointACL + err := copied.AssignProperties_To_PrivateEndpointACL(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointACL + err = actual.AssignProperties_From_PrivateEndpointACL(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_PrivateEndpointACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -476,6 +771,48 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointACL(gens map[string]gopte gens["Name"] = gen.PtrOf(gen.AlphaString()) } +func Test_PrivateEndpointACL_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointACL_STATUS to PrivateEndpointACL_STATUS via AssignProperties_To_PrivateEndpointACL_STATUS & AssignProperties_From_PrivateEndpointACL_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointACL_STATUS, PrivateEndpointACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointACL_STATUS tests if a specific instance of PrivateEndpointACL_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointACL_STATUS(subject PrivateEndpointACL_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointACL_STATUS + err := copied.AssignProperties_To_PrivateEndpointACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointACL_STATUS + err = actual.AssignProperties_From_PrivateEndpointACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_PrivateEndpointACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -539,6 +876,48 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(gens map[strin gens["Name"] = gen.PtrOf(gen.AlphaString()) } +func Test_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded to PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded via AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded & AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded tests if a specific instance of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(subject PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err = actual.AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -600,29 +979,71 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR gens["Id"] = gen.PtrOf(gen.AlphaString()) } -func Test_ResourceLogCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { +func Test_ResourceLogCategory_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() - parameters.MinSuccessfulTests = 100 - parameters.MaxSize = 3 + parameters.MaxSize = 10 properties := gopter.NewProperties(parameters) properties.Property( - "Round trip of ResourceLogCategory via JSON returns original", - prop.ForAll(RunJSONSerializationTestForResourceLogCategory, ResourceLogCategoryGenerator())) - properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) + "Round trip from ResourceLogCategory to ResourceLogCategory via AssignProperties_To_ResourceLogCategory & AssignProperties_From_ResourceLogCategory returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogCategory, ResourceLogCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) } -// RunJSONSerializationTestForResourceLogCategory runs a test to see if a specific instance of ResourceLogCategory round trips to JSON and back losslessly -func RunJSONSerializationTestForResourceLogCategory(subject ResourceLogCategory) string { - // Serialize to JSON - bin, err := json.Marshal(subject) +// RunPropertyAssignmentTestForResourceLogCategory tests if a specific instance of ResourceLogCategory can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogCategory(subject ResourceLogCategory) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogCategory + err := copied.AssignProperties_To_ResourceLogCategory(&other) if err != nil { return err.Error() } - // Deserialize back into memory + // Use AssignPropertiesFrom() to convert back to our original type var actual ResourceLogCategory - err = json.Unmarshal(bin, &actual) + err = actual.AssignProperties_From_ResourceLogCategory(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceLogCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory, ResourceLogCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory runs a test to see if a specific instance of ResourceLogCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory(subject ResourceLogCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory + err = json.Unmarshal(bin, &actual) if err != nil { return err.Error() } @@ -662,6 +1083,48 @@ func AddIndependentPropertyGeneratorsForResourceLogCategory(gens map[string]gopt gens["Name"] = gen.PtrOf(gen.AlphaString()) } +func Test_ResourceLogCategory_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogCategory_STATUS to ResourceLogCategory_STATUS via AssignProperties_To_ResourceLogCategory_STATUS & AssignProperties_From_ResourceLogCategory_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogCategory_STATUS, ResourceLogCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogCategory_STATUS tests if a specific instance of ResourceLogCategory_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogCategory_STATUS(subject ResourceLogCategory_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogCategory_STATUS + err := copied.AssignProperties_To_ResourceLogCategory_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogCategory_STATUS + err = actual.AssignProperties_From_ResourceLogCategory_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ResourceLogCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -724,6 +1187,48 @@ func AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(gens map[stri gens["Name"] = gen.PtrOf(gen.AlphaString()) } +func Test_ResourceLogConfiguration_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogConfiguration to ResourceLogConfiguration via AssignProperties_To_ResourceLogConfiguration & AssignProperties_From_ResourceLogConfiguration returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogConfiguration, ResourceLogConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogConfiguration tests if a specific instance of ResourceLogConfiguration can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogConfiguration(subject ResourceLogConfiguration) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogConfiguration + err := copied.AssignProperties_To_ResourceLogConfiguration(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogConfiguration + err = actual.AssignProperties_From_ResourceLogConfiguration(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ResourceLogConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -785,6 +1290,48 @@ func AddRelatedPropertyGeneratorsForResourceLogConfiguration(gens map[string]gop gens["Categories"] = gen.SliceOf(ResourceLogCategoryGenerator()) } +func Test_ResourceLogConfiguration_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogConfiguration_STATUS to ResourceLogConfiguration_STATUS via AssignProperties_To_ResourceLogConfiguration_STATUS & AssignProperties_From_ResourceLogConfiguration_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogConfiguration_STATUS, ResourceLogConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogConfiguration_STATUS tests if a specific instance of ResourceLogConfiguration_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogConfiguration_STATUS(subject ResourceLogConfiguration_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogConfiguration_STATUS + err := copied.AssignProperties_To_ResourceLogConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogConfiguration_STATUS + err = actual.AssignProperties_From_ResourceLogConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ResourceLogConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -846,6 +1393,48 @@ func AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(gens map[str gens["Categories"] = gen.SliceOf(ResourceLogCategory_STATUSGenerator()) } +func Test_ResourceSku_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceSku to ResourceSku via AssignProperties_To_ResourceSku & AssignProperties_From_ResourceSku returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceSku, ResourceSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceSku tests if a specific instance of ResourceSku can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceSku(subject ResourceSku) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceSku + err := copied.AssignProperties_To_ResourceSku(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceSku + err = actual.AssignProperties_From_ResourceSku(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ResourceSku_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -908,6 +1497,48 @@ func AddIndependentPropertyGeneratorsForResourceSku(gens map[string]gopter.Gen) gens["Tier"] = gen.PtrOf(gen.AlphaString()) } +func Test_ResourceSku_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceSku_STATUS to ResourceSku_STATUS via AssignProperties_To_ResourceSku_STATUS & AssignProperties_From_ResourceSku_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceSku_STATUS, ResourceSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceSku_STATUS tests if a specific instance of ResourceSku_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceSku_STATUS(subject ResourceSku_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceSku_STATUS + err := copied.AssignProperties_To_ResourceSku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceSku_STATUS + err = actual.AssignProperties_From_ResourceSku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ResourceSku_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -972,6 +1603,48 @@ func AddIndependentPropertyGeneratorsForResourceSku_STATUS(gens map[string]gopte gens["Tier"] = gen.PtrOf(gen.AlphaString()) } +func Test_ServerlessUpstreamSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ServerlessUpstreamSettings to ServerlessUpstreamSettings via AssignProperties_To_ServerlessUpstreamSettings & AssignProperties_From_ServerlessUpstreamSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForServerlessUpstreamSettings, ServerlessUpstreamSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForServerlessUpstreamSettings tests if a specific instance of ServerlessUpstreamSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForServerlessUpstreamSettings(subject ServerlessUpstreamSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ServerlessUpstreamSettings + err := copied.AssignProperties_To_ServerlessUpstreamSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ServerlessUpstreamSettings + err = actual.AssignProperties_From_ServerlessUpstreamSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ServerlessUpstreamSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1033,6 +1706,48 @@ func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(gens map[string]g gens["Templates"] = gen.SliceOf(UpstreamTemplateGenerator()) } +func Test_ServerlessUpstreamSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ServerlessUpstreamSettings_STATUS to ServerlessUpstreamSettings_STATUS via AssignProperties_To_ServerlessUpstreamSettings_STATUS & AssignProperties_From_ServerlessUpstreamSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS, ServerlessUpstreamSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS tests if a specific instance of ServerlessUpstreamSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS(subject ServerlessUpstreamSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ServerlessUpstreamSettings_STATUS + err := copied.AssignProperties_To_ServerlessUpstreamSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ServerlessUpstreamSettings_STATUS + err = actual.AssignProperties_From_ServerlessUpstreamSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_ServerlessUpstreamSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1094,6 +1809,48 @@ func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(gens map[s gens["Templates"] = gen.SliceOf(UpstreamTemplate_STATUSGenerator()) } +func Test_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded to SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded via AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded & AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded returns original", + prop.ForAll(RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded tests if a specific instance of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(subject SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := copied.AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err = actual.AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1155,6 +1912,91 @@ func AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR gens["Id"] = gen.PtrOf(gen.AlphaString()) } +func Test_SignalR_WhenConvertedToHub_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + parameters.MinSuccessfulTests = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR to hub returns original", + prop.ForAll(RunResourceConversionTestForSignalR, SignalRGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForSignalR tests if a specific instance of SignalR round trips to the hub storage version and back losslessly +func RunResourceConversionTestForSignalR(subject SignalR) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.SignalR + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual SignalR + err = actual.ConvertFrom(&hub) + if err != nil { + return err.Error() + } + + // Compare actual with what we started with + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalR_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR to SignalR via AssignProperties_To_SignalR & AssignProperties_From_SignalR returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalR, SignalRGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalR tests if a specific instance of SignalR can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalR(subject SignalR) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalR + err := copied.AssignProperties_To_SignalR(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalR + err = actual.AssignProperties_From_SignalR(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalR_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1207,13 +2049,55 @@ func SignalRGenerator() gopter.Gen { AddRelatedPropertyGeneratorsForSignalR(generators) signalRGenerator = gen.Struct(reflect.TypeOf(SignalR{}), generators) - return signalRGenerator -} + return signalRGenerator +} + +// AddRelatedPropertyGeneratorsForSignalR is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR(gens map[string]gopter.Gen) { + gens["Spec"] = SignalR_SpecGenerator() + gens["Status"] = SignalR_STATUSGenerator() +} + +func Test_SignalRCorsSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRCorsSettings to SignalRCorsSettings via AssignProperties_To_SignalRCorsSettings & AssignProperties_From_SignalRCorsSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRCorsSettings, SignalRCorsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRCorsSettings tests if a specific instance of SignalRCorsSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRCorsSettings(subject SignalRCorsSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRCorsSettings + err := copied.AssignProperties_To_SignalRCorsSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRCorsSettings + err = actual.AssignProperties_From_SignalRCorsSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } -// AddRelatedPropertyGeneratorsForSignalR is a factory method for creating gopter generators -func AddRelatedPropertyGeneratorsForSignalR(gens map[string]gopter.Gen) { - gens["Spec"] = SignalR_SpecGenerator() - gens["Status"] = SignalR_STATUSGenerator() + return "" } func Test_SignalRCorsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { @@ -1277,6 +2161,48 @@ func AddIndependentPropertyGeneratorsForSignalRCorsSettings(gens map[string]gopt gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) } +func Test_SignalRCorsSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRCorsSettings_STATUS to SignalRCorsSettings_STATUS via AssignProperties_To_SignalRCorsSettings_STATUS & AssignProperties_From_SignalRCorsSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRCorsSettings_STATUS, SignalRCorsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRCorsSettings_STATUS tests if a specific instance of SignalRCorsSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRCorsSettings_STATUS(subject SignalRCorsSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRCorsSettings_STATUS + err := copied.AssignProperties_To_SignalRCorsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRCorsSettings_STATUS + err = actual.AssignProperties_From_SignalRCorsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalRCorsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1338,6 +2264,48 @@ func AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(gens map[stri gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) } +func Test_SignalRFeature_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRFeature to SignalRFeature via AssignProperties_To_SignalRFeature & AssignProperties_From_SignalRFeature returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRFeature, SignalRFeatureGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRFeature tests if a specific instance of SignalRFeature can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRFeature(subject SignalRFeature) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRFeature + err := copied.AssignProperties_To_SignalRFeature(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRFeature + err = actual.AssignProperties_From_SignalRFeature(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalRFeature_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1402,6 +2370,48 @@ func AddIndependentPropertyGeneratorsForSignalRFeature(gens map[string]gopter.Ge gens["Value"] = gen.PtrOf(gen.AlphaString()) } +func Test_SignalRFeature_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRFeature_STATUS to SignalRFeature_STATUS via AssignProperties_To_SignalRFeature_STATUS & AssignProperties_From_SignalRFeature_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRFeature_STATUS, SignalRFeature_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRFeature_STATUS tests if a specific instance of SignalRFeature_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRFeature_STATUS(subject SignalRFeature_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRFeature_STATUS + err := copied.AssignProperties_To_SignalRFeature_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRFeature_STATUS + err = actual.AssignProperties_From_SignalRFeature_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalRFeature_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1467,6 +2477,48 @@ func AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(gens map[string]go gens["Value"] = gen.PtrOf(gen.AlphaString()) } +func Test_SignalRNetworkACLs_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRNetworkACLs to SignalRNetworkACLs via AssignProperties_To_SignalRNetworkACLs & AssignProperties_From_SignalRNetworkACLs returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRNetworkACLs, SignalRNetworkACLsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRNetworkACLs tests if a specific instance of SignalRNetworkACLs can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRNetworkACLs(subject SignalRNetworkACLs) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRNetworkACLs + err := copied.AssignProperties_To_SignalRNetworkACLs(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRNetworkACLs + err = actual.AssignProperties_From_SignalRNetworkACLs(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalRNetworkACLs_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1542,6 +2594,48 @@ func AddRelatedPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Ge gens["PublicNetwork"] = gen.PtrOf(NetworkACLGenerator()) } +func Test_SignalRNetworkACLs_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRNetworkACLs_STATUS to SignalRNetworkACLs_STATUS via AssignProperties_To_SignalRNetworkACLs_STATUS & AssignProperties_From_SignalRNetworkACLs_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS, SignalRNetworkACLs_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS tests if a specific instance of SignalRNetworkACLs_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS(subject SignalRNetworkACLs_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRNetworkACLs_STATUS + err := copied.AssignProperties_To_SignalRNetworkACLs_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRNetworkACLs_STATUS + err = actual.AssignProperties_From_SignalRNetworkACLs_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalRNetworkACLs_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1618,6 +2712,48 @@ func AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]go gens["PublicNetwork"] = gen.PtrOf(NetworkACL_STATUSGenerator()) } +func Test_SignalROperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalROperatorSecrets to SignalROperatorSecrets via AssignProperties_To_SignalROperatorSecrets & AssignProperties_From_SignalROperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalROperatorSecrets, SignalROperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalROperatorSecrets tests if a specific instance of SignalROperatorSecrets can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalROperatorSecrets(subject SignalROperatorSecrets) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalROperatorSecrets + err := copied.AssignProperties_To_SignalROperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalROperatorSecrets + err = actual.AssignProperties_From_SignalROperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalROperatorSecrets_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1673,6 +2809,48 @@ func SignalROperatorSecretsGenerator() gopter.Gen { return signalROperatorSecretsGenerator } +func Test_SignalROperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalROperatorSpec to SignalROperatorSpec via AssignProperties_To_SignalROperatorSpec & AssignProperties_From_SignalROperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalROperatorSpec, SignalROperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalROperatorSpec tests if a specific instance of SignalROperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalROperatorSpec(subject SignalROperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalROperatorSpec + err := copied.AssignProperties_To_SignalROperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalROperatorSpec + err = actual.AssignProperties_From_SignalROperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalROperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1734,6 +2912,48 @@ func AddRelatedPropertyGeneratorsForSignalROperatorSpec(gens map[string]gopter.G gens["Secrets"] = gen.PtrOf(SignalROperatorSecretsGenerator()) } +func Test_SignalRTlsSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRTlsSettings to SignalRTlsSettings via AssignProperties_To_SignalRTlsSettings & AssignProperties_From_SignalRTlsSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRTlsSettings, SignalRTlsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRTlsSettings tests if a specific instance of SignalRTlsSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRTlsSettings(subject SignalRTlsSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRTlsSettings + err := copied.AssignProperties_To_SignalRTlsSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRTlsSettings + err = actual.AssignProperties_From_SignalRTlsSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalRTlsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1786,12 +3006,54 @@ func SignalRTlsSettingsGenerator() gopter.Gen { AddIndependentPropertyGeneratorsForSignalRTlsSettings(generators) signalRTlsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings{}), generators) - return signalRTlsSettingsGenerator -} + return signalRTlsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalRTlsSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRTlsSettings_STATUS to SignalRTlsSettings_STATUS via AssignProperties_To_SignalRTlsSettings_STATUS & AssignProperties_From_SignalRTlsSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRTlsSettings_STATUS, SignalRTlsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRTlsSettings_STATUS tests if a specific instance of SignalRTlsSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRTlsSettings_STATUS(subject SignalRTlsSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRTlsSettings_STATUS + err := copied.AssignProperties_To_SignalRTlsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRTlsSettings_STATUS + err = actual.AssignProperties_From_SignalRTlsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } -// AddIndependentPropertyGeneratorsForSignalRTlsSettings is a factory method for creating gopter generators -func AddIndependentPropertyGeneratorsForSignalRTlsSettings(gens map[string]gopter.Gen) { - gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) + return "" } func Test_SignalRTlsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { @@ -1855,6 +3117,48 @@ func AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(gens map[strin gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) } +func Test_SignalR_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR_STATUS to SignalR_STATUS via AssignProperties_To_SignalR_STATUS & AssignProperties_From_SignalR_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalR_STATUS, SignalR_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalR_STATUS tests if a specific instance of SignalR_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalR_STATUS(subject SignalR_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalR_STATUS + err := copied.AssignProperties_To_SignalR_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalR_STATUS + err = actual.AssignProperties_From_SignalR_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalR_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1956,6 +3260,48 @@ func AddRelatedPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettings_STATUSGenerator()) } +func Test_SignalR_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR_Spec to SignalR_Spec via AssignProperties_To_SignalR_Spec & AssignProperties_From_SignalR_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalR_Spec, SignalR_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalR_Spec tests if a specific instance of SignalR_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalR_Spec(subject SignalR_Spec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalR_Spec + err := copied.AssignProperties_To_SignalR_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalR_Spec + err = actual.AssignProperties_From_SignalR_Spec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SignalR_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2047,6 +3393,48 @@ func AddRelatedPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettingsGenerator()) } +func Test_SystemData_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SystemData_STATUS to SystemData_STATUS via AssignProperties_To_SystemData_STATUS & AssignProperties_From_SystemData_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSystemData_STATUS, SystemData_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSystemData_STATUS tests if a specific instance of SystemData_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSystemData_STATUS(subject SystemData_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SystemData_STATUS + err := copied.AssignProperties_To_SystemData_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SystemData_STATUS + err = actual.AssignProperties_From_SystemData_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_SystemData_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2112,6 +3500,48 @@ func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter gens["LastModifiedByType"] = gen.PtrOf(gen.AlphaString()) } +func Test_UpstreamAuthSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamAuthSettings to UpstreamAuthSettings via AssignProperties_To_UpstreamAuthSettings & AssignProperties_From_UpstreamAuthSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamAuthSettings, UpstreamAuthSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamAuthSettings tests if a specific instance of UpstreamAuthSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamAuthSettings(subject UpstreamAuthSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamAuthSettings + err := copied.AssignProperties_To_UpstreamAuthSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamAuthSettings + err = actual.AssignProperties_From_UpstreamAuthSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_UpstreamAuthSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2187,6 +3617,48 @@ func AddRelatedPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter. gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettingsGenerator()) } +func Test_UpstreamAuthSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamAuthSettings_STATUS to UpstreamAuthSettings_STATUS via AssignProperties_To_UpstreamAuthSettings_STATUS & AssignProperties_From_UpstreamAuthSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS, UpstreamAuthSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS tests if a specific instance of UpstreamAuthSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS(subject UpstreamAuthSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamAuthSettings_STATUS + err := copied.AssignProperties_To_UpstreamAuthSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamAuthSettings_STATUS + err = actual.AssignProperties_From_UpstreamAuthSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_UpstreamAuthSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2262,6 +3734,48 @@ func AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string] gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettings_STATUSGenerator()) } +func Test_UpstreamTemplate_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamTemplate to UpstreamTemplate via AssignProperties_To_UpstreamTemplate & AssignProperties_From_UpstreamTemplate returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamTemplate, UpstreamTemplateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamTemplate tests if a specific instance of UpstreamTemplate can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamTemplate(subject UpstreamTemplate) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamTemplate + err := copied.AssignProperties_To_UpstreamTemplate(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamTemplate + err = actual.AssignProperties_From_UpstreamTemplate(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_UpstreamTemplate_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2339,6 +3853,48 @@ func AddRelatedPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) gens["Auth"] = gen.PtrOf(UpstreamAuthSettingsGenerator()) } +func Test_UpstreamTemplate_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamTemplate_STATUS to UpstreamTemplate_STATUS via AssignProperties_To_UpstreamTemplate_STATUS & AssignProperties_From_UpstreamTemplate_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamTemplate_STATUS, UpstreamTemplate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamTemplate_STATUS tests if a specific instance of UpstreamTemplate_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamTemplate_STATUS(subject UpstreamTemplate_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamTemplate_STATUS + err := copied.AssignProperties_To_UpstreamTemplate_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamTemplate_STATUS + err = actual.AssignProperties_From_UpstreamTemplate_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_UpstreamTemplate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2417,6 +3973,48 @@ func AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopt gens["Auth"] = gen.PtrOf(UpstreamAuthSettings_STATUSGenerator()) } +func Test_UserAssignedIdentityDetails_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserAssignedIdentityDetails to UserAssignedIdentityDetails via AssignProperties_To_UserAssignedIdentityDetails & AssignProperties_From_UserAssignedIdentityDetails returns original", + prop.ForAll(RunPropertyAssignmentTestForUserAssignedIdentityDetails, UserAssignedIdentityDetailsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserAssignedIdentityDetails tests if a specific instance of UserAssignedIdentityDetails can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserAssignedIdentityDetails(subject UserAssignedIdentityDetails) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UserAssignedIdentityDetails + err := copied.AssignProperties_To_UserAssignedIdentityDetails(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserAssignedIdentityDetails + err = actual.AssignProperties_From_UserAssignedIdentityDetails(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_UserAssignedIdentityDetails_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -2472,6 +4070,48 @@ func UserAssignedIdentityDetailsGenerator() gopter.Gen { return userAssignedIdentityDetailsGenerator } +func Test_UserAssignedIdentityProperty_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserAssignedIdentityProperty_STATUS to UserAssignedIdentityProperty_STATUS via AssignProperties_To_UserAssignedIdentityProperty_STATUS & AssignProperties_From_UserAssignedIdentityProperty_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS, UserAssignedIdentityProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS tests if a specific instance of UserAssignedIdentityProperty_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS(subject UserAssignedIdentityProperty_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UserAssignedIdentityProperty_STATUS + err := copied.AssignProperties_To_UserAssignedIdentityProperty_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserAssignedIdentityProperty_STATUS + err = actual.AssignProperties_From_UserAssignedIdentityProperty_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_UserAssignedIdentityProperty_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/signalrservice/v1api20211001/storage/structure.txt b/v2/api/signalrservice/v1api20211001/storage/structure.txt index dac4a756fd5..79e4af1e0ad 100644 --- a/v2/api/signalrservice/v1api20211001/storage/structure.txt +++ b/v2/api/signalrservice/v1api20211001/storage/structure.txt @@ -172,3 +172,41 @@ SignalR: Resource │ ├── PropertyBag: genruntime.PropertyBag │ └── UrlTemplate: *string └── Version: *string +augmentConversionForManagedIdentity: Interface +augmentConversionForManagedIdentitySettings: Interface +augmentConversionForManagedIdentitySettings_STATUS: Interface +augmentConversionForManagedIdentity_STATUS: Interface +augmentConversionForNetworkACL: Interface +augmentConversionForNetworkACL_STATUS: Interface +augmentConversionForPrivateEndpointACL: Interface +augmentConversionForPrivateEndpointACL_STATUS: Interface +augmentConversionForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded: Interface +augmentConversionForResourceLogCategory: Interface +augmentConversionForResourceLogCategory_STATUS: Interface +augmentConversionForResourceLogConfiguration: Interface +augmentConversionForResourceLogConfiguration_STATUS: Interface +augmentConversionForResourceSku: Interface +augmentConversionForResourceSku_STATUS: Interface +augmentConversionForServerlessUpstreamSettings: Interface +augmentConversionForServerlessUpstreamSettings_STATUS: Interface +augmentConversionForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded: Interface +augmentConversionForSignalR: Interface +augmentConversionForSignalRCorsSettings: Interface +augmentConversionForSignalRCorsSettings_STATUS: Interface +augmentConversionForSignalRFeature: Interface +augmentConversionForSignalRFeature_STATUS: Interface +augmentConversionForSignalRNetworkACLs: Interface +augmentConversionForSignalRNetworkACLs_STATUS: Interface +augmentConversionForSignalROperatorSecrets: Interface +augmentConversionForSignalROperatorSpec: Interface +augmentConversionForSignalRTlsSettings: Interface +augmentConversionForSignalRTlsSettings_STATUS: Interface +augmentConversionForSignalR_STATUS: Interface +augmentConversionForSignalR_Spec: Interface +augmentConversionForSystemData_STATUS: Interface +augmentConversionForUpstreamAuthSettings: Interface +augmentConversionForUpstreamAuthSettings_STATUS: Interface +augmentConversionForUpstreamTemplate: Interface +augmentConversionForUpstreamTemplate_STATUS: Interface +augmentConversionForUserAssignedIdentityDetails: Interface +augmentConversionForUserAssignedIdentityProperty_STATUS: Interface diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen.go new file mode 100644 index 00000000000..d661d28dee3 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen.go @@ -0,0 +1,42 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + +type CustomCertificate_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: Custom certificate properties. + Properties *CustomCertificateProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &CustomCertificate_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (certificate CustomCertificate_Spec) GetAPIVersion() string { + return "2024-03-01" +} + +// GetName returns the Name of the resource +func (certificate *CustomCertificate_Spec) GetName() string { + return certificate.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/customCertificates" +func (certificate *CustomCertificate_Spec) GetType() string { + return "Microsoft.SignalRService/signalR/customCertificates" +} + +// Custom certificate properties. +type CustomCertificateProperties struct { + // KeyVaultBaseUri: Base uri of the KeyVault that stores certificate. + KeyVaultBaseUri *string `json:"keyVaultBaseUri,omitempty" optionalConfigMapPair:"KeyVaultBaseUri"` + + // KeyVaultSecretName: Certificate secret name. + KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"` + + // KeyVaultSecretVersion: Certificate secret version. + KeyVaultSecretVersion *string `json:"keyVaultSecretVersion,omitempty"` +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen_test.go new file mode 100644 index 00000000000..5c53903c4e2 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_spec_types_gen_test.go @@ -0,0 +1,156 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomCertificateProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificateProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificateProperties, CustomCertificatePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificateProperties runs a test to see if a specific instance of CustomCertificateProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificateProperties(subject CustomCertificateProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificateProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificateProperties instances for property testing - lazily instantiated by +// CustomCertificatePropertiesGenerator() +var customCertificatePropertiesGenerator gopter.Gen + +// CustomCertificatePropertiesGenerator returns a generator of CustomCertificateProperties instances for property testing. +func CustomCertificatePropertiesGenerator() gopter.Gen { + if customCertificatePropertiesGenerator != nil { + return customCertificatePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificateProperties(generators) + customCertificatePropertiesGenerator = gen.Struct(reflect.TypeOf(CustomCertificateProperties{}), generators) + + return customCertificatePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificateProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificateProperties(gens map[string]gopter.Gen) { + gens["KeyVaultBaseUri"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretName"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretVersion"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_CustomCertificate_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate_Spec, CustomCertificate_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate_Spec runs a test to see if a specific instance of CustomCertificate_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate_Spec(subject CustomCertificate_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate_Spec instances for property testing - lazily instantiated by +// CustomCertificate_SpecGenerator() +var customCertificate_SpecGenerator gopter.Gen + +// CustomCertificate_SpecGenerator returns a generator of CustomCertificate_Spec instances for property testing. +// We first initialize customCertificate_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomCertificate_SpecGenerator() gopter.Gen { + if customCertificate_SpecGenerator != nil { + return customCertificate_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_Spec(generators) + customCertificate_SpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_Spec(generators) + AddRelatedPropertyGeneratorsForCustomCertificate_Spec(generators) + customCertificate_SpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_Spec{}), generators) + + return customCertificate_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificate_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificate_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForCustomCertificate_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(CustomCertificatePropertiesGenerator()) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen.go new file mode 100644 index 00000000000..00cd9619101 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen.go @@ -0,0 +1,120 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type CustomCertificate_STATUS struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // Properties: Custom certificate properties. + Properties *CustomCertificateProperties_STATUS `json:"properties,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +// Custom certificate properties. +type CustomCertificateProperties_STATUS struct { + // KeyVaultBaseUri: Base uri of the KeyVault that stores certificate. + KeyVaultBaseUri *string `json:"keyVaultBaseUri,omitempty"` + + // KeyVaultSecretName: Certificate secret name. + KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"` + + // KeyVaultSecretVersion: Certificate secret version. + KeyVaultSecretVersion *string `json:"keyVaultSecretVersion,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` +} + +// Metadata pertaining to creation and last modification of the resource. +type SystemData_STATUS struct { + // CreatedAt: The timestamp of resource creation (UTC). + CreatedAt *string `json:"createdAt,omitempty"` + + // CreatedBy: The identity that created the resource. + CreatedBy *string `json:"createdBy,omitempty"` + + // CreatedByType: The type of identity that created the resource. + CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"` + + // LastModifiedAt: The timestamp of resource last modification (UTC) + LastModifiedAt *string `json:"lastModifiedAt,omitempty"` + + // LastModifiedBy: The identity that last modified the resource. + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + + // LastModifiedByType: The type of identity that last modified the resource. + LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"` +} + +// Provisioning state of the resource. +type ProvisioningState_STATUS string + +const ( + ProvisioningState_STATUS_Canceled = ProvisioningState_STATUS("Canceled") + ProvisioningState_STATUS_Creating = ProvisioningState_STATUS("Creating") + ProvisioningState_STATUS_Deleting = ProvisioningState_STATUS("Deleting") + ProvisioningState_STATUS_Failed = ProvisioningState_STATUS("Failed") + ProvisioningState_STATUS_Moving = ProvisioningState_STATUS("Moving") + ProvisioningState_STATUS_Running = ProvisioningState_STATUS("Running") + ProvisioningState_STATUS_Succeeded = ProvisioningState_STATUS("Succeeded") + ProvisioningState_STATUS_Unknown = ProvisioningState_STATUS("Unknown") + ProvisioningState_STATUS_Updating = ProvisioningState_STATUS("Updating") +) + +// Mapping from string to ProvisioningState_STATUS +var provisioningState_STATUS_Values = map[string]ProvisioningState_STATUS{ + "canceled": ProvisioningState_STATUS_Canceled, + "creating": ProvisioningState_STATUS_Creating, + "deleting": ProvisioningState_STATUS_Deleting, + "failed": ProvisioningState_STATUS_Failed, + "moving": ProvisioningState_STATUS_Moving, + "running": ProvisioningState_STATUS_Running, + "succeeded": ProvisioningState_STATUS_Succeeded, + "unknown": ProvisioningState_STATUS_Unknown, + "updating": ProvisioningState_STATUS_Updating, +} + +type SystemData_CreatedByType_STATUS string + +const ( + SystemData_CreatedByType_STATUS_Application = SystemData_CreatedByType_STATUS("Application") + SystemData_CreatedByType_STATUS_Key = SystemData_CreatedByType_STATUS("Key") + SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity") + SystemData_CreatedByType_STATUS_User = SystemData_CreatedByType_STATUS("User") +) + +// Mapping from string to SystemData_CreatedByType_STATUS +var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{ + "application": SystemData_CreatedByType_STATUS_Application, + "key": SystemData_CreatedByType_STATUS_Key, + "managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity, + "user": SystemData_CreatedByType_STATUS_User, +} + +type SystemData_LastModifiedByType_STATUS string + +const ( + SystemData_LastModifiedByType_STATUS_Application = SystemData_LastModifiedByType_STATUS("Application") + SystemData_LastModifiedByType_STATUS_Key = SystemData_LastModifiedByType_STATUS("Key") + SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity") + SystemData_LastModifiedByType_STATUS_User = SystemData_LastModifiedByType_STATUS("User") +) + +// Mapping from string to SystemData_LastModifiedByType_STATUS +var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{ + "application": SystemData_LastModifiedByType_STATUS_Application, + "key": SystemData_LastModifiedByType_STATUS_Key, + "managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity, + "user": SystemData_LastModifiedByType_STATUS_User, +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen_test.go new file mode 100644 index 00000000000..be33841a4c1 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_certificate_status_types_gen_test.go @@ -0,0 +1,242 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomCertificateProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificateProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificateProperties_STATUS, CustomCertificateProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificateProperties_STATUS runs a test to see if a specific instance of CustomCertificateProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificateProperties_STATUS(subject CustomCertificateProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificateProperties_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificateProperties_STATUS instances for property testing - lazily instantiated by +// CustomCertificateProperties_STATUSGenerator() +var customCertificateProperties_STATUSGenerator gopter.Gen + +// CustomCertificateProperties_STATUSGenerator returns a generator of CustomCertificateProperties_STATUS instances for property testing. +func CustomCertificateProperties_STATUSGenerator() gopter.Gen { + if customCertificateProperties_STATUSGenerator != nil { + return customCertificateProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificateProperties_STATUS(generators) + customCertificateProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificateProperties_STATUS{}), generators) + + return customCertificateProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificateProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificateProperties_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultBaseUri"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretName"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretVersion"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) +} + +func Test_CustomCertificate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate_STATUS, CustomCertificate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate_STATUS runs a test to see if a specific instance of CustomCertificate_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate_STATUS(subject CustomCertificate_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate_STATUS instances for property testing - lazily instantiated by +// CustomCertificate_STATUSGenerator() +var customCertificate_STATUSGenerator gopter.Gen + +// CustomCertificate_STATUSGenerator returns a generator of CustomCertificate_STATUS instances for property testing. +// We first initialize customCertificate_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomCertificate_STATUSGenerator() gopter.Gen { + if customCertificate_STATUSGenerator != nil { + return customCertificate_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(generators) + customCertificate_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomCertificate_STATUS(generators) + customCertificate_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_STATUS{}), generators) + + return customCertificate_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificate_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomCertificate_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(CustomCertificateProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_SystemData_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SystemData_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSystemData_STATUS, SystemData_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSystemData_STATUS runs a test to see if a specific instance of SystemData_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSystemData_STATUS(subject SystemData_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SystemData_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SystemData_STATUS instances for property testing - lazily instantiated by SystemData_STATUSGenerator() +var systemData_STATUSGenerator gopter.Gen + +// SystemData_STATUSGenerator returns a generator of SystemData_STATUS instances for property testing. +func SystemData_STATUSGenerator() gopter.Gen { + if systemData_STATUSGenerator != nil { + return systemData_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSystemData_STATUS(generators) + systemData_STATUSGenerator = gen.Struct(reflect.TypeOf(SystemData_STATUS{}), generators) + + return systemData_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSystemData_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter.Gen) { + gens["CreatedAt"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedBy"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedByType"] = gen.PtrOf(gen.OneConstOf( + SystemData_CreatedByType_STATUS_Application, + SystemData_CreatedByType_STATUS_Key, + SystemData_CreatedByType_STATUS_ManagedIdentity, + SystemData_CreatedByType_STATUS_User)) + gens["LastModifiedAt"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedBy"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedByType"] = gen.PtrOf(gen.OneConstOf( + SystemData_LastModifiedByType_STATUS_Application, + SystemData_LastModifiedByType_STATUS_Key, + SystemData_LastModifiedByType_STATUS_ManagedIdentity, + SystemData_LastModifiedByType_STATUS_User)) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen.go new file mode 100644 index 00000000000..50b07637f6a --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen.go @@ -0,0 +1,44 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + +type CustomDomain_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: Properties of a custom domain. + Properties *CustomDomainProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &CustomDomain_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (domain CustomDomain_Spec) GetAPIVersion() string { + return "2024-03-01" +} + +// GetName returns the Name of the resource +func (domain *CustomDomain_Spec) GetName() string { + return domain.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/customDomains" +func (domain *CustomDomain_Spec) GetType() string { + return "Microsoft.SignalRService/signalR/customDomains" +} + +// Properties of a custom domain. +type CustomDomainProperties struct { + // CustomCertificate: Reference to a resource. + CustomCertificate *ResourceReference `json:"customCertificate,omitempty"` + + // DomainName: The custom domain name. + DomainName *string `json:"domainName,omitempty"` +} + +// Reference to a resource. +type ResourceReference struct { + Id *string `json:"id,omitempty"` +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen_test.go new file mode 100644 index 00000000000..d61238caaf5 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_domain_spec_types_gen_test.go @@ -0,0 +1,227 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomDomainProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomainProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomainProperties, CustomDomainPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomainProperties runs a test to see if a specific instance of CustomDomainProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomainProperties(subject CustomDomainProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomainProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomainProperties instances for property testing - lazily instantiated by +// CustomDomainPropertiesGenerator() +var customDomainPropertiesGenerator gopter.Gen + +// CustomDomainPropertiesGenerator returns a generator of CustomDomainProperties instances for property testing. +// We first initialize customDomainPropertiesGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomainPropertiesGenerator() gopter.Gen { + if customDomainPropertiesGenerator != nil { + return customDomainPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomainProperties(generators) + customDomainPropertiesGenerator = gen.Struct(reflect.TypeOf(CustomDomainProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomainProperties(generators) + AddRelatedPropertyGeneratorsForCustomDomainProperties(generators) + customDomainPropertiesGenerator = gen.Struct(reflect.TypeOf(CustomDomainProperties{}), generators) + + return customDomainPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomainProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomainProperties(gens map[string]gopter.Gen) { + gens["DomainName"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomDomainProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomainProperties(gens map[string]gopter.Gen) { + gens["CustomCertificate"] = gen.PtrOf(ResourceReferenceGenerator()) +} + +func Test_CustomDomain_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain_Spec, CustomDomain_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain_Spec runs a test to see if a specific instance of CustomDomain_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain_Spec(subject CustomDomain_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain_Spec instances for property testing - lazily instantiated by CustomDomain_SpecGenerator() +var customDomain_SpecGenerator gopter.Gen + +// CustomDomain_SpecGenerator returns a generator of CustomDomain_Spec instances for property testing. +// We first initialize customDomain_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomain_SpecGenerator() gopter.Gen { + if customDomain_SpecGenerator != nil { + return customDomain_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_Spec(generators) + customDomain_SpecGenerator = gen.Struct(reflect.TypeOf(CustomDomain_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_Spec(generators) + AddRelatedPropertyGeneratorsForCustomDomain_Spec(generators) + customDomain_SpecGenerator = gen.Struct(reflect.TypeOf(CustomDomain_Spec{}), generators) + + return customDomain_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomain_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomain_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForCustomDomain_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(CustomDomainPropertiesGenerator()) +} + +func Test_ResourceReference_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceReference via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceReference, ResourceReferenceGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceReference runs a test to see if a specific instance of ResourceReference round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceReference(subject ResourceReference) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceReference + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceReference instances for property testing - lazily instantiated by ResourceReferenceGenerator() +var resourceReferenceGenerator gopter.Gen + +// ResourceReferenceGenerator returns a generator of ResourceReference instances for property testing. +func ResourceReferenceGenerator() gopter.Gen { + if resourceReferenceGenerator != nil { + return resourceReferenceGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceReference(generators) + resourceReferenceGenerator = gen.Struct(reflect.TypeOf(ResourceReference{}), generators) + + return resourceReferenceGenerator +} + +// AddIndependentPropertyGeneratorsForResourceReference is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceReference(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen.go new file mode 100644 index 00000000000..ed3f7178ae4 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen.go @@ -0,0 +1,40 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type CustomDomain_STATUS struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // Properties: Properties of a custom domain. + Properties *CustomDomainProperties_STATUS `json:"properties,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +// Properties of a custom domain. +type CustomDomainProperties_STATUS struct { + // CustomCertificate: Reference to a resource. + CustomCertificate *ResourceReference_STATUS `json:"customCertificate,omitempty"` + + // DomainName: The custom domain name. + DomainName *string `json:"domainName,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` +} + +// Reference to a resource. +type ResourceReference_STATUS struct { + // Id: Resource ID. + Id *string `json:"id,omitempty"` +} diff --git a/v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen_test.go new file mode 100644 index 00000000000..698d37406f4 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/custom_domain_status_types_gen_test.go @@ -0,0 +1,242 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomDomainProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomainProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomainProperties_STATUS, CustomDomainProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomainProperties_STATUS runs a test to see if a specific instance of CustomDomainProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomainProperties_STATUS(subject CustomDomainProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomainProperties_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomainProperties_STATUS instances for property testing - lazily instantiated by +// CustomDomainProperties_STATUSGenerator() +var customDomainProperties_STATUSGenerator gopter.Gen + +// CustomDomainProperties_STATUSGenerator returns a generator of CustomDomainProperties_STATUS instances for property testing. +// We first initialize customDomainProperties_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomainProperties_STATUSGenerator() gopter.Gen { + if customDomainProperties_STATUSGenerator != nil { + return customDomainProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomainProperties_STATUS(generators) + customDomainProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomainProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomainProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomDomainProperties_STATUS(generators) + customDomainProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomainProperties_STATUS{}), generators) + + return customDomainProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomainProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomainProperties_STATUS(gens map[string]gopter.Gen) { + gens["DomainName"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) +} + +// AddRelatedPropertyGeneratorsForCustomDomainProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomainProperties_STATUS(gens map[string]gopter.Gen) { + gens["CustomCertificate"] = gen.PtrOf(ResourceReference_STATUSGenerator()) +} + +func Test_CustomDomain_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain_STATUS, CustomDomain_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain_STATUS runs a test to see if a specific instance of CustomDomain_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain_STATUS(subject CustomDomain_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain_STATUS instances for property testing - lazily instantiated by +// CustomDomain_STATUSGenerator() +var customDomain_STATUSGenerator gopter.Gen + +// CustomDomain_STATUSGenerator returns a generator of CustomDomain_STATUS instances for property testing. +// We first initialize customDomain_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomain_STATUSGenerator() gopter.Gen { + if customDomain_STATUSGenerator != nil { + return customDomain_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_STATUS(generators) + customDomain_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomain_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomDomain_STATUS(generators) + customDomain_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomain_STATUS{}), generators) + + return customDomain_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomain_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomain_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomDomain_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(CustomDomainProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_ResourceReference_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceReference_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceReference_STATUS, ResourceReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceReference_STATUS runs a test to see if a specific instance of ResourceReference_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceReference_STATUS(subject ResourceReference_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceReference_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceReference_STATUS instances for property testing - lazily instantiated by +// ResourceReference_STATUSGenerator() +var resourceReference_STATUSGenerator gopter.Gen + +// ResourceReference_STATUSGenerator returns a generator of ResourceReference_STATUS instances for property testing. +func ResourceReference_STATUSGenerator() gopter.Gen { + if resourceReference_STATUSGenerator != nil { + return resourceReference_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceReference_STATUS(generators) + resourceReference_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceReference_STATUS{}), generators) + + return resourceReference_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceReference_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceReference_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen.go new file mode 100644 index 00000000000..e566f4f9182 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen.go @@ -0,0 +1,88 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + +type Replica_Spec struct { + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + Properties *ReplicaProperties `json:"properties,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku `json:"sku,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &Replica_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (replica Replica_Spec) GetAPIVersion() string { + return "2024-03-01" +} + +// GetName returns the Name of the resource +func (replica *Replica_Spec) GetName() string { + return replica.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/replicas" +func (replica *Replica_Spec) GetType() string { + return "Microsoft.SignalRService/signalR/replicas" +} + +type ReplicaProperties struct { + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "false". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` +} + +// The billing information of the resource. +type ResourceSku struct { + // Capacity: Optional, integer. The unit count of the resource. + // 1 for Free_F1/Standard_S1/Premium_P1, 100 for Premium_P2 by default. + // If present, following values are allowed: + // Free_F1: 1; + // Standard_S1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P2: 100,200,300,400,500,600,700,800,900,1000; + Capacity *int `json:"capacity,omitempty"` + + // Name: The name of the SKU. Required. + // Allowed values: Standard_S1, Free_F1, Premium_P1, Premium_P2 + Name *string `json:"name,omitempty"` + + // Tier: Optional tier of this particular SKU. 'Standard' or 'Free'. + // `Basic` is deprecated, use `Standard` instead. + Tier *SignalRSkuTier `json:"tier,omitempty"` +} + +// Optional tier of this particular SKU. 'Standard' or 'Free'. +// `Basic` is deprecated, use `Standard` instead. +// +kubebuilder:validation:Enum={"Basic","Free","Premium","Standard"} +type SignalRSkuTier string + +const ( + SignalRSkuTier_Basic = SignalRSkuTier("Basic") + SignalRSkuTier_Free = SignalRSkuTier("Free") + SignalRSkuTier_Premium = SignalRSkuTier("Premium") + SignalRSkuTier_Standard = SignalRSkuTier("Standard") +) + +// Mapping from string to SignalRSkuTier +var signalRSkuTier_Values = map[string]SignalRSkuTier{ + "basic": SignalRSkuTier_Basic, + "free": SignalRSkuTier_Free, + "premium": SignalRSkuTier_Premium, + "standard": SignalRSkuTier_Standard, +} diff --git a/v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen_test.go new file mode 100644 index 00000000000..c319edc26ed --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/replica_spec_types_gen_test.go @@ -0,0 +1,224 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_ReplicaProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaProperties, ReplicaPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaProperties runs a test to see if a specific instance of ReplicaProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaProperties(subject ReplicaProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaProperties instances for property testing - lazily instantiated by ReplicaPropertiesGenerator() +var replicaPropertiesGenerator gopter.Gen + +// ReplicaPropertiesGenerator returns a generator of ReplicaProperties instances for property testing. +func ReplicaPropertiesGenerator() gopter.Gen { + if replicaPropertiesGenerator != nil { + return replicaPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplicaProperties(generators) + replicaPropertiesGenerator = gen.Struct(reflect.TypeOf(ReplicaProperties{}), generators) + + return replicaPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForReplicaProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplicaProperties(gens map[string]gopter.Gen) { + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Replica_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_Spec runs a test to see if a specific instance of Replica_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_Spec(subject Replica_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_Spec instances for property testing - lazily instantiated by Replica_SpecGenerator() +var replica_SpecGenerator gopter.Gen + +// Replica_SpecGenerator returns a generator of Replica_Spec instances for property testing. +// We first initialize replica_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_SpecGenerator() gopter.Gen { + if replica_SpecGenerator != nil { + return replica_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + AddRelatedPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + return replica_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ReplicaPropertiesGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSkuGenerator()) +} + +func Test_ResourceSku_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceSku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceSku, ResourceSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceSku runs a test to see if a specific instance of ResourceSku round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceSku(subject ResourceSku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceSku + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceSku instances for property testing - lazily instantiated by ResourceSkuGenerator() +var resourceSkuGenerator gopter.Gen + +// ResourceSkuGenerator returns a generator of ResourceSku instances for property testing. +func ResourceSkuGenerator() gopter.Gen { + if resourceSkuGenerator != nil { + return resourceSkuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceSku(generators) + resourceSkuGenerator = gen.Struct(reflect.TypeOf(ResourceSku{}), generators) + + return resourceSkuGenerator +} + +// AddIndependentPropertyGeneratorsForResourceSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceSku(gens map[string]gopter.Gen) { + gens["Capacity"] = gen.PtrOf(gen.Int()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf( + SignalRSkuTier_Basic, + SignalRSkuTier_Free, + SignalRSkuTier_Premium, + SignalRSkuTier_Standard)) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen.go new file mode 100644 index 00000000000..7a8a49ba984 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen.go @@ -0,0 +1,89 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type Replica_STATUS struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + Properties *ReplicaProperties_STATUS `json:"properties,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku_STATUS `json:"sku,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +type ReplicaProperties_STATUS struct { + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "false". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` +} + +// The billing information of the resource. +type ResourceSku_STATUS struct { + // Capacity: Optional, integer. The unit count of the resource. + // 1 for Free_F1/Standard_S1/Premium_P1, 100 for Premium_P2 by default. + // If present, following values are allowed: + // Free_F1: 1; + // Standard_S1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P2: 100,200,300,400,500,600,700,800,900,1000; + Capacity *int `json:"capacity,omitempty"` + + // Family: Not used. Retained for future use. + Family *string `json:"family,omitempty"` + + // Name: The name of the SKU. Required. + // Allowed values: Standard_S1, Free_F1, Premium_P1, Premium_P2 + Name *string `json:"name,omitempty"` + + // Size: Not used. Retained for future use. + Size *string `json:"size,omitempty"` + + // Tier: Optional tier of this particular SKU. 'Standard' or 'Free'. + // `Basic` is deprecated, use `Standard` instead. + Tier *SignalRSkuTier_STATUS `json:"tier,omitempty"` +} + +// Optional tier of this particular SKU. 'Standard' or 'Free'. +// `Basic` is deprecated, use `Standard` instead. +type SignalRSkuTier_STATUS string + +const ( + SignalRSkuTier_STATUS_Basic = SignalRSkuTier_STATUS("Basic") + SignalRSkuTier_STATUS_Free = SignalRSkuTier_STATUS("Free") + SignalRSkuTier_STATUS_Premium = SignalRSkuTier_STATUS("Premium") + SignalRSkuTier_STATUS_Standard = SignalRSkuTier_STATUS("Standard") +) + +// Mapping from string to SignalRSkuTier_STATUS +var signalRSkuTier_STATUS_Values = map[string]SignalRSkuTier_STATUS{ + "basic": SignalRSkuTier_STATUS_Basic, + "free": SignalRSkuTier_STATUS_Free, + "premium": SignalRSkuTier_STATUS_Premium, + "standard": SignalRSkuTier_STATUS_Standard, +} diff --git a/v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen_test.go new file mode 100644 index 00000000000..86ce9e78681 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/replica_status_types_gen_test.go @@ -0,0 +1,240 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_ReplicaProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaProperties_STATUS, ReplicaProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaProperties_STATUS runs a test to see if a specific instance of ReplicaProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaProperties_STATUS(subject ReplicaProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaProperties_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaProperties_STATUS instances for property testing - lazily instantiated by +// ReplicaProperties_STATUSGenerator() +var replicaProperties_STATUSGenerator gopter.Gen + +// ReplicaProperties_STATUSGenerator returns a generator of ReplicaProperties_STATUS instances for property testing. +func ReplicaProperties_STATUSGenerator() gopter.Gen { + if replicaProperties_STATUSGenerator != nil { + return replicaProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplicaProperties_STATUS(generators) + replicaProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ReplicaProperties_STATUS{}), generators) + + return replicaProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplicaProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplicaProperties_STATUS(gens map[string]gopter.Gen) { + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Replica_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_STATUS runs a test to see if a specific instance of Replica_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_STATUS(subject Replica_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_STATUS instances for property testing - lazily instantiated by Replica_STATUSGenerator() +var replica_STATUSGenerator gopter.Gen + +// Replica_STATUSGenerator returns a generator of Replica_STATUS instances for property testing. +// We first initialize replica_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_STATUSGenerator() gopter.Gen { + if replica_STATUSGenerator != nil { + return replica_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + AddRelatedPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + return replica_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ReplicaProperties_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_ResourceSku_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceSku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceSku_STATUS, ResourceSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceSku_STATUS runs a test to see if a specific instance of ResourceSku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceSku_STATUS(subject ResourceSku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceSku_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceSku_STATUS instances for property testing - lazily instantiated by ResourceSku_STATUSGenerator() +var resourceSku_STATUSGenerator gopter.Gen + +// ResourceSku_STATUSGenerator returns a generator of ResourceSku_STATUS instances for property testing. +func ResourceSku_STATUSGenerator() gopter.Gen { + if resourceSku_STATUSGenerator != nil { + return resourceSku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceSku_STATUS(generators) + resourceSku_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceSku_STATUS{}), generators) + + return resourceSku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceSku_STATUS(gens map[string]gopter.Gen) { + gens["Capacity"] = gen.PtrOf(gen.Int()) + gens["Family"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Size"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf( + SignalRSkuTier_STATUS_Basic, + SignalRSkuTier_STATUS_Free, + SignalRSkuTier_STATUS_Premium, + SignalRSkuTier_STATUS_Standard)) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen.go new file mode 100644 index 00000000000..73d5a212143 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen.go @@ -0,0 +1,422 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + +type SignalR_Spec struct { + // Identity: A class represent managed identities used for request and response + Identity *ManagedIdentity `json:"identity,omitempty"` + + // Kind: The kind of the service + Kind *SignalrServiceKind `json:"kind,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + + // Properties: A class that describes the properties of the resource + Properties *SignalRProperties `json:"properties,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku `json:"sku,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &SignalR_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (signalR SignalR_Spec) GetAPIVersion() string { + return "2024-03-01" +} + +// GetName returns the Name of the resource +func (signalR *SignalR_Spec) GetName() string { + return signalR.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR" +func (signalR *SignalR_Spec) GetType() string { + return "Microsoft.SignalRService/signalR" +} + +// A class represent managed identities used for request and response +type ManagedIdentity struct { + // Type: Represents the identity type: systemAssigned, userAssigned, None + Type *ManagedIdentityType `json:"type,omitempty"` + UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// A class that describes the properties of the resource +type SignalRProperties struct { + // Cors: Cross-Origin Resource Sharing (CORS) settings. + Cors *SignalRCorsSettings `json:"cors,omitempty"` + + // DisableAadAuth: DisableLocalAuth + // Enable or disable aad auth + // When set as true, connection with AuthType=aad won't work. + DisableAadAuth *bool `json:"disableAadAuth,omitempty"` + + // DisableLocalAuth: DisableLocalAuth + // Enable or disable local auth with AccessKey + // When set as true, connection with AccessKey=xxx won't work. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // Features: List of the featureFlags. + // FeatureFlags that are not included in the parameters for the update operation will not be modified. + // And the response will only include featureFlags that are explicitly set. + // When a featureFlag is not explicitly set, its globally default value will be used + // But keep in mind, the default value doesn't mean "false". It varies in terms of different FeatureFlags. + Features []SignalRFeature `json:"features,omitempty"` + + // LiveTraceConfiguration: Live trace configuration of a Microsoft.SignalRService resource. + LiveTraceConfiguration *LiveTraceConfiguration `json:"liveTraceConfiguration,omitempty"` + + // NetworkACLs: Network ACLs for the resource + NetworkACLs *SignalRNetworkACLs `json:"networkACLs,omitempty"` + + // PublicNetworkAccess: Enable or disable public network access. Default to "Enabled". + // When it's Enabled, network ACLs still apply. + // When it's Disabled, public network access is always disabled no matter what you set in network ACLs. + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + // This property is replica specific. Disable the regional endpoint without replica is not allowed. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceLogConfiguration: Resource log configuration of a Microsoft.SignalRService resource. + ResourceLogConfiguration *ResourceLogConfiguration `json:"resourceLogConfiguration,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "False". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` + + // Serverless: Serverless settings. + Serverless *ServerlessSettings `json:"serverless,omitempty"` + + // Tls: TLS settings for the resource + Tls *SignalRTlsSettings `json:"tls,omitempty"` + + // Upstream: The settings for the Upstream when the service is in server-less mode. + Upstream *ServerlessUpstreamSettings `json:"upstream,omitempty"` +} + +// The kind of the service +// +kubebuilder:validation:Enum={"RawWebSockets","SignalR"} +type SignalrServiceKind string + +const ( + SignalrServiceKind_RawWebSockets = SignalrServiceKind("RawWebSockets") + SignalrServiceKind_SignalR = SignalrServiceKind("SignalR") +) + +// Mapping from string to SignalrServiceKind +var signalrServiceKind_Values = map[string]SignalrServiceKind{ + "rawwebsockets": SignalrServiceKind_RawWebSockets, + "signalr": SignalrServiceKind_SignalR, +} + +// Live trace configuration of a Microsoft.SignalRService resource. +type LiveTraceConfiguration struct { + // Categories: Gets or sets the list of category configurations. + Categories []LiveTraceCategory `json:"categories,omitempty"` + + // Enabled: Indicates whether or not enable live trace. + // When it's set to true, live trace client can connect to the service. + // Otherwise, live trace client can't connect to the service, so that you are unable to receive any log, no matter what you + // configure in "categories". + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` +} + +// Represents the identity type: systemAssigned, userAssigned, None +// +kubebuilder:validation:Enum={"None","SystemAssigned","UserAssigned"} +type ManagedIdentityType string + +const ( + ManagedIdentityType_None = ManagedIdentityType("None") + ManagedIdentityType_SystemAssigned = ManagedIdentityType("SystemAssigned") + ManagedIdentityType_UserAssigned = ManagedIdentityType("UserAssigned") +) + +// Mapping from string to ManagedIdentityType +var managedIdentityType_Values = map[string]ManagedIdentityType{ + "none": ManagedIdentityType_None, + "systemassigned": ManagedIdentityType_SystemAssigned, + "userassigned": ManagedIdentityType_UserAssigned, +} + +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration struct { + // Categories: Gets or sets the list of category configurations. + Categories []ResourceLogCategory `json:"categories,omitempty"` +} + +// Serverless settings. +type ServerlessSettings struct { + // ConnectionTimeoutInSeconds: Gets or sets Client Connection Timeout. Optional to be set. + // Value in seconds. + // Default value is 30 seconds. + // Customer should set the timeout to a shorter period if messages are expected to be sent in shorter intervals, + // and want the client to disconnect more quickly after the last message is sent. + // You can set the timeout to a longer period if messages are expected to be sent in longer intervals, + // and they want to keep the same client connection alive during this session. + // The service considers the client disconnected if it hasn't received a message (including keep-alive) in this interval. + ConnectionTimeoutInSeconds *int `json:"connectionTimeoutInSeconds,omitempty"` +} + +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings struct { + // Templates: Gets or sets the list of Upstream URL templates. Order matters, and the first matching template takes effects. + Templates []UpstreamTemplate `json:"templates,omitempty"` +} + +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings struct { + // AllowedOrigins: Gets or sets the list of origins that should be allowed to make cross-origin calls (for example: + // http://example.com:12345). Use "*" to allow all. If omitted, allow all by default. + AllowedOrigins []string `json:"allowedOrigins,omitempty"` +} + +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature struct { + // Flag: FeatureFlags is the supported features of Azure SignalR service. + // - ServiceMode: Flag for backend server for SignalR service. Values allowed: "Default": have your own backend server; + // "Serverless": your application doesn't have a backend server; "Classic": for backward compatibility. Support both + // Default and Serverless mode but not recommended; "PredefinedOnly": for future use. + // - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will give you live + // traces in real time, it will be helpful when you developing your own Azure SignalR based web application or + // self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. + // Values allowed: "true"/"false", to enable/disable live trace feature. + Flag *FeatureFlags `json:"flag,omitempty"` + + // Properties: Optional properties related to this feature. + Properties map[string]string `json:"properties,omitempty"` + + // Value: Value of the feature flag. See Azure SignalR service document https://docs.microsoft.com/azure/azure-signalr/ for + // allowed values. + Value *string `json:"value,omitempty"` +} + +// Network ACLs for the resource +type SignalRNetworkACLs struct { + // DefaultAction: Azure Networking ACL Action. + DefaultAction *ACLAction `json:"defaultAction,omitempty"` + + // IpRules: IP rules for filtering public traffic + IpRules []IPRule `json:"ipRules,omitempty"` + + // PrivateEndpoints: ACLs for requests from private endpoints + PrivateEndpoints []PrivateEndpointACL `json:"privateEndpoints,omitempty"` + + // PublicNetwork: Network ACL + PublicNetwork *NetworkACL `json:"publicNetwork,omitempty"` +} + +// TLS settings for the resource +type SignalRTlsSettings struct { + // ClientCertEnabled: Request client certificate during TLS handshake if enabled. Not supported for free tier. Any input + // will be ignored for free tier. + ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"` +} + +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { +} + +// Azure Networking ACL Action. +// +kubebuilder:validation:Enum={"Allow","Deny"} +type ACLAction string + +const ( + ACLAction_Allow = ACLAction("Allow") + ACLAction_Deny = ACLAction("Deny") +) + +// Mapping from string to ACLAction +var aCLAction_Values = map[string]ACLAction{ + "allow": ACLAction_Allow, + "deny": ACLAction_Deny, +} + +// FeatureFlags is the supported features of Azure SignalR service. +// - ServiceMode: Flag for backend server for SignalR +// service. Values allowed: "Default": have your own backend server; "Serverless": your application doesn't have a backend +// server; "Classic": for backward compatibility. Support both Default and Serverless mode but not recommended; +// "PredefinedOnly": for future use. +// - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log +// category respectively. +// - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category +// respectively. +// - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will +// give you live traces in real time, it will be helpful when you developing your own Azure SignalR based web application +// or self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. +// Values allowed: "true"/"false", to enable/disable live trace feature. +// +kubebuilder:validation:Enum={"EnableConnectivityLogs","EnableLiveTrace","EnableMessagingLogs","ServiceMode"} +type FeatureFlags string + +const ( + FeatureFlags_EnableConnectivityLogs = FeatureFlags("EnableConnectivityLogs") + FeatureFlags_EnableLiveTrace = FeatureFlags("EnableLiveTrace") + FeatureFlags_EnableMessagingLogs = FeatureFlags("EnableMessagingLogs") + FeatureFlags_ServiceMode = FeatureFlags("ServiceMode") +) + +// Mapping from string to FeatureFlags +var featureFlags_Values = map[string]FeatureFlags{ + "enableconnectivitylogs": FeatureFlags_EnableConnectivityLogs, + "enablelivetrace": FeatureFlags_EnableLiveTrace, + "enablemessaginglogs": FeatureFlags_EnableMessagingLogs, + "servicemode": FeatureFlags_ServiceMode, +} + +// An IP rule +type IPRule struct { + // Action: Azure Networking ACL Action. + Action *ACLAction `json:"action,omitempty"` + + // Value: An IP or CIDR or ServiceTag + Value *string `json:"value,omitempty"` +} + +// Live trace category configuration of a Microsoft.SignalRService resource. +type LiveTraceCategory struct { + // Enabled: Indicates whether or the live trace category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the live trace category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +// Network ACL +type NetworkACL struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType `json:"deny,omitempty"` +} + +// ACL for a private endpoint +type PrivateEndpointACL struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType `json:"deny,omitempty"` + + // Name: Name of the private endpoint connection + Name *string `json:"name,omitempty"` +} + +// Resource log category configuration of a Microsoft.SignalRService resource. +type ResourceLogCategory struct { + // Enabled: Indicates whether or the resource log category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the resource log category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +// Upstream template item settings. It defines the Upstream URL of the incoming requests. +// The template defines the pattern +// of the event, the hub or the category of the incoming request that matches current URL template. +type UpstreamTemplate struct { + // Auth: Upstream auth settings. If not set, no auth is used for upstream messages. + Auth *UpstreamAuthSettings `json:"auth,omitempty"` + + // CategoryPattern: Gets or sets the matching pattern for category names. If not set, it matches any category. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any category name. + // 2. Combine multiple categories with ",", for example "connections,messages", it matches category "connections" and + // "messages". + // 3. The single category name, for example, "connections", it matches the category "connections". + CategoryPattern *string `json:"categoryPattern,omitempty"` + + // EventPattern: Gets or sets the matching pattern for event names. If not set, it matches any event. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any event name. + // 2. Combine multiple events with ",", for example "connect,disconnect", it matches event "connect" and "disconnect". + // 3. The single event name, for example, "connect", it matches "connect". + EventPattern *string `json:"eventPattern,omitempty"` + + // HubPattern: Gets or sets the matching pattern for hub names. If not set, it matches any hub. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any hub name. + // 2. Combine multiple hubs with ",", for example "hub1,hub2", it matches "hub1" and "hub2". + // 3. The single hub name, for example, "hub1", it matches "hub1". + HubPattern *string `json:"hubPattern,omitempty"` + + // UrlTemplate: Gets or sets the Upstream URL template. You can use 3 predefined parameters {hub}, {category} {event} + // inside the template, the value of the Upstream URL is dynamically calculated when the client request comes in. + // For example, if the urlTemplate is `http://example.com/{hub}/api/{event}`, with a client request from hub `chat` + // connects, it will first POST to this URL: `http://example.com/chat/api/connect`. + UrlTemplate *string `json:"urlTemplate,omitempty"` +} + +// The incoming request type to the service +// +kubebuilder:validation:Enum={"ClientConnection","RESTAPI","ServerConnection","Trace"} +type SignalRRequestType string + +const ( + SignalRRequestType_ClientConnection = SignalRRequestType("ClientConnection") + SignalRRequestType_RESTAPI = SignalRRequestType("RESTAPI") + SignalRRequestType_ServerConnection = SignalRRequestType("ServerConnection") + SignalRRequestType_Trace = SignalRRequestType("Trace") +) + +// Mapping from string to SignalRRequestType +var signalRRequestType_Values = map[string]SignalRRequestType{ + "clientconnection": SignalRRequestType_ClientConnection, + "restapi": SignalRRequestType_RESTAPI, + "serverconnection": SignalRRequestType_ServerConnection, + "trace": SignalRRequestType_Trace, +} + +// Upstream auth settings. If not set, no auth is used for upstream messages. +type UpstreamAuthSettings struct { + // ManagedIdentity: Managed identity settings for upstream. + ManagedIdentity *ManagedIdentitySettings `json:"managedIdentity,omitempty"` + + // Type: Upstream auth type enum. + Type *UpstreamAuthType `json:"type,omitempty"` +} + +// Managed identity settings for upstream. +type ManagedIdentitySettings struct { + // Resource: The Resource indicating the App ID URI of the target resource. + // It also appears in the aud (audience) claim of the issued token. + Resource *string `json:"resource,omitempty"` +} + +// Upstream auth type enum. +// +kubebuilder:validation:Enum={"ManagedIdentity","None"} +type UpstreamAuthType string + +const ( + UpstreamAuthType_ManagedIdentity = UpstreamAuthType("ManagedIdentity") + UpstreamAuthType_None = UpstreamAuthType("None") +) + +// Mapping from string to UpstreamAuthType +var upstreamAuthType_Values = map[string]UpstreamAuthType{ + "managedidentity": UpstreamAuthType_ManagedIdentity, + "none": UpstreamAuthType_None, +} diff --git a/v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen_test.go new file mode 100644 index 00000000000..516ac62bef5 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/signal_r_spec_types_gen_test.go @@ -0,0 +1,1373 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule runs a test to see if a specific instance of IPRule round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule(subject IPRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule instances for property testing - lazily instantiated by IPRuleGenerator() +var ipRuleGenerator gopter.Gen + +// IPRuleGenerator returns a generator of IPRule instances for property testing. +func IPRuleGenerator() gopter.Gen { + if ipRuleGenerator != nil { + return ipRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule(generators) + ipRuleGenerator = gen.Struct(reflect.TypeOf(IPRule{}), generators) + + return ipRuleGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(ACLAction_Allow, ACLAction_Deny)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceCategory, LiveTraceCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceCategory runs a test to see if a specific instance of LiveTraceCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceCategory(subject LiveTraceCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceCategory + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceCategory instances for property testing - lazily instantiated by LiveTraceCategoryGenerator() +var liveTraceCategoryGenerator gopter.Gen + +// LiveTraceCategoryGenerator returns a generator of LiveTraceCategory instances for property testing. +func LiveTraceCategoryGenerator() gopter.Gen { + if liveTraceCategoryGenerator != nil { + return liveTraceCategoryGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceCategory(generators) + liveTraceCategoryGenerator = gen.Struct(reflect.TypeOf(LiveTraceCategory{}), generators) + + return liveTraceCategoryGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceCategory is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceCategory(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceConfiguration, LiveTraceConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceConfiguration runs a test to see if a specific instance of LiveTraceConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceConfiguration(subject LiveTraceConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceConfiguration + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceConfiguration instances for property testing - lazily instantiated by +// LiveTraceConfigurationGenerator() +var liveTraceConfigurationGenerator gopter.Gen + +// LiveTraceConfigurationGenerator returns a generator of LiveTraceConfiguration instances for property testing. +// We first initialize liveTraceConfigurationGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func LiveTraceConfigurationGenerator() gopter.Gen { + if liveTraceConfigurationGenerator != nil { + return liveTraceConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration(generators) + liveTraceConfigurationGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration(generators) + AddRelatedPropertyGeneratorsForLiveTraceConfiguration(generators) + liveTraceConfigurationGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration{}), generators) + + return liveTraceConfigurationGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceConfiguration is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceConfiguration(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForLiveTraceConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForLiveTraceConfiguration(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(LiveTraceCategoryGenerator()) +} + +func Test_ManagedIdentity_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentity, ManagedIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentity runs a test to see if a specific instance of ManagedIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentity(subject ManagedIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentity + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentity instances for property testing - lazily instantiated by ManagedIdentityGenerator() +var managedIdentityGenerator gopter.Gen + +// ManagedIdentityGenerator returns a generator of ManagedIdentity instances for property testing. +// We first initialize managedIdentityGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func ManagedIdentityGenerator() gopter.Gen { + if managedIdentityGenerator != nil { + return managedIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity(generators) + managedIdentityGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity(generators) + AddRelatedPropertyGeneratorsForManagedIdentity(generators) + managedIdentityGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity{}), generators) + + return managedIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(ManagedIdentityType_None, ManagedIdentityType_SystemAssigned, ManagedIdentityType_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForManagedIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityDetailsGenerator()) +} + +func Test_ManagedIdentitySettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentitySettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentitySettings, ManagedIdentitySettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentitySettings runs a test to see if a specific instance of ManagedIdentitySettings round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentitySettings(subject ManagedIdentitySettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentitySettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentitySettings instances for property testing - lazily instantiated by +// ManagedIdentitySettingsGenerator() +var managedIdentitySettingsGenerator gopter.Gen + +// ManagedIdentitySettingsGenerator returns a generator of ManagedIdentitySettings instances for property testing. +func ManagedIdentitySettingsGenerator() gopter.Gen { + if managedIdentitySettingsGenerator != nil { + return managedIdentitySettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentitySettings(generators) + managedIdentitySettingsGenerator = gen.Struct(reflect.TypeOf(ManagedIdentitySettings{}), generators) + + return managedIdentitySettingsGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentitySettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentitySettings(gens map[string]gopter.Gen) { + gens["Resource"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_NetworkACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of NetworkACL via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkACL, NetworkACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkACL runs a test to see if a specific instance of NetworkACL round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkACL(subject NetworkACL) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkACL + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkACL instances for property testing - lazily instantiated by NetworkACLGenerator() +var networkACLGenerator gopter.Gen + +// NetworkACLGenerator returns a generator of NetworkACL instances for property testing. +func NetworkACLGenerator() gopter.Gen { + if networkACLGenerator != nil { + return networkACLGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkACL(generators) + networkACLGenerator = gen.Struct(reflect.TypeOf(NetworkACL{}), generators) + + return networkACLGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkACL is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkACL(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) +} + +func Test_PrivateEndpointACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointACL via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointACL, PrivateEndpointACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointACL runs a test to see if a specific instance of PrivateEndpointACL round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointACL(subject PrivateEndpointACL) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointACL + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointACL instances for property testing - lazily instantiated by PrivateEndpointACLGenerator() +var privateEndpointACLGenerator gopter.Gen + +// PrivateEndpointACLGenerator returns a generator of PrivateEndpointACL instances for property testing. +func PrivateEndpointACLGenerator() gopter.Gen { + if privateEndpointACLGenerator != nil { + return privateEndpointACLGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointACL(generators) + privateEndpointACLGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointACL{}), generators) + + return privateEndpointACLGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointACL is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointACL(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory, ResourceLogCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory runs a test to see if a specific instance of ResourceLogCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory(subject ResourceLogCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogCategory instances for property testing - lazily instantiated by +// ResourceLogCategoryGenerator() +var resourceLogCategoryGenerator gopter.Gen + +// ResourceLogCategoryGenerator returns a generator of ResourceLogCategory instances for property testing. +func ResourceLogCategoryGenerator() gopter.Gen { + if resourceLogCategoryGenerator != nil { + return resourceLogCategoryGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceLogCategory(generators) + resourceLogCategoryGenerator = gen.Struct(reflect.TypeOf(ResourceLogCategory{}), generators) + + return resourceLogCategoryGenerator +} + +// AddIndependentPropertyGeneratorsForResourceLogCategory is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceLogCategory(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogConfiguration, ResourceLogConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogConfiguration runs a test to see if a specific instance of ResourceLogConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogConfiguration(subject ResourceLogConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogConfiguration + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogConfiguration instances for property testing - lazily instantiated by +// ResourceLogConfigurationGenerator() +var resourceLogConfigurationGenerator gopter.Gen + +// ResourceLogConfigurationGenerator returns a generator of ResourceLogConfiguration instances for property testing. +func ResourceLogConfigurationGenerator() gopter.Gen { + if resourceLogConfigurationGenerator != nil { + return resourceLogConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForResourceLogConfiguration(generators) + resourceLogConfigurationGenerator = gen.Struct(reflect.TypeOf(ResourceLogConfiguration{}), generators) + + return resourceLogConfigurationGenerator +} + +// AddRelatedPropertyGeneratorsForResourceLogConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceLogConfiguration(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(ResourceLogCategoryGenerator()) +} + +func Test_ServerlessSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessSettings, ServerlessSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessSettings runs a test to see if a specific instance of ServerlessSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessSettings(subject ServerlessSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessSettings instances for property testing - lazily instantiated by ServerlessSettingsGenerator() +var serverlessSettingsGenerator gopter.Gen + +// ServerlessSettingsGenerator returns a generator of ServerlessSettings instances for property testing. +func ServerlessSettingsGenerator() gopter.Gen { + if serverlessSettingsGenerator != nil { + return serverlessSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerlessSettings(generators) + serverlessSettingsGenerator = gen.Struct(reflect.TypeOf(ServerlessSettings{}), generators) + + return serverlessSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForServerlessSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerlessSettings(gens map[string]gopter.Gen) { + gens["ConnectionTimeoutInSeconds"] = gen.PtrOf(gen.Int()) +} + +func Test_ServerlessUpstreamSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessUpstreamSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessUpstreamSettings, ServerlessUpstreamSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessUpstreamSettings runs a test to see if a specific instance of ServerlessUpstreamSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessUpstreamSettings(subject ServerlessUpstreamSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessUpstreamSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessUpstreamSettings instances for property testing - lazily instantiated by +// ServerlessUpstreamSettingsGenerator() +var serverlessUpstreamSettingsGenerator gopter.Gen + +// ServerlessUpstreamSettingsGenerator returns a generator of ServerlessUpstreamSettings instances for property testing. +func ServerlessUpstreamSettingsGenerator() gopter.Gen { + if serverlessUpstreamSettingsGenerator != nil { + return serverlessUpstreamSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(generators) + serverlessUpstreamSettingsGenerator = gen.Struct(reflect.TypeOf(ServerlessUpstreamSettings{}), generators) + + return serverlessUpstreamSettingsGenerator +} + +// AddRelatedPropertyGeneratorsForServerlessUpstreamSettings is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(gens map[string]gopter.Gen) { + gens["Templates"] = gen.SliceOf(UpstreamTemplateGenerator()) +} + +func Test_SignalRCorsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRCorsSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRCorsSettings, SignalRCorsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRCorsSettings runs a test to see if a specific instance of SignalRCorsSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRCorsSettings(subject SignalRCorsSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRCorsSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRCorsSettings instances for property testing - lazily instantiated by +// SignalRCorsSettingsGenerator() +var signalRCorsSettingsGenerator gopter.Gen + +// SignalRCorsSettingsGenerator returns a generator of SignalRCorsSettings instances for property testing. +func SignalRCorsSettingsGenerator() gopter.Gen { + if signalRCorsSettingsGenerator != nil { + return signalRCorsSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRCorsSettings(generators) + signalRCorsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRCorsSettings{}), generators) + + return signalRCorsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRCorsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRCorsSettings(gens map[string]gopter.Gen) { + gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_SignalRFeature_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRFeature via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRFeature, SignalRFeatureGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRFeature runs a test to see if a specific instance of SignalRFeature round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRFeature(subject SignalRFeature) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRFeature + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRFeature instances for property testing - lazily instantiated by SignalRFeatureGenerator() +var signalRFeatureGenerator gopter.Gen + +// SignalRFeatureGenerator returns a generator of SignalRFeature instances for property testing. +func SignalRFeatureGenerator() gopter.Gen { + if signalRFeatureGenerator != nil { + return signalRFeatureGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRFeature(generators) + signalRFeatureGenerator = gen.Struct(reflect.TypeOf(SignalRFeature{}), generators) + + return signalRFeatureGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRFeature is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRFeature(gens map[string]gopter.Gen) { + gens["Flag"] = gen.PtrOf(gen.OneConstOf( + FeatureFlags_EnableConnectivityLogs, + FeatureFlags_EnableLiveTrace, + FeatureFlags_EnableMessagingLogs, + FeatureFlags_ServiceMode)) + gens["Properties"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRNetworkACLs_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRNetworkACLs via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRNetworkACLs, SignalRNetworkACLsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRNetworkACLs runs a test to see if a specific instance of SignalRNetworkACLs round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRNetworkACLs(subject SignalRNetworkACLs) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRNetworkACLs + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRNetworkACLs instances for property testing - lazily instantiated by SignalRNetworkACLsGenerator() +var signalRNetworkACLsGenerator gopter.Gen + +// SignalRNetworkACLsGenerator returns a generator of SignalRNetworkACLs instances for property testing. +// We first initialize signalRNetworkACLsGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRNetworkACLsGenerator() gopter.Gen { + if signalRNetworkACLsGenerator != nil { + return signalRNetworkACLsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs(generators) + signalRNetworkACLsGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs(generators) + AddRelatedPropertyGeneratorsForSignalRNetworkACLs(generators) + signalRNetworkACLsGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs{}), generators) + + return signalRNetworkACLsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRNetworkACLs is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(ACLAction_Allow, ACLAction_Deny)) +} + +// AddRelatedPropertyGeneratorsForSignalRNetworkACLs is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) + gens["PrivateEndpoints"] = gen.SliceOf(PrivateEndpointACLGenerator()) + gens["PublicNetwork"] = gen.PtrOf(NetworkACLGenerator()) +} + +func Test_SignalRProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRProperties, SignalRPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRProperties runs a test to see if a specific instance of SignalRProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRProperties(subject SignalRProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRProperties instances for property testing - lazily instantiated by SignalRPropertiesGenerator() +var signalRPropertiesGenerator gopter.Gen + +// SignalRPropertiesGenerator returns a generator of SignalRProperties instances for property testing. +// We first initialize signalRPropertiesGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRPropertiesGenerator() gopter.Gen { + if signalRPropertiesGenerator != nil { + return signalRPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRProperties(generators) + signalRPropertiesGenerator = gen.Struct(reflect.TypeOf(SignalRProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRProperties(generators) + AddRelatedPropertyGeneratorsForSignalRProperties(generators) + signalRPropertiesGenerator = gen.Struct(reflect.TypeOf(SignalRProperties{}), generators) + + return signalRPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRProperties(gens map[string]gopter.Gen) { + gens["DisableAadAuth"] = gen.PtrOf(gen.Bool()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalRProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRProperties(gens map[string]gopter.Gen) { + gens["Cors"] = gen.PtrOf(SignalRCorsSettingsGenerator()) + gens["Features"] = gen.SliceOf(SignalRFeatureGenerator()) + gens["LiveTraceConfiguration"] = gen.PtrOf(LiveTraceConfigurationGenerator()) + gens["NetworkACLs"] = gen.PtrOf(SignalRNetworkACLsGenerator()) + gens["ResourceLogConfiguration"] = gen.PtrOf(ResourceLogConfigurationGenerator()) + gens["Serverless"] = gen.PtrOf(ServerlessSettingsGenerator()) + gens["Tls"] = gen.PtrOf(SignalRTlsSettingsGenerator()) + gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettingsGenerator()) +} + +func Test_SignalRTlsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRTlsSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRTlsSettings, SignalRTlsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRTlsSettings runs a test to see if a specific instance of SignalRTlsSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRTlsSettings(subject SignalRTlsSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRTlsSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRTlsSettings instances for property testing - lazily instantiated by SignalRTlsSettingsGenerator() +var signalRTlsSettingsGenerator gopter.Gen + +// SignalRTlsSettingsGenerator returns a generator of SignalRTlsSettings instances for property testing. +func SignalRTlsSettingsGenerator() gopter.Gen { + if signalRTlsSettingsGenerator != nil { + return signalRTlsSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRTlsSettings(generators) + signalRTlsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings{}), generators) + + return signalRTlsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalR_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR_Spec, SignalR_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR_Spec runs a test to see if a specific instance of SignalR_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR_Spec(subject SignalR_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR_Spec instances for property testing - lazily instantiated by SignalR_SpecGenerator() +var signalR_SpecGenerator gopter.Gen + +// SignalR_SpecGenerator returns a generator of SignalR_Spec instances for property testing. +// We first initialize signalR_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalR_SpecGenerator() gopter.Gen { + if signalR_SpecGenerator != nil { + return signalR_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_Spec(generators) + signalR_SpecGenerator = gen.Struct(reflect.TypeOf(SignalR_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_Spec(generators) + AddRelatedPropertyGeneratorsForSignalR_Spec(generators) + signalR_SpecGenerator = gen.Struct(reflect.TypeOf(SignalR_Spec{}), generators) + + return signalR_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForSignalR_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { + gens["Kind"] = gen.PtrOf(gen.OneConstOf(SignalrServiceKind_RawWebSockets, SignalrServiceKind_SignalR)) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalR_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(ManagedIdentityGenerator()) + gens["Properties"] = gen.PtrOf(SignalRPropertiesGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSkuGenerator()) +} + +func Test_UpstreamAuthSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamAuthSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamAuthSettings, UpstreamAuthSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamAuthSettings runs a test to see if a specific instance of UpstreamAuthSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamAuthSettings(subject UpstreamAuthSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamAuthSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamAuthSettings instances for property testing - lazily instantiated by +// UpstreamAuthSettingsGenerator() +var upstreamAuthSettingsGenerator gopter.Gen + +// UpstreamAuthSettingsGenerator returns a generator of UpstreamAuthSettings instances for property testing. +// We first initialize upstreamAuthSettingsGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamAuthSettingsGenerator() gopter.Gen { + if upstreamAuthSettingsGenerator != nil { + return upstreamAuthSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings(generators) + upstreamAuthSettingsGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings(generators) + AddRelatedPropertyGeneratorsForUpstreamAuthSettings(generators) + upstreamAuthSettingsGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings{}), generators) + + return upstreamAuthSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamAuthSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(UpstreamAuthType_ManagedIdentity, UpstreamAuthType_None)) +} + +// AddRelatedPropertyGeneratorsForUpstreamAuthSettings is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter.Gen) { + gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettingsGenerator()) +} + +func Test_UpstreamTemplate_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamTemplate via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamTemplate, UpstreamTemplateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamTemplate runs a test to see if a specific instance of UpstreamTemplate round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamTemplate(subject UpstreamTemplate) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamTemplate + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamTemplate instances for property testing - lazily instantiated by UpstreamTemplateGenerator() +var upstreamTemplateGenerator gopter.Gen + +// UpstreamTemplateGenerator returns a generator of UpstreamTemplate instances for property testing. +// We first initialize upstreamTemplateGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamTemplateGenerator() gopter.Gen { + if upstreamTemplateGenerator != nil { + return upstreamTemplateGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate(generators) + upstreamTemplateGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate(generators) + AddRelatedPropertyGeneratorsForUpstreamTemplate(generators) + upstreamTemplateGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate{}), generators) + + return upstreamTemplateGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamTemplate is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) { + gens["CategoryPattern"] = gen.PtrOf(gen.AlphaString()) + gens["EventPattern"] = gen.PtrOf(gen.AlphaString()) + gens["HubPattern"] = gen.PtrOf(gen.AlphaString()) + gens["UrlTemplate"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamTemplate is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) { + gens["Auth"] = gen.PtrOf(UpstreamAuthSettingsGenerator()) +} + +func Test_UserAssignedIdentityDetails_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UserAssignedIdentityDetails via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserAssignedIdentityDetails, UserAssignedIdentityDetailsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserAssignedIdentityDetails runs a test to see if a specific instance of UserAssignedIdentityDetails round trips to JSON and back losslessly +func RunJSONSerializationTestForUserAssignedIdentityDetails(subject UserAssignedIdentityDetails) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserAssignedIdentityDetails + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UserAssignedIdentityDetails instances for property testing - lazily instantiated by +// UserAssignedIdentityDetailsGenerator() +var userAssignedIdentityDetailsGenerator gopter.Gen + +// UserAssignedIdentityDetailsGenerator returns a generator of UserAssignedIdentityDetails instances for property testing. +func UserAssignedIdentityDetailsGenerator() gopter.Gen { + if userAssignedIdentityDetailsGenerator != nil { + return userAssignedIdentityDetailsGenerator + } + + generators := make(map[string]gopter.Gen) + userAssignedIdentityDetailsGenerator = gen.Struct(reflect.TypeOf(UserAssignedIdentityDetails{}), generators) + + return userAssignedIdentityDetailsGenerator +} diff --git a/v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen.go b/v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen.go new file mode 100644 index 00000000000..bbaf87c0c54 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen.go @@ -0,0 +1,465 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type SignalR_STATUS struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Identity: A class represent managed identities used for request and response + Identity *ManagedIdentity_STATUS `json:"identity,omitempty"` + + // Kind: The kind of the service + Kind *SignalrServiceKind_STATUS `json:"kind,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // Properties: A class that describes the properties of the resource + Properties *SignalRProperties_STATUS `json:"properties,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku_STATUS `json:"sku,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +// A class represent managed identities used for request and response +type ManagedIdentity_STATUS struct { + // PrincipalId: Get the principal id for the system assigned identity. + // Only be used in response. + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: Get the tenant id for the system assigned identity. + // Only be used in response + TenantId *string `json:"tenantId,omitempty"` + + // Type: Represents the identity type: systemAssigned, userAssigned, None + Type *ManagedIdentityType_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: Get or set the user assigned identities + UserAssignedIdentities map[string]UserAssignedIdentityProperty_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// A class that describes the properties of the resource +type SignalRProperties_STATUS struct { + // Cors: Cross-Origin Resource Sharing (CORS) settings. + Cors *SignalRCorsSettings_STATUS `json:"cors,omitempty"` + + // DisableAadAuth: DisableLocalAuth + // Enable or disable aad auth + // When set as true, connection with AuthType=aad won't work. + DisableAadAuth *bool `json:"disableAadAuth,omitempty"` + + // DisableLocalAuth: DisableLocalAuth + // Enable or disable local auth with AccessKey + // When set as true, connection with AccessKey=xxx won't work. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // ExternalIP: The publicly accessible IP of the resource. + ExternalIP *string `json:"externalIP,omitempty"` + + // Features: List of the featureFlags. + // FeatureFlags that are not included in the parameters for the update operation will not be modified. + // And the response will only include featureFlags that are explicitly set. + // When a featureFlag is not explicitly set, its globally default value will be used + // But keep in mind, the default value doesn't mean "false". It varies in terms of different FeatureFlags. + Features []SignalRFeature_STATUS `json:"features,omitempty"` + + // HostName: FQDN of the service instance. + HostName *string `json:"hostName,omitempty"` + + // HostNamePrefix: Deprecated. + HostNamePrefix *string `json:"hostNamePrefix,omitempty"` + + // LiveTraceConfiguration: Live trace configuration of a Microsoft.SignalRService resource. + LiveTraceConfiguration *LiveTraceConfiguration_STATUS `json:"liveTraceConfiguration,omitempty"` + + // NetworkACLs: Network ACLs for the resource + NetworkACLs *SignalRNetworkACLs_STATUS `json:"networkACLs,omitempty"` + + // PrivateEndpointConnections: Private endpoint connections to the resource. + PrivateEndpointConnections []PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded `json:"privateEndpointConnections,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // PublicNetworkAccess: Enable or disable public network access. Default to "Enabled". + // When it's Enabled, network ACLs still apply. + // When it's Disabled, public network access is always disabled no matter what you set in network ACLs. + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + + // PublicPort: The publicly accessible port of the resource which is designed for browser/client side usage. + PublicPort *int `json:"publicPort,omitempty"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + // This property is replica specific. Disable the regional endpoint without replica is not allowed. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceLogConfiguration: Resource log configuration of a Microsoft.SignalRService resource. + ResourceLogConfiguration *ResourceLogConfiguration_STATUS `json:"resourceLogConfiguration,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "False". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` + + // ServerPort: The publicly accessible port of the resource which is designed for customer server side usage. + ServerPort *int `json:"serverPort,omitempty"` + + // Serverless: Serverless settings. + Serverless *ServerlessSettings_STATUS `json:"serverless,omitempty"` + + // SharedPrivateLinkResources: The list of shared private link resources. + SharedPrivateLinkResources []SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded `json:"sharedPrivateLinkResources,omitempty"` + + // Tls: TLS settings for the resource + Tls *SignalRTlsSettings_STATUS `json:"tls,omitempty"` + + // Upstream: The settings for the Upstream when the service is in server-less mode. + Upstream *ServerlessUpstreamSettings_STATUS `json:"upstream,omitempty"` + + // Version: Version of the resource. Probably you need the same or higher version of client SDKs. + Version *string `json:"version,omitempty"` +} + +// The kind of the service +type SignalrServiceKind_STATUS string + +const ( + SignalrServiceKind_STATUS_RawWebSockets = SignalrServiceKind_STATUS("RawWebSockets") + SignalrServiceKind_STATUS_SignalR = SignalrServiceKind_STATUS("SignalR") +) + +// Mapping from string to SignalrServiceKind_STATUS +var signalrServiceKind_STATUS_Values = map[string]SignalrServiceKind_STATUS{ + "rawwebsockets": SignalrServiceKind_STATUS_RawWebSockets, + "signalr": SignalrServiceKind_STATUS_SignalR, +} + +// Live trace configuration of a Microsoft.SignalRService resource. +type LiveTraceConfiguration_STATUS struct { + // Categories: Gets or sets the list of category configurations. + Categories []LiveTraceCategory_STATUS `json:"categories,omitempty"` + + // Enabled: Indicates whether or not enable live trace. + // When it's set to true, live trace client can connect to the service. + // Otherwise, live trace client can't connect to the service, so that you are unable to receive any log, no matter what you + // configure in "categories". + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` +} + +// Represents the identity type: systemAssigned, userAssigned, None +type ManagedIdentityType_STATUS string + +const ( + ManagedIdentityType_STATUS_None = ManagedIdentityType_STATUS("None") + ManagedIdentityType_STATUS_SystemAssigned = ManagedIdentityType_STATUS("SystemAssigned") + ManagedIdentityType_STATUS_UserAssigned = ManagedIdentityType_STATUS("UserAssigned") +) + +// Mapping from string to ManagedIdentityType_STATUS +var managedIdentityType_STATUS_Values = map[string]ManagedIdentityType_STATUS{ + "none": ManagedIdentityType_STATUS_None, + "systemassigned": ManagedIdentityType_STATUS_SystemAssigned, + "userassigned": ManagedIdentityType_STATUS_UserAssigned, +} + +// A private endpoint connection to an azure resource +type PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` +} + +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration_STATUS struct { + // Categories: Gets or sets the list of category configurations. + Categories []ResourceLogCategory_STATUS `json:"categories,omitempty"` +} + +// Serverless settings. +type ServerlessSettings_STATUS struct { + // ConnectionTimeoutInSeconds: Gets or sets Client Connection Timeout. Optional to be set. + // Value in seconds. + // Default value is 30 seconds. + // Customer should set the timeout to a shorter period if messages are expected to be sent in shorter intervals, + // and want the client to disconnect more quickly after the last message is sent. + // You can set the timeout to a longer period if messages are expected to be sent in longer intervals, + // and they want to keep the same client connection alive during this session. + // The service considers the client disconnected if it hasn't received a message (including keep-alive) in this interval. + ConnectionTimeoutInSeconds *int `json:"connectionTimeoutInSeconds,omitempty"` +} + +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings_STATUS struct { + // Templates: Gets or sets the list of Upstream URL templates. Order matters, and the first matching template takes effects. + Templates []UpstreamTemplate_STATUS `json:"templates,omitempty"` +} + +// Describes a Shared Private Link Resource +type SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` +} + +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings_STATUS struct { + // AllowedOrigins: Gets or sets the list of origins that should be allowed to make cross-origin calls (for example: + // http://example.com:12345). Use "*" to allow all. If omitted, allow all by default. + AllowedOrigins []string `json:"allowedOrigins,omitempty"` +} + +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature_STATUS struct { + // Flag: FeatureFlags is the supported features of Azure SignalR service. + // - ServiceMode: Flag for backend server for SignalR service. Values allowed: "Default": have your own backend server; + // "Serverless": your application doesn't have a backend server; "Classic": for backward compatibility. Support both + // Default and Serverless mode but not recommended; "PredefinedOnly": for future use. + // - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will give you live + // traces in real time, it will be helpful when you developing your own Azure SignalR based web application or + // self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. + // Values allowed: "true"/"false", to enable/disable live trace feature. + Flag *FeatureFlags_STATUS `json:"flag,omitempty"` + + // Properties: Optional properties related to this feature. + Properties map[string]string `json:"properties,omitempty"` + + // Value: Value of the feature flag. See Azure SignalR service document https://docs.microsoft.com/azure/azure-signalr/ for + // allowed values. + Value *string `json:"value,omitempty"` +} + +// Network ACLs for the resource +type SignalRNetworkACLs_STATUS struct { + // DefaultAction: Azure Networking ACL Action. + DefaultAction *ACLAction_STATUS `json:"defaultAction,omitempty"` + + // IpRules: IP rules for filtering public traffic + IpRules []IPRule_STATUS `json:"ipRules,omitempty"` + + // PrivateEndpoints: ACLs for requests from private endpoints + PrivateEndpoints []PrivateEndpointACL_STATUS `json:"privateEndpoints,omitempty"` + + // PublicNetwork: Network ACL + PublicNetwork *NetworkACL_STATUS `json:"publicNetwork,omitempty"` +} + +// TLS settings for the resource +type SignalRTlsSettings_STATUS struct { + // ClientCertEnabled: Request client certificate during TLS handshake if enabled. Not supported for free tier. Any input + // will be ignored for free tier. + ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"` +} + +// Properties of user assigned identity. +type UserAssignedIdentityProperty_STATUS struct { + // ClientId: Get the client id for the user assigned identity + ClientId *string `json:"clientId,omitempty"` + + // PrincipalId: Get the principal id for the user assigned identity + PrincipalId *string `json:"principalId,omitempty"` +} + +// Azure Networking ACL Action. +type ACLAction_STATUS string + +const ( + ACLAction_STATUS_Allow = ACLAction_STATUS("Allow") + ACLAction_STATUS_Deny = ACLAction_STATUS("Deny") +) + +// Mapping from string to ACLAction_STATUS +var aCLAction_STATUS_Values = map[string]ACLAction_STATUS{ + "allow": ACLAction_STATUS_Allow, + "deny": ACLAction_STATUS_Deny, +} + +// FeatureFlags is the supported features of Azure SignalR service. +// - ServiceMode: Flag for backend server for SignalR +// service. Values allowed: "Default": have your own backend server; "Serverless": your application doesn't have a backend +// server; "Classic": for backward compatibility. Support both Default and Serverless mode but not recommended; +// "PredefinedOnly": for future use. +// - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log +// category respectively. +// - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category +// respectively. +// - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will +// give you live traces in real time, it will be helpful when you developing your own Azure SignalR based web application +// or self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. +// Values allowed: "true"/"false", to enable/disable live trace feature. +type FeatureFlags_STATUS string + +const ( + FeatureFlags_STATUS_EnableConnectivityLogs = FeatureFlags_STATUS("EnableConnectivityLogs") + FeatureFlags_STATUS_EnableLiveTrace = FeatureFlags_STATUS("EnableLiveTrace") + FeatureFlags_STATUS_EnableMessagingLogs = FeatureFlags_STATUS("EnableMessagingLogs") + FeatureFlags_STATUS_ServiceMode = FeatureFlags_STATUS("ServiceMode") +) + +// Mapping from string to FeatureFlags_STATUS +var featureFlags_STATUS_Values = map[string]FeatureFlags_STATUS{ + "enableconnectivitylogs": FeatureFlags_STATUS_EnableConnectivityLogs, + "enablelivetrace": FeatureFlags_STATUS_EnableLiveTrace, + "enablemessaginglogs": FeatureFlags_STATUS_EnableMessagingLogs, + "servicemode": FeatureFlags_STATUS_ServiceMode, +} + +// An IP rule +type IPRule_STATUS struct { + // Action: Azure Networking ACL Action. + Action *ACLAction_STATUS `json:"action,omitempty"` + + // Value: An IP or CIDR or ServiceTag + Value *string `json:"value,omitempty"` +} + +// Live trace category configuration of a Microsoft.SignalRService resource. +type LiveTraceCategory_STATUS struct { + // Enabled: Indicates whether or the live trace category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the live trace category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +// Network ACL +type NetworkACL_STATUS struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType_STATUS `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType_STATUS `json:"deny,omitempty"` +} + +// ACL for a private endpoint +type PrivateEndpointACL_STATUS struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType_STATUS `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType_STATUS `json:"deny,omitempty"` + + // Name: Name of the private endpoint connection + Name *string `json:"name,omitempty"` +} + +// Resource log category configuration of a Microsoft.SignalRService resource. +type ResourceLogCategory_STATUS struct { + // Enabled: Indicates whether or the resource log category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the resource log category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +// Upstream template item settings. It defines the Upstream URL of the incoming requests. +// The template defines the pattern +// of the event, the hub or the category of the incoming request that matches current URL template. +type UpstreamTemplate_STATUS struct { + // Auth: Upstream auth settings. If not set, no auth is used for upstream messages. + Auth *UpstreamAuthSettings_STATUS `json:"auth,omitempty"` + + // CategoryPattern: Gets or sets the matching pattern for category names. If not set, it matches any category. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any category name. + // 2. Combine multiple categories with ",", for example "connections,messages", it matches category "connections" and + // "messages". + // 3. The single category name, for example, "connections", it matches the category "connections". + CategoryPattern *string `json:"categoryPattern,omitempty"` + + // EventPattern: Gets or sets the matching pattern for event names. If not set, it matches any event. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any event name. + // 2. Combine multiple events with ",", for example "connect,disconnect", it matches event "connect" and "disconnect". + // 3. The single event name, for example, "connect", it matches "connect". + EventPattern *string `json:"eventPattern,omitempty"` + + // HubPattern: Gets or sets the matching pattern for hub names. If not set, it matches any hub. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any hub name. + // 2. Combine multiple hubs with ",", for example "hub1,hub2", it matches "hub1" and "hub2". + // 3. The single hub name, for example, "hub1", it matches "hub1". + HubPattern *string `json:"hubPattern,omitempty"` + + // UrlTemplate: Gets or sets the Upstream URL template. You can use 3 predefined parameters {hub}, {category} {event} + // inside the template, the value of the Upstream URL is dynamically calculated when the client request comes in. + // For example, if the urlTemplate is `http://example.com/{hub}/api/{event}`, with a client request from hub `chat` + // connects, it will first POST to this URL: `http://example.com/chat/api/connect`. + UrlTemplate *string `json:"urlTemplate,omitempty"` +} + +// The incoming request type to the service +type SignalRRequestType_STATUS string + +const ( + SignalRRequestType_STATUS_ClientConnection = SignalRRequestType_STATUS("ClientConnection") + SignalRRequestType_STATUS_RESTAPI = SignalRRequestType_STATUS("RESTAPI") + SignalRRequestType_STATUS_ServerConnection = SignalRRequestType_STATUS("ServerConnection") + SignalRRequestType_STATUS_Trace = SignalRRequestType_STATUS("Trace") +) + +// Mapping from string to SignalRRequestType_STATUS +var signalRRequestType_STATUS_Values = map[string]SignalRRequestType_STATUS{ + "clientconnection": SignalRRequestType_STATUS_ClientConnection, + "restapi": SignalRRequestType_STATUS_RESTAPI, + "serverconnection": SignalRRequestType_STATUS_ServerConnection, + "trace": SignalRRequestType_STATUS_Trace, +} + +// Upstream auth settings. If not set, no auth is used for upstream messages. +type UpstreamAuthSettings_STATUS struct { + // ManagedIdentity: Managed identity settings for upstream. + ManagedIdentity *ManagedIdentitySettings_STATUS `json:"managedIdentity,omitempty"` + + // Type: Upstream auth type enum. + Type *UpstreamAuthType_STATUS `json:"type,omitempty"` +} + +// Managed identity settings for upstream. +type ManagedIdentitySettings_STATUS struct { + // Resource: The Resource indicating the App ID URI of the target resource. + // It also appears in the aud (audience) claim of the issued token. + Resource *string `json:"resource,omitempty"` +} + +// Upstream auth type enum. +type UpstreamAuthType_STATUS string + +const ( + UpstreamAuthType_STATUS_ManagedIdentity = UpstreamAuthType_STATUS("ManagedIdentity") + UpstreamAuthType_STATUS_None = UpstreamAuthType_STATUS("None") +) + +// Mapping from string to UpstreamAuthType_STATUS +var upstreamAuthType_STATUS_Values = map[string]UpstreamAuthType_STATUS{ + "managedidentity": UpstreamAuthType_STATUS_ManagedIdentity, + "none": UpstreamAuthType_STATUS_None, +} diff --git a/v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen_test.go b/v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen_test.go new file mode 100644 index 00000000000..5caa16d6702 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/signal_r_status_types_gen_test.go @@ -0,0 +1,1534 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule_STATUS runs a test to see if a specific instance of IPRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule_STATUS instances for property testing - lazily instantiated by IPRule_STATUSGenerator() +var ipRule_STATUSGenerator gopter.Gen + +// IPRule_STATUSGenerator returns a generator of IPRule_STATUS instances for property testing. +func IPRule_STATUSGenerator() gopter.Gen { + if ipRule_STATUSGenerator != nil { + return ipRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule_STATUS(generators) + ipRule_STATUSGenerator = gen.Struct(reflect.TypeOf(IPRule_STATUS{}), generators) + + return ipRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(ACLAction_STATUS_Allow, ACLAction_STATUS_Deny)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceCategory_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceCategory_STATUS, LiveTraceCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceCategory_STATUS runs a test to see if a specific instance of LiveTraceCategory_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceCategory_STATUS(subject LiveTraceCategory_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceCategory_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceCategory_STATUS instances for property testing - lazily instantiated by +// LiveTraceCategory_STATUSGenerator() +var liveTraceCategory_STATUSGenerator gopter.Gen + +// LiveTraceCategory_STATUSGenerator returns a generator of LiveTraceCategory_STATUS instances for property testing. +func LiveTraceCategory_STATUSGenerator() gopter.Gen { + if liveTraceCategory_STATUSGenerator != nil { + return liveTraceCategory_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS(generators) + liveTraceCategory_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceCategory_STATUS{}), generators) + + return liveTraceCategory_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceConfiguration_STATUS, LiveTraceConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceConfiguration_STATUS runs a test to see if a specific instance of LiveTraceConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceConfiguration_STATUS(subject LiveTraceConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceConfiguration_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceConfiguration_STATUS instances for property testing - lazily instantiated by +// LiveTraceConfiguration_STATUSGenerator() +var liveTraceConfiguration_STATUSGenerator gopter.Gen + +// LiveTraceConfiguration_STATUSGenerator returns a generator of LiveTraceConfiguration_STATUS instances for property testing. +// We first initialize liveTraceConfiguration_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func LiveTraceConfiguration_STATUSGenerator() gopter.Gen { + if liveTraceConfiguration_STATUSGenerator != nil { + return liveTraceConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + liveTraceConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + liveTraceConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration_STATUS{}), generators) + + return liveTraceConfiguration_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(LiveTraceCategory_STATUSGenerator()) +} + +func Test_ManagedIdentitySettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentitySettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentitySettings_STATUS, ManagedIdentitySettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentitySettings_STATUS runs a test to see if a specific instance of ManagedIdentitySettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentitySettings_STATUS(subject ManagedIdentitySettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentitySettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentitySettings_STATUS instances for property testing - lazily instantiated by +// ManagedIdentitySettings_STATUSGenerator() +var managedIdentitySettings_STATUSGenerator gopter.Gen + +// ManagedIdentitySettings_STATUSGenerator returns a generator of ManagedIdentitySettings_STATUS instances for property testing. +func ManagedIdentitySettings_STATUSGenerator() gopter.Gen { + if managedIdentitySettings_STATUSGenerator != nil { + return managedIdentitySettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(generators) + managedIdentitySettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentitySettings_STATUS{}), generators) + + return managedIdentitySettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(gens map[string]gopter.Gen) { + gens["Resource"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ManagedIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentity_STATUS, ManagedIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentity_STATUS runs a test to see if a specific instance of ManagedIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentity_STATUS(subject ManagedIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentity_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentity_STATUS instances for property testing - lazily instantiated by +// ManagedIdentity_STATUSGenerator() +var managedIdentity_STATUSGenerator gopter.Gen + +// ManagedIdentity_STATUSGenerator returns a generator of ManagedIdentity_STATUS instances for property testing. +// We first initialize managedIdentity_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func ManagedIdentity_STATUSGenerator() gopter.Gen { + if managedIdentity_STATUSGenerator != nil { + return managedIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(generators) + managedIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(generators) + AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(generators) + managedIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity_STATUS{}), generators) + + return managedIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(ManagedIdentityType_STATUS_None, ManagedIdentityType_STATUS_SystemAssigned, ManagedIdentityType_STATUS_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForManagedIdentity_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityProperty_STATUSGenerator()) +} + +func Test_NetworkACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of NetworkACL_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkACL_STATUS, NetworkACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkACL_STATUS runs a test to see if a specific instance of NetworkACL_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkACL_STATUS(subject NetworkACL_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkACL_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkACL_STATUS instances for property testing - lazily instantiated by NetworkACL_STATUSGenerator() +var networkACL_STATUSGenerator gopter.Gen + +// NetworkACL_STATUSGenerator returns a generator of NetworkACL_STATUS instances for property testing. +func NetworkACL_STATUSGenerator() gopter.Gen { + if networkACL_STATUSGenerator != nil { + return networkACL_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkACL_STATUS(generators) + networkACL_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkACL_STATUS{}), generators) + + return networkACL_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkACL_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkACL_STATUS(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) +} + +func Test_PrivateEndpointACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointACL_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointACL_STATUS, PrivateEndpointACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointACL_STATUS runs a test to see if a specific instance of PrivateEndpointACL_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointACL_STATUS(subject PrivateEndpointACL_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointACL_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointACL_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointACL_STATUSGenerator() +var privateEndpointACL_STATUSGenerator gopter.Gen + +// PrivateEndpointACL_STATUSGenerator returns a generator of PrivateEndpointACL_STATUS instances for property testing. +func PrivateEndpointACL_STATUSGenerator() gopter.Gen { + if privateEndpointACL_STATUSGenerator != nil { + return privateEndpointACL_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(generators) + privateEndpointACL_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointACL_STATUS{}), generators) + + return privateEndpointACL_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded runs a test to see if a specific instance of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(subject PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded instances for property testing - lazily +// instantiated by PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator() +var privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator gopter.Gen + +// PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator returns a generator of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded instances for property testing. +func PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator() gopter.Gen { + if privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator != nil { + return privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(generators) + privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded{}), generators) + + return privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory_STATUS, ResourceLogCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory_STATUS runs a test to see if a specific instance of ResourceLogCategory_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory_STATUS(subject ResourceLogCategory_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogCategory_STATUS instances for property testing - lazily instantiated by +// ResourceLogCategory_STATUSGenerator() +var resourceLogCategory_STATUSGenerator gopter.Gen + +// ResourceLogCategory_STATUSGenerator returns a generator of ResourceLogCategory_STATUS instances for property testing. +func ResourceLogCategory_STATUSGenerator() gopter.Gen { + if resourceLogCategory_STATUSGenerator != nil { + return resourceLogCategory_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(generators) + resourceLogCategory_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceLogCategory_STATUS{}), generators) + + return resourceLogCategory_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogConfiguration_STATUS, ResourceLogConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogConfiguration_STATUS runs a test to see if a specific instance of ResourceLogConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogConfiguration_STATUS(subject ResourceLogConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogConfiguration_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogConfiguration_STATUS instances for property testing - lazily instantiated by +// ResourceLogConfiguration_STATUSGenerator() +var resourceLogConfiguration_STATUSGenerator gopter.Gen + +// ResourceLogConfiguration_STATUSGenerator returns a generator of ResourceLogConfiguration_STATUS instances for property testing. +func ResourceLogConfiguration_STATUSGenerator() gopter.Gen { + if resourceLogConfiguration_STATUSGenerator != nil { + return resourceLogConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(generators) + resourceLogConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceLogConfiguration_STATUS{}), generators) + + return resourceLogConfiguration_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(ResourceLogCategory_STATUSGenerator()) +} + +func Test_ServerlessSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessSettings_STATUS, ServerlessSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessSettings_STATUS runs a test to see if a specific instance of ServerlessSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessSettings_STATUS(subject ServerlessSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessSettings_STATUS instances for property testing - lazily instantiated by +// ServerlessSettings_STATUSGenerator() +var serverlessSettings_STATUSGenerator gopter.Gen + +// ServerlessSettings_STATUSGenerator returns a generator of ServerlessSettings_STATUS instances for property testing. +func ServerlessSettings_STATUSGenerator() gopter.Gen { + if serverlessSettings_STATUSGenerator != nil { + return serverlessSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerlessSettings_STATUS(generators) + serverlessSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerlessSettings_STATUS{}), generators) + + return serverlessSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForServerlessSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerlessSettings_STATUS(gens map[string]gopter.Gen) { + gens["ConnectionTimeoutInSeconds"] = gen.PtrOf(gen.Int()) +} + +func Test_ServerlessUpstreamSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessUpstreamSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessUpstreamSettings_STATUS, ServerlessUpstreamSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessUpstreamSettings_STATUS runs a test to see if a specific instance of ServerlessUpstreamSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessUpstreamSettings_STATUS(subject ServerlessUpstreamSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessUpstreamSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessUpstreamSettings_STATUS instances for property testing - lazily instantiated by +// ServerlessUpstreamSettings_STATUSGenerator() +var serverlessUpstreamSettings_STATUSGenerator gopter.Gen + +// ServerlessUpstreamSettings_STATUSGenerator returns a generator of ServerlessUpstreamSettings_STATUS instances for property testing. +func ServerlessUpstreamSettings_STATUSGenerator() gopter.Gen { + if serverlessUpstreamSettings_STATUSGenerator != nil { + return serverlessUpstreamSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(generators) + serverlessUpstreamSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerlessUpstreamSettings_STATUS{}), generators) + + return serverlessUpstreamSettings_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(gens map[string]gopter.Gen) { + gens["Templates"] = gen.SliceOf(UpstreamTemplate_STATUSGenerator()) +} + +func Test_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded runs a test to see if a specific instance of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded round trips to JSON and back losslessly +func RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(subject SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded instances for property testing - lazily +// instantiated by SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator() +var sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator gopter.Gen + +// SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator returns a generator of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded instances for property testing. +func SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator() gopter.Gen { + if sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator != nil { + return sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(generators) + sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator = gen.Struct(reflect.TypeOf(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded{}), generators) + + return sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator +} + +// AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRCorsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRCorsSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRCorsSettings_STATUS, SignalRCorsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRCorsSettings_STATUS runs a test to see if a specific instance of SignalRCorsSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRCorsSettings_STATUS(subject SignalRCorsSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRCorsSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRCorsSettings_STATUS instances for property testing - lazily instantiated by +// SignalRCorsSettings_STATUSGenerator() +var signalRCorsSettings_STATUSGenerator gopter.Gen + +// SignalRCorsSettings_STATUSGenerator returns a generator of SignalRCorsSettings_STATUS instances for property testing. +func SignalRCorsSettings_STATUSGenerator() gopter.Gen { + if signalRCorsSettings_STATUSGenerator != nil { + return signalRCorsSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(generators) + signalRCorsSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRCorsSettings_STATUS{}), generators) + + return signalRCorsSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(gens map[string]gopter.Gen) { + gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_SignalRFeature_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRFeature_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRFeature_STATUS, SignalRFeature_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRFeature_STATUS runs a test to see if a specific instance of SignalRFeature_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRFeature_STATUS(subject SignalRFeature_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRFeature_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRFeature_STATUS instances for property testing - lazily instantiated by +// SignalRFeature_STATUSGenerator() +var signalRFeature_STATUSGenerator gopter.Gen + +// SignalRFeature_STATUSGenerator returns a generator of SignalRFeature_STATUS instances for property testing. +func SignalRFeature_STATUSGenerator() gopter.Gen { + if signalRFeature_STATUSGenerator != nil { + return signalRFeature_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(generators) + signalRFeature_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRFeature_STATUS{}), generators) + + return signalRFeature_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRFeature_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(gens map[string]gopter.Gen) { + gens["Flag"] = gen.PtrOf(gen.OneConstOf( + FeatureFlags_STATUS_EnableConnectivityLogs, + FeatureFlags_STATUS_EnableLiveTrace, + FeatureFlags_STATUS_EnableMessagingLogs, + FeatureFlags_STATUS_ServiceMode)) + gens["Properties"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRNetworkACLs_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRNetworkACLs_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRNetworkACLs_STATUS, SignalRNetworkACLs_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRNetworkACLs_STATUS runs a test to see if a specific instance of SignalRNetworkACLs_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRNetworkACLs_STATUS(subject SignalRNetworkACLs_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRNetworkACLs_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRNetworkACLs_STATUS instances for property testing - lazily instantiated by +// SignalRNetworkACLs_STATUSGenerator() +var signalRNetworkACLs_STATUSGenerator gopter.Gen + +// SignalRNetworkACLs_STATUSGenerator returns a generator of SignalRNetworkACLs_STATUS instances for property testing. +// We first initialize signalRNetworkACLs_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRNetworkACLs_STATUSGenerator() gopter.Gen { + if signalRNetworkACLs_STATUSGenerator != nil { + return signalRNetworkACLs_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + signalRNetworkACLs_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + signalRNetworkACLs_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs_STATUS{}), generators) + + return signalRNetworkACLs_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(ACLAction_STATUS_Allow, ACLAction_STATUS_Deny)) +} + +// AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) + gens["PrivateEndpoints"] = gen.SliceOf(PrivateEndpointACL_STATUSGenerator()) + gens["PublicNetwork"] = gen.PtrOf(NetworkACL_STATUSGenerator()) +} + +func Test_SignalRProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRProperties_STATUS, SignalRProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRProperties_STATUS runs a test to see if a specific instance of SignalRProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRProperties_STATUS(subject SignalRProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRProperties_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRProperties_STATUS instances for property testing - lazily instantiated by +// SignalRProperties_STATUSGenerator() +var signalRProperties_STATUSGenerator gopter.Gen + +// SignalRProperties_STATUSGenerator returns a generator of SignalRProperties_STATUS instances for property testing. +// We first initialize signalRProperties_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRProperties_STATUSGenerator() gopter.Gen { + if signalRProperties_STATUSGenerator != nil { + return signalRProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRProperties_STATUS(generators) + signalRProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalRProperties_STATUS(generators) + signalRProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRProperties_STATUS{}), generators) + + return signalRProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRProperties_STATUS(gens map[string]gopter.Gen) { + gens["DisableAadAuth"] = gen.PtrOf(gen.Bool()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["ExternalIP"] = gen.PtrOf(gen.AlphaString()) + gens["HostName"] = gen.PtrOf(gen.AlphaString()) + gens["HostNamePrefix"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["PublicPort"] = gen.PtrOf(gen.Int()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["ServerPort"] = gen.PtrOf(gen.Int()) + gens["Version"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalRProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRProperties_STATUS(gens map[string]gopter.Gen) { + gens["Cors"] = gen.PtrOf(SignalRCorsSettings_STATUSGenerator()) + gens["Features"] = gen.SliceOf(SignalRFeature_STATUSGenerator()) + gens["LiveTraceConfiguration"] = gen.PtrOf(LiveTraceConfiguration_STATUSGenerator()) + gens["NetworkACLs"] = gen.PtrOf(SignalRNetworkACLs_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator()) + gens["ResourceLogConfiguration"] = gen.PtrOf(ResourceLogConfiguration_STATUSGenerator()) + gens["Serverless"] = gen.PtrOf(ServerlessSettings_STATUSGenerator()) + gens["SharedPrivateLinkResources"] = gen.SliceOf(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator()) + gens["Tls"] = gen.PtrOf(SignalRTlsSettings_STATUSGenerator()) + gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettings_STATUSGenerator()) +} + +func Test_SignalRTlsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRTlsSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRTlsSettings_STATUS, SignalRTlsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRTlsSettings_STATUS runs a test to see if a specific instance of SignalRTlsSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRTlsSettings_STATUS(subject SignalRTlsSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRTlsSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRTlsSettings_STATUS instances for property testing - lazily instantiated by +// SignalRTlsSettings_STATUSGenerator() +var signalRTlsSettings_STATUSGenerator gopter.Gen + +// SignalRTlsSettings_STATUSGenerator returns a generator of SignalRTlsSettings_STATUS instances for property testing. +func SignalRTlsSettings_STATUSGenerator() gopter.Gen { + if signalRTlsSettings_STATUSGenerator != nil { + return signalRTlsSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(generators) + signalRTlsSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings_STATUS{}), generators) + + return signalRTlsSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalR_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR_STATUS, SignalR_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR_STATUS runs a test to see if a specific instance of SignalR_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR_STATUS(subject SignalR_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR_STATUS instances for property testing - lazily instantiated by SignalR_STATUSGenerator() +var signalR_STATUSGenerator gopter.Gen + +// SignalR_STATUSGenerator returns a generator of SignalR_STATUS instances for property testing. +// We first initialize signalR_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalR_STATUSGenerator() gopter.Gen { + if signalR_STATUSGenerator != nil { + return signalR_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_STATUS(generators) + signalR_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalR_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalR_STATUS(generators) + signalR_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalR_STATUS{}), generators) + + return signalR_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalR_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Kind"] = gen.PtrOf(gen.OneConstOf(SignalrServiceKind_STATUS_RawWebSockets, SignalrServiceKind_STATUS_SignalR)) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalR_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(ManagedIdentity_STATUSGenerator()) + gens["Properties"] = gen.PtrOf(SignalRProperties_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_UpstreamAuthSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamAuthSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamAuthSettings_STATUS, UpstreamAuthSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamAuthSettings_STATUS runs a test to see if a specific instance of UpstreamAuthSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamAuthSettings_STATUS(subject UpstreamAuthSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamAuthSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamAuthSettings_STATUS instances for property testing - lazily instantiated by +// UpstreamAuthSettings_STATUSGenerator() +var upstreamAuthSettings_STATUSGenerator gopter.Gen + +// UpstreamAuthSettings_STATUSGenerator returns a generator of UpstreamAuthSettings_STATUS instances for property testing. +// We first initialize upstreamAuthSettings_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamAuthSettings_STATUSGenerator() gopter.Gen { + if upstreamAuthSettings_STATUSGenerator != nil { + return upstreamAuthSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + upstreamAuthSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + upstreamAuthSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings_STATUS{}), generators) + + return upstreamAuthSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(UpstreamAuthType_STATUS_ManagedIdentity, UpstreamAuthType_STATUS_None)) +} + +// AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string]gopter.Gen) { + gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettings_STATUSGenerator()) +} + +func Test_UpstreamTemplate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamTemplate_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamTemplate_STATUS, UpstreamTemplate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamTemplate_STATUS runs a test to see if a specific instance of UpstreamTemplate_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamTemplate_STATUS(subject UpstreamTemplate_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamTemplate_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamTemplate_STATUS instances for property testing - lazily instantiated by +// UpstreamTemplate_STATUSGenerator() +var upstreamTemplate_STATUSGenerator gopter.Gen + +// UpstreamTemplate_STATUSGenerator returns a generator of UpstreamTemplate_STATUS instances for property testing. +// We first initialize upstreamTemplate_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamTemplate_STATUSGenerator() gopter.Gen { + if upstreamTemplate_STATUSGenerator != nil { + return upstreamTemplate_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + upstreamTemplate_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + upstreamTemplate_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate_STATUS{}), generators) + + return upstreamTemplate_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopter.Gen) { + gens["CategoryPattern"] = gen.PtrOf(gen.AlphaString()) + gens["EventPattern"] = gen.PtrOf(gen.AlphaString()) + gens["HubPattern"] = gen.PtrOf(gen.AlphaString()) + gens["UrlTemplate"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopter.Gen) { + gens["Auth"] = gen.PtrOf(UpstreamAuthSettings_STATUSGenerator()) +} + +func Test_UserAssignedIdentityProperty_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UserAssignedIdentityProperty_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS, UserAssignedIdentityProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS runs a test to see if a specific instance of UserAssignedIdentityProperty_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS(subject UserAssignedIdentityProperty_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserAssignedIdentityProperty_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UserAssignedIdentityProperty_STATUS instances for property testing - lazily instantiated by +// UserAssignedIdentityProperty_STATUSGenerator() +var userAssignedIdentityProperty_STATUSGenerator gopter.Gen + +// UserAssignedIdentityProperty_STATUSGenerator returns a generator of UserAssignedIdentityProperty_STATUS instances for property testing. +func UserAssignedIdentityProperty_STATUSGenerator() gopter.Gen { + if userAssignedIdentityProperty_STATUSGenerator != nil { + return userAssignedIdentityProperty_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS(generators) + userAssignedIdentityProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(UserAssignedIdentityProperty_STATUS{}), generators) + + return userAssignedIdentityProperty_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/arm/structure.txt b/v2/api/signalrservice/v1api20240301/arm/structure.txt new file mode 100644 index 00000000000..0906abb1679 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/arm/structure.txt @@ -0,0 +1,371 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/arm +------------------------------------------------------------------------------- +CustomCertificate_STATUS: Object (5 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (4 properties) +│ ├── KeyVaultBaseUri: *string +│ ├── KeyVaultSecretName: *string +│ ├── KeyVaultSecretVersion: *string +│ └── ProvisioningState: *Enum (9 values) +│ ├── "Canceled" +│ ├── "Creating" +│ ├── "Deleting" +│ ├── "Failed" +│ ├── "Moving" +│ ├── "Running" +│ ├── "Succeeded" +│ ├── "Unknown" +│ └── "Updating" +├── SystemData: *Object (6 properties) +│ ├── CreatedAt: *string +│ ├── CreatedBy: *string +│ ├── CreatedByType: *Enum (4 values) +│ │ ├── "Application" +│ │ ├── "Key" +│ │ ├── "ManagedIdentity" +│ │ └── "User" +│ ├── LastModifiedAt: *string +│ ├── LastModifiedBy: *string +│ └── LastModifiedByType: *Enum (4 values) +│ ├── "Application" +│ ├── "Key" +│ ├── "ManagedIdentity" +│ └── "User" +└── Type: *string +CustomCertificate_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (3 properties) + ├── KeyVaultBaseUri: *string + ├── KeyVaultSecretName: *string + └── KeyVaultSecretVersion: *string +CustomDomain_STATUS: Object (5 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (3 properties) +│ ├── CustomCertificate: *Object (1 property) +│ │ └── Id: *string +│ ├── DomainName: *string +│ └── ProvisioningState: *Enum (9 values) +│ ├── "Canceled" +│ ├── "Creating" +│ ├── "Deleting" +│ ├── "Failed" +│ ├── "Moving" +│ ├── "Running" +│ ├── "Succeeded" +│ ├── "Unknown" +│ └── "Updating" +├── SystemData: *Object (6 properties) +│ ├── CreatedAt: *string +│ ├── CreatedBy: *string +│ ├── CreatedByType: *Enum (4 values) +│ │ ├── "Application" +│ │ ├── "Key" +│ │ ├── "ManagedIdentity" +│ │ └── "User" +│ ├── LastModifiedAt: *string +│ ├── LastModifiedBy: *string +│ └── LastModifiedByType: *Enum (4 values) +│ ├── "Application" +│ ├── "Key" +│ ├── "ManagedIdentity" +│ └── "User" +└── Type: *string +CustomDomain_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (2 properties) + ├── CustomCertificate: *Object (1 property) + │ └── Id: *string + └── DomainName: *string +Replica_STATUS: Object (8 properties) +├── Id: *string +├── Location: *string +├── Name: *string +├── Properties: *Object (3 properties) +│ ├── ProvisioningState: *Enum (9 values) +│ │ ├── "Canceled" +│ │ ├── "Creating" +│ │ ├── "Deleting" +│ │ ├── "Failed" +│ │ ├── "Moving" +│ │ ├── "Running" +│ │ ├── "Succeeded" +│ │ ├── "Unknown" +│ │ └── "Updating" +│ ├── RegionEndpointEnabled: *string +│ └── ResourceStopped: *string +├── Sku: *Object (5 properties) +│ ├── Capacity: *int +│ ├── Family: *string +│ ├── Name: *string +│ ├── Size: *string +│ └── Tier: *Enum (4 values) +│ ├── "Basic" +│ ├── "Free" +│ ├── "Premium" +│ └── "Standard" +├── SystemData: *Object (6 properties) +│ ├── CreatedAt: *string +│ ├── CreatedBy: *string +│ ├── CreatedByType: *Enum (4 values) +│ │ ├── "Application" +│ │ ├── "Key" +│ │ ├── "ManagedIdentity" +│ │ └── "User" +│ ├── LastModifiedAt: *string +│ ├── LastModifiedBy: *string +│ └── LastModifiedByType: *Enum (4 values) +│ ├── "Application" +│ ├── "Key" +│ ├── "ManagedIdentity" +│ └── "User" +├── Tags: map[string]string +└── Type: *string +Replica_Spec: Object (5 properties) +├── Location: *string +├── Name: string +├── Properties: *Object (2 properties) +│ ├── RegionEndpointEnabled: *string +│ └── ResourceStopped: *string +├── Sku: *Object (3 properties) +│ ├── Capacity: *int +│ ├── Name: *string +│ └── Tier: *Enum (4 values) +│ ├── "Basic" +│ ├── "Free" +│ ├── "Premium" +│ └── "Standard" +└── Tags: map[string]string +SignalR_STATUS: Object (10 properties) +├── Id: *string +├── Identity: *Object (4 properties) +│ ├── PrincipalId: *string +│ ├── TenantId: *string +│ ├── Type: *Enum (3 values) +│ │ ├── "None" +│ │ ├── "SystemAssigned" +│ │ └── "UserAssigned" +│ └── UserAssignedIdentities: map[string]Object (2 properties) +│ ├── ClientId: *string +│ └── PrincipalId: *string +├── Kind: *Enum (2 values) +│ ├── "RawWebSockets" +│ └── "SignalR" +├── Location: *string +├── Name: *string +├── Properties: *Object (22 properties) +│ ├── Cors: *Object (1 property) +│ │ └── AllowedOrigins: string[] +│ ├── DisableAadAuth: *bool +│ ├── DisableLocalAuth: *bool +│ ├── ExternalIP: *string +│ ├── Features: Object (3 properties)[] +│ │ ├── Flag: *Enum (4 values) +│ │ │ ├── "EnableConnectivityLogs" +│ │ │ ├── "EnableLiveTrace" +│ │ │ ├── "EnableMessagingLogs" +│ │ │ └── "ServiceMode" +│ │ ├── Properties: map[string]string +│ │ └── Value: *string +│ ├── HostName: *string +│ ├── HostNamePrefix: *string +│ ├── LiveTraceConfiguration: *Object (2 properties) +│ │ ├── Categories: Object (2 properties)[] +│ │ │ ├── Enabled: *string +│ │ │ └── Name: *string +│ │ └── Enabled: *string +│ ├── NetworkACLs: *Object (4 properties) +│ │ ├── DefaultAction: *Enum (2 values) +│ │ │ ├── "Allow" +│ │ │ └── "Deny" +│ │ ├── IpRules: Object (2 properties)[] +│ │ │ ├── Action: *Enum (2 values) +│ │ │ │ ├── "Allow" +│ │ │ │ └── "Deny" +│ │ │ └── Value: *string +│ │ ├── PrivateEndpoints: Object (3 properties)[] +│ │ │ ├── Allow: Enum (4 values)[] +│ │ │ │ ├── "ClientConnection" +│ │ │ │ ├── "RESTAPI" +│ │ │ │ ├── "ServerConnection" +│ │ │ │ └── "Trace" +│ │ │ ├── Deny: Enum (4 values)[] +│ │ │ │ ├── "ClientConnection" +│ │ │ │ ├── "RESTAPI" +│ │ │ │ ├── "ServerConnection" +│ │ │ │ └── "Trace" +│ │ │ └── Name: *string +│ │ └── PublicNetwork: *Object (2 properties) +│ │ ├── Allow: Enum (4 values)[] +│ │ │ ├── "ClientConnection" +│ │ │ ├── "RESTAPI" +│ │ │ ├── "ServerConnection" +│ │ │ └── "Trace" +│ │ └── Deny: Enum (4 values)[] +│ │ ├── "ClientConnection" +│ │ ├── "RESTAPI" +│ │ ├── "ServerConnection" +│ │ └── "Trace" +│ ├── PrivateEndpointConnections: Object (1 property)[] +│ │ └── Id: *string +│ ├── ProvisioningState: *Enum (9 values) +│ │ ├── "Canceled" +│ │ ├── "Creating" +│ │ ├── "Deleting" +│ │ ├── "Failed" +│ │ ├── "Moving" +│ │ ├── "Running" +│ │ ├── "Succeeded" +│ │ ├── "Unknown" +│ │ └── "Updating" +│ ├── PublicNetworkAccess: *string +│ ├── PublicPort: *int +│ ├── RegionEndpointEnabled: *string +│ ├── ResourceLogConfiguration: *Object (1 property) +│ │ └── Categories: Object (2 properties)[] +│ │ ├── Enabled: *string +│ │ └── Name: *string +│ ├── ResourceStopped: *string +│ ├── ServerPort: *int +│ ├── Serverless: *Object (1 property) +│ │ └── ConnectionTimeoutInSeconds: *int +│ ├── SharedPrivateLinkResources: Object (1 property)[] +│ │ └── Id: *string +│ ├── Tls: *Object (1 property) +│ │ └── ClientCertEnabled: *bool +│ ├── Upstream: *Object (1 property) +│ │ └── Templates: Object (5 properties)[] +│ │ ├── Auth: *Object (2 properties) +│ │ │ ├── ManagedIdentity: *Object (1 property) +│ │ │ │ └── Resource: *string +│ │ │ └── Type: *Enum (2 values) +│ │ │ ├── "ManagedIdentity" +│ │ │ └── "None" +│ │ ├── CategoryPattern: *string +│ │ ├── EventPattern: *string +│ │ ├── HubPattern: *string +│ │ └── UrlTemplate: *string +│ └── Version: *string +├── Sku: *Object (5 properties) +│ ├── Capacity: *int +│ ├── Family: *string +│ ├── Name: *string +│ ├── Size: *string +│ └── Tier: *Enum (4 values) +│ ├── "Basic" +│ ├── "Free" +│ ├── "Premium" +│ └── "Standard" +├── SystemData: *Object (6 properties) +│ ├── CreatedAt: *string +│ ├── CreatedBy: *string +│ ├── CreatedByType: *Enum (4 values) +│ │ ├── "Application" +│ │ ├── "Key" +│ │ ├── "ManagedIdentity" +│ │ └── "User" +│ ├── LastModifiedAt: *string +│ ├── LastModifiedBy: *string +│ └── LastModifiedByType: *Enum (4 values) +│ ├── "Application" +│ ├── "Key" +│ ├── "ManagedIdentity" +│ └── "User" +├── Tags: map[string]string +└── Type: *string +SignalR_Spec: Object (7 properties) +├── Identity: *Object (2 properties) +│ ├── Type: *Enum (3 values) +│ │ ├── "None" +│ │ ├── "SystemAssigned" +│ │ └── "UserAssigned" +│ └── UserAssignedIdentities: map[string]Object (0 properties) +├── Kind: *Enum (2 values) +│ ├── "RawWebSockets" +│ └── "SignalR" +├── Location: *string +├── Name: string +├── Properties: *Object (13 properties) +│ ├── Cors: *Object (1 property) +│ │ └── AllowedOrigins: string[] +│ ├── DisableAadAuth: *bool +│ ├── DisableLocalAuth: *bool +│ ├── Features: Object (3 properties)[] +│ │ ├── Flag: *Enum (4 values) +│ │ │ ├── "EnableConnectivityLogs" +│ │ │ ├── "EnableLiveTrace" +│ │ │ ├── "EnableMessagingLogs" +│ │ │ └── "ServiceMode" +│ │ ├── Properties: map[string]string +│ │ └── Value: *string +│ ├── LiveTraceConfiguration: *Object (2 properties) +│ │ ├── Categories: Object (2 properties)[] +│ │ │ ├── Enabled: *string +│ │ │ └── Name: *string +│ │ └── Enabled: *string +│ ├── NetworkACLs: *Object (4 properties) +│ │ ├── DefaultAction: *Enum (2 values) +│ │ │ ├── "Allow" +│ │ │ └── "Deny" +│ │ ├── IpRules: Object (2 properties)[] +│ │ │ ├── Action: *Enum (2 values) +│ │ │ │ ├── "Allow" +│ │ │ │ └── "Deny" +│ │ │ └── Value: *string +│ │ ├── PrivateEndpoints: Object (3 properties)[] +│ │ │ ├── Allow: Enum (4 values)[] +│ │ │ │ ├── "ClientConnection" +│ │ │ │ ├── "RESTAPI" +│ │ │ │ ├── "ServerConnection" +│ │ │ │ └── "Trace" +│ │ │ ├── Deny: Enum (4 values)[] +│ │ │ │ ├── "ClientConnection" +│ │ │ │ ├── "RESTAPI" +│ │ │ │ ├── "ServerConnection" +│ │ │ │ └── "Trace" +│ │ │ └── Name: *string +│ │ └── PublicNetwork: *Object (2 properties) +│ │ ├── Allow: Enum (4 values)[] +│ │ │ ├── "ClientConnection" +│ │ │ ├── "RESTAPI" +│ │ │ ├── "ServerConnection" +│ │ │ └── "Trace" +│ │ └── Deny: Enum (4 values)[] +│ │ ├── "ClientConnection" +│ │ ├── "RESTAPI" +│ │ ├── "ServerConnection" +│ │ └── "Trace" +│ ├── PublicNetworkAccess: *string +│ ├── RegionEndpointEnabled: *string +│ ├── ResourceLogConfiguration: *Object (1 property) +│ │ └── Categories: Object (2 properties)[] +│ │ ├── Enabled: *string +│ │ └── Name: *string +│ ├── ResourceStopped: *string +│ ├── Serverless: *Object (1 property) +│ │ └── ConnectionTimeoutInSeconds: *int +│ ├── Tls: *Object (1 property) +│ │ └── ClientCertEnabled: *bool +│ └── Upstream: *Object (1 property) +│ └── Templates: Object (5 properties)[] +│ ├── Auth: *Object (2 properties) +│ │ ├── ManagedIdentity: *Object (1 property) +│ │ │ └── Resource: *string +│ │ └── Type: *Enum (2 values) +│ │ ├── "ManagedIdentity" +│ │ └── "None" +│ ├── CategoryPattern: *string +│ ├── EventPattern: *string +│ ├── HubPattern: *string +│ └── UrlTemplate: *string +├── Sku: *Object (3 properties) +│ ├── Capacity: *int +│ ├── Name: *string +│ └── Tier: *Enum (4 values) +│ ├── "Basic" +│ ├── "Free" +│ ├── "Premium" +│ └── "Standard" +└── Tags: map[string]string diff --git a/v2/api/signalrservice/v1api20240301/custom_certificate_types_gen.go b/v2/api/signalrservice/v1api20240301/custom_certificate_types_gen.go new file mode 100644 index 00000000000..6c542618715 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/custom_certificate_types_gen.go @@ -0,0 +1,1304 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/arm" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customCertificates/{certificateName} +type CustomCertificate struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec CustomCertificate_Spec `json:"spec,omitempty"` + Status CustomCertificate_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &CustomCertificate{} + +// GetConditions returns the conditions of the resource +func (certificate *CustomCertificate) GetConditions() conditions.Conditions { + return certificate.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (certificate *CustomCertificate) SetConditions(conditions conditions.Conditions) { + certificate.Status.Conditions = conditions +} + +var _ conversion.Convertible = &CustomCertificate{} + +// ConvertFrom populates our CustomCertificate from the provided hub CustomCertificate +func (certificate *CustomCertificate) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.CustomCertificate) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/CustomCertificate but received %T instead", hub) + } + + return certificate.AssignProperties_From_CustomCertificate(source) +} + +// ConvertTo populates the provided hub CustomCertificate from our CustomCertificate +func (certificate *CustomCertificate) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.CustomCertificate) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/CustomCertificate but received %T instead", hub) + } + + return certificate.AssignProperties_To_CustomCertificate(destination) +} + +// +kubebuilder:webhook:path=/mutate-signalrservice-azure-com-v1api20240301-customcertificate,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=customcertificates,verbs=create;update,versions=v1api20240301,name=default.v1api20240301.customcertificates.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &CustomCertificate{} + +// Default applies defaults to the CustomCertificate resource +func (certificate *CustomCertificate) Default() { + certificate.defaultImpl() + var temp any = certificate + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (certificate *CustomCertificate) defaultAzureName() { + if certificate.Spec.AzureName == "" { + certificate.Spec.AzureName = certificate.Name + } +} + +// defaultImpl applies the code generated defaults to the CustomCertificate resource +func (certificate *CustomCertificate) defaultImpl() { certificate.defaultAzureName() } + +var _ configmaps.Exporter = &CustomCertificate{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (certificate *CustomCertificate) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if certificate.Spec.OperatorSpec == nil { + return nil + } + return certificate.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &CustomCertificate{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (certificate *CustomCertificate) SecretDestinationExpressions() []*core.DestinationExpression { + if certificate.Spec.OperatorSpec == nil { + return nil + } + return certificate.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &CustomCertificate{} + +// InitializeSpec initializes the spec for this resource from the given status +func (certificate *CustomCertificate) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*CustomCertificate_STATUS); ok { + return certificate.Spec.Initialize_From_CustomCertificate_STATUS(s) + } + + return fmt.Errorf("expected Status of type CustomCertificate_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &CustomCertificate{} + +// AzureName returns the Azure name of the resource +func (certificate *CustomCertificate) AzureName() string { + return certificate.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (certificate CustomCertificate) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (certificate *CustomCertificate) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (certificate *CustomCertificate) GetSpec() genruntime.ConvertibleSpec { + return &certificate.Spec +} + +// GetStatus returns the status of this resource +func (certificate *CustomCertificate) GetStatus() genruntime.ConvertibleStatus { + return &certificate.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (certificate *CustomCertificate) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/customCertificates" +func (certificate *CustomCertificate) GetType() string { + return "Microsoft.SignalRService/signalR/customCertificates" +} + +// NewEmptyStatus returns a new empty (blank) status +func (certificate *CustomCertificate) NewEmptyStatus() genruntime.ConvertibleStatus { + return &CustomCertificate_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (certificate *CustomCertificate) Owner() *genruntime.ResourceReference { + if certificate.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(certificate.Spec) + return certificate.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (certificate *CustomCertificate) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*CustomCertificate_STATUS); ok { + certificate.Status = *st + return nil + } + + // Convert status to required version + var st CustomCertificate_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + certificate.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-signalrservice-azure-com-v1api20240301-customcertificate,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=customcertificates,verbs=create;update,versions=v1api20240301,name=validate.v1api20240301.customcertificates.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &CustomCertificate{} + +// ValidateCreate validates the creation of the resource +func (certificate *CustomCertificate) ValidateCreate() (admission.Warnings, error) { + validations := certificate.createValidations() + var temp any = certificate + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (certificate *CustomCertificate) ValidateDelete() (admission.Warnings, error) { + validations := certificate.deleteValidations() + var temp any = certificate + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (certificate *CustomCertificate) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := certificate.updateValidations() + var temp any = certificate + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate(old, validations) +} + +// createValidations validates the creation of the resource +func (certificate *CustomCertificate) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){certificate.validateResourceReferences, certificate.validateOwnerReference, certificate.validateSecretDestinations, certificate.validateConfigMapDestinations, certificate.validateOptionalConfigMapReferences} +} + +// deleteValidations validates the deletion of the resource +func (certificate *CustomCertificate) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (certificate *CustomCertificate) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return certificate.validateResourceReferences() + }, + certificate.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return certificate.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return certificate.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return certificate.validateConfigMapDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return certificate.validateOptionalConfigMapReferences() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (certificate *CustomCertificate) validateConfigMapDestinations() (admission.Warnings, error) { + if certificate.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(certificate, nil, certificate.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOptionalConfigMapReferences validates all optional configmap reference pairs to ensure that at most 1 is set +func (certificate *CustomCertificate) validateOptionalConfigMapReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindOptionalConfigMapReferences(&certificate.Spec) + if err != nil { + return nil, err + } + return configmaps.ValidateOptionalReferences(refs) +} + +// validateOwnerReference validates the owner field +func (certificate *CustomCertificate) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(certificate) +} + +// validateResourceReferences validates all resource references +func (certificate *CustomCertificate) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&certificate.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (certificate *CustomCertificate) validateSecretDestinations() (admission.Warnings, error) { + if certificate.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(certificate, nil, certificate.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (certificate *CustomCertificate) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*CustomCertificate) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, certificate) +} + +// AssignProperties_From_CustomCertificate populates our CustomCertificate from the provided source CustomCertificate +func (certificate *CustomCertificate) AssignProperties_From_CustomCertificate(source *storage.CustomCertificate) error { + + // ObjectMeta + certificate.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec CustomCertificate_Spec + err := spec.AssignProperties_From_CustomCertificate_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_CustomCertificate_Spec() to populate field Spec") + } + certificate.Spec = spec + + // Status + var status CustomCertificate_STATUS + err = status.AssignProperties_From_CustomCertificate_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_CustomCertificate_STATUS() to populate field Status") + } + certificate.Status = status + + // No error + return nil +} + +// AssignProperties_To_CustomCertificate populates the provided destination CustomCertificate from our CustomCertificate +func (certificate *CustomCertificate) AssignProperties_To_CustomCertificate(destination *storage.CustomCertificate) error { + + // ObjectMeta + destination.ObjectMeta = *certificate.ObjectMeta.DeepCopy() + + // Spec + var spec storage.CustomCertificate_Spec + err := certificate.Spec.AssignProperties_To_CustomCertificate_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_CustomCertificate_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.CustomCertificate_STATUS + err = certificate.Status.AssignProperties_To_CustomCertificate_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_CustomCertificate_STATUS() to populate field Status") + } + destination.Status = status + + // No error + return nil +} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (certificate *CustomCertificate) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: certificate.Spec.OriginalVersion(), + Kind: "CustomCertificate", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customCertificates/{certificateName} +type CustomCertificateList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CustomCertificate `json:"items"` +} + +// +kubebuilder:validation:Enum={"2024-03-01"} +type APIVersion string + +const APIVersion_Value = APIVersion("2024-03-01") + +type CustomCertificate_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + + // KeyVaultBaseUri: Base uri of the KeyVault that stores certificate. + KeyVaultBaseUri *string `json:"keyVaultBaseUri,omitempty" optionalConfigMapPair:"KeyVaultBaseUri"` + + // KeyVaultBaseUriFromConfig: Base uri of the KeyVault that stores certificate. + KeyVaultBaseUriFromConfig *genruntime.ConfigMapReference `json:"keyVaultBaseUriFromConfig,omitempty" optionalConfigMapPair:"KeyVaultBaseUri"` + + // +kubebuilder:validation:Required + // KeyVaultSecretName: Certificate secret name. + KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"` + + // KeyVaultSecretVersion: Certificate secret version. + KeyVaultSecretVersion *string `json:"keyVaultSecretVersion,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *CustomCertificateOperatorSpec `json:"operatorSpec,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a signalrservice.azure.com/SignalR resource + Owner *genruntime.KnownResourceReference `group:"signalrservice.azure.com" json:"owner,omitempty" kind:"SignalR"` +} + +var _ genruntime.ARMTransformer = &CustomCertificate_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (certificate *CustomCertificate_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if certificate == nil { + return nil, nil + } + result := &arm.CustomCertificate_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if certificate.KeyVaultBaseUri != nil || + certificate.KeyVaultBaseUriFromConfig != nil || + certificate.KeyVaultSecretName != nil || + certificate.KeyVaultSecretVersion != nil { + result.Properties = &arm.CustomCertificateProperties{} + } + if certificate.KeyVaultBaseUri != nil { + keyVaultBaseUri := *certificate.KeyVaultBaseUri + result.Properties.KeyVaultBaseUri = &keyVaultBaseUri + } + if certificate.KeyVaultBaseUriFromConfig != nil { + keyVaultBaseUriValue, err := resolved.ResolvedConfigMaps.Lookup(*certificate.KeyVaultBaseUriFromConfig) + if err != nil { + return nil, eris.Wrap(err, "looking up configmap for property KeyVaultBaseUri") + } + keyVaultBaseUri := keyVaultBaseUriValue + result.Properties.KeyVaultBaseUri = &keyVaultBaseUri + } + if certificate.KeyVaultSecretName != nil { + keyVaultSecretName := *certificate.KeyVaultSecretName + result.Properties.KeyVaultSecretName = &keyVaultSecretName + } + if certificate.KeyVaultSecretVersion != nil { + keyVaultSecretVersion := *certificate.KeyVaultSecretVersion + result.Properties.KeyVaultSecretVersion = &keyVaultSecretVersion + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (certificate *CustomCertificate_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.CustomCertificate_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (certificate *CustomCertificate_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.CustomCertificate_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.CustomCertificate_Spec, got %T", armInput) + } + + // Set property "AzureName": + certificate.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "KeyVaultBaseUri": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.KeyVaultBaseUri != nil { + keyVaultBaseUri := *typedInput.Properties.KeyVaultBaseUri + certificate.KeyVaultBaseUri = &keyVaultBaseUri + } + } + + // no assignment for property "KeyVaultBaseUriFromConfig" + + // Set property "KeyVaultSecretName": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.KeyVaultSecretName != nil { + keyVaultSecretName := *typedInput.Properties.KeyVaultSecretName + certificate.KeyVaultSecretName = &keyVaultSecretName + } + } + + // Set property "KeyVaultSecretVersion": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.KeyVaultSecretVersion != nil { + keyVaultSecretVersion := *typedInput.Properties.KeyVaultSecretVersion + certificate.KeyVaultSecretVersion = &keyVaultSecretVersion + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + certificate.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &CustomCertificate_Spec{} + +// ConvertSpecFrom populates our CustomCertificate_Spec from the provided source +func (certificate *CustomCertificate_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.CustomCertificate_Spec) + if ok { + // Populate our instance from source + return certificate.AssignProperties_From_CustomCertificate_Spec(src) + } + + // Convert to an intermediate form + src = &storage.CustomCertificate_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = certificate.AssignProperties_From_CustomCertificate_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our CustomCertificate_Spec +func (certificate *CustomCertificate_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.CustomCertificate_Spec) + if ok { + // Populate destination from our instance + return certificate.AssignProperties_To_CustomCertificate_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.CustomCertificate_Spec{} + err := certificate.AssignProperties_To_CustomCertificate_Spec(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecTo()") + } + + // Update dst from our instance + err = dst.ConvertSpecTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecTo()") + } + + return nil +} + +// AssignProperties_From_CustomCertificate_Spec populates our CustomCertificate_Spec from the provided source CustomCertificate_Spec +func (certificate *CustomCertificate_Spec) AssignProperties_From_CustomCertificate_Spec(source *storage.CustomCertificate_Spec) error { + + // AzureName + certificate.AzureName = source.AzureName + + // KeyVaultBaseUri + certificate.KeyVaultBaseUri = genruntime.ClonePointerToString(source.KeyVaultBaseUri) + + // KeyVaultBaseUriFromConfig + if source.KeyVaultBaseUriFromConfig != nil { + keyVaultBaseUriFromConfig := source.KeyVaultBaseUriFromConfig.Copy() + certificate.KeyVaultBaseUriFromConfig = &keyVaultBaseUriFromConfig + } else { + certificate.KeyVaultBaseUriFromConfig = nil + } + + // KeyVaultSecretName + certificate.KeyVaultSecretName = genruntime.ClonePointerToString(source.KeyVaultSecretName) + + // KeyVaultSecretVersion + certificate.KeyVaultSecretVersion = genruntime.ClonePointerToString(source.KeyVaultSecretVersion) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec CustomCertificateOperatorSpec + err := operatorSpec.AssignProperties_From_CustomCertificateOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_CustomCertificateOperatorSpec() to populate field OperatorSpec") + } + certificate.OperatorSpec = &operatorSpec + } else { + certificate.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + certificate.Owner = &owner + } else { + certificate.Owner = nil + } + + // No error + return nil +} + +// AssignProperties_To_CustomCertificate_Spec populates the provided destination CustomCertificate_Spec from our CustomCertificate_Spec +func (certificate *CustomCertificate_Spec) AssignProperties_To_CustomCertificate_Spec(destination *storage.CustomCertificate_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = certificate.AzureName + + // KeyVaultBaseUri + destination.KeyVaultBaseUri = genruntime.ClonePointerToString(certificate.KeyVaultBaseUri) + + // KeyVaultBaseUriFromConfig + if certificate.KeyVaultBaseUriFromConfig != nil { + keyVaultBaseUriFromConfig := certificate.KeyVaultBaseUriFromConfig.Copy() + destination.KeyVaultBaseUriFromConfig = &keyVaultBaseUriFromConfig + } else { + destination.KeyVaultBaseUriFromConfig = nil + } + + // KeyVaultSecretName + destination.KeyVaultSecretName = genruntime.ClonePointerToString(certificate.KeyVaultSecretName) + + // KeyVaultSecretVersion + destination.KeyVaultSecretVersion = genruntime.ClonePointerToString(certificate.KeyVaultSecretVersion) + + // OperatorSpec + if certificate.OperatorSpec != nil { + var operatorSpec storage.CustomCertificateOperatorSpec + err := certificate.OperatorSpec.AssignProperties_To_CustomCertificateOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_CustomCertificateOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = certificate.OriginalVersion() + + // Owner + if certificate.Owner != nil { + owner := certificate.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_CustomCertificate_STATUS populates our CustomCertificate_Spec from the provided source CustomCertificate_STATUS +func (certificate *CustomCertificate_Spec) Initialize_From_CustomCertificate_STATUS(source *CustomCertificate_STATUS) error { + + // KeyVaultBaseUri + certificate.KeyVaultBaseUri = genruntime.ClonePointerToString(source.KeyVaultBaseUri) + + // KeyVaultSecretName + certificate.KeyVaultSecretName = genruntime.ClonePointerToString(source.KeyVaultSecretName) + + // KeyVaultSecretVersion + certificate.KeyVaultSecretVersion = genruntime.ClonePointerToString(source.KeyVaultSecretVersion) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (certificate *CustomCertificate_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (certificate *CustomCertificate_Spec) SetAzureName(azureName string) { + certificate.AzureName = azureName +} + +type CustomCertificate_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // KeyVaultBaseUri: Base uri of the KeyVault that stores certificate. + KeyVaultBaseUri *string `json:"keyVaultBaseUri,omitempty"` + + // KeyVaultSecretName: Certificate secret name. + KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"` + + // KeyVaultSecretVersion: Certificate secret version. + KeyVaultSecretVersion *string `json:"keyVaultSecretVersion,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &CustomCertificate_STATUS{} + +// ConvertStatusFrom populates our CustomCertificate_STATUS from the provided source +func (certificate *CustomCertificate_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.CustomCertificate_STATUS) + if ok { + // Populate our instance from source + return certificate.AssignProperties_From_CustomCertificate_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.CustomCertificate_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = certificate.AssignProperties_From_CustomCertificate_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our CustomCertificate_STATUS +func (certificate *CustomCertificate_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.CustomCertificate_STATUS) + if ok { + // Populate destination from our instance + return certificate.AssignProperties_To_CustomCertificate_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.CustomCertificate_STATUS{} + err := certificate.AssignProperties_To_CustomCertificate_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } + + // Update dst from our instance + err = dst.ConvertStatusTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusTo()") + } + + return nil +} + +var _ genruntime.FromARMConverter = &CustomCertificate_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (certificate *CustomCertificate_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.CustomCertificate_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (certificate *CustomCertificate_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.CustomCertificate_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.CustomCertificate_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + certificate.Id = &id + } + + // Set property "KeyVaultBaseUri": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.KeyVaultBaseUri != nil { + keyVaultBaseUri := *typedInput.Properties.KeyVaultBaseUri + certificate.KeyVaultBaseUri = &keyVaultBaseUri + } + } + + // Set property "KeyVaultSecretName": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.KeyVaultSecretName != nil { + keyVaultSecretName := *typedInput.Properties.KeyVaultSecretName + certificate.KeyVaultSecretName = &keyVaultSecretName + } + } + + // Set property "KeyVaultSecretVersion": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.KeyVaultSecretVersion != nil { + keyVaultSecretVersion := *typedInput.Properties.KeyVaultSecretVersion + certificate.KeyVaultSecretVersion = &keyVaultSecretVersion + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + certificate.Name = &name + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := ProvisioningState_STATUS(temp) + certificate.ProvisioningState = &provisioningState + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + certificate.SystemData = &systemData + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + certificate.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_CustomCertificate_STATUS populates our CustomCertificate_STATUS from the provided source CustomCertificate_STATUS +func (certificate *CustomCertificate_STATUS) AssignProperties_From_CustomCertificate_STATUS(source *storage.CustomCertificate_STATUS) error { + + // Conditions + certificate.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + certificate.Id = genruntime.ClonePointerToString(source.Id) + + // KeyVaultBaseUri + certificate.KeyVaultBaseUri = genruntime.ClonePointerToString(source.KeyVaultBaseUri) + + // KeyVaultSecretName + certificate.KeyVaultSecretName = genruntime.ClonePointerToString(source.KeyVaultSecretName) + + // KeyVaultSecretVersion + certificate.KeyVaultSecretVersion = genruntime.ClonePointerToString(source.KeyVaultSecretVersion) + + // Name + certificate.Name = genruntime.ClonePointerToString(source.Name) + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, provisioningState_STATUS_Values) + certificate.ProvisioningState = &provisioningStateTemp + } else { + certificate.ProvisioningState = nil + } + + // SystemData + if source.SystemData != nil { + var systemDatum SystemData_STATUS + err := systemDatum.AssignProperties_From_SystemData_STATUS(source.SystemData) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SystemData_STATUS() to populate field SystemData") + } + certificate.SystemData = &systemDatum + } else { + certificate.SystemData = nil + } + + // Type + certificate.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_CustomCertificate_STATUS populates the provided destination CustomCertificate_STATUS from our CustomCertificate_STATUS +func (certificate *CustomCertificate_STATUS) AssignProperties_To_CustomCertificate_STATUS(destination *storage.CustomCertificate_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(certificate.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(certificate.Id) + + // KeyVaultBaseUri + destination.KeyVaultBaseUri = genruntime.ClonePointerToString(certificate.KeyVaultBaseUri) + + // KeyVaultSecretName + destination.KeyVaultSecretName = genruntime.ClonePointerToString(certificate.KeyVaultSecretName) + + // KeyVaultSecretVersion + destination.KeyVaultSecretVersion = genruntime.ClonePointerToString(certificate.KeyVaultSecretVersion) + + // Name + destination.Name = genruntime.ClonePointerToString(certificate.Name) + + // ProvisioningState + if certificate.ProvisioningState != nil { + provisioningState := string(*certificate.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // SystemData + if certificate.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := certificate.SystemData.AssignProperties_To_SystemData_STATUS(&systemDatum) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SystemData_STATUS() to populate field SystemData") + } + destination.SystemData = &systemDatum + } else { + destination.SystemData = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(certificate.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type CustomCertificateOperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions). + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// AssignProperties_From_CustomCertificateOperatorSpec populates our CustomCertificateOperatorSpec from the provided source CustomCertificateOperatorSpec +func (operator *CustomCertificateOperatorSpec) AssignProperties_From_CustomCertificateOperatorSpec(source *storage.CustomCertificateOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // No error + return nil +} + +// AssignProperties_To_CustomCertificateOperatorSpec populates the provided destination CustomCertificateOperatorSpec from our CustomCertificateOperatorSpec +func (operator *CustomCertificateOperatorSpec) AssignProperties_To_CustomCertificateOperatorSpec(destination *storage.CustomCertificateOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Provisioning state of the resource. +type ProvisioningState_STATUS string + +const ( + ProvisioningState_STATUS_Canceled = ProvisioningState_STATUS("Canceled") + ProvisioningState_STATUS_Creating = ProvisioningState_STATUS("Creating") + ProvisioningState_STATUS_Deleting = ProvisioningState_STATUS("Deleting") + ProvisioningState_STATUS_Failed = ProvisioningState_STATUS("Failed") + ProvisioningState_STATUS_Moving = ProvisioningState_STATUS("Moving") + ProvisioningState_STATUS_Running = ProvisioningState_STATUS("Running") + ProvisioningState_STATUS_Succeeded = ProvisioningState_STATUS("Succeeded") + ProvisioningState_STATUS_Unknown = ProvisioningState_STATUS("Unknown") + ProvisioningState_STATUS_Updating = ProvisioningState_STATUS("Updating") +) + +// Mapping from string to ProvisioningState_STATUS +var provisioningState_STATUS_Values = map[string]ProvisioningState_STATUS{ + "canceled": ProvisioningState_STATUS_Canceled, + "creating": ProvisioningState_STATUS_Creating, + "deleting": ProvisioningState_STATUS_Deleting, + "failed": ProvisioningState_STATUS_Failed, + "moving": ProvisioningState_STATUS_Moving, + "running": ProvisioningState_STATUS_Running, + "succeeded": ProvisioningState_STATUS_Succeeded, + "unknown": ProvisioningState_STATUS_Unknown, + "updating": ProvisioningState_STATUS_Updating, +} + +// Metadata pertaining to creation and last modification of the resource. +type SystemData_STATUS struct { + // CreatedAt: The timestamp of resource creation (UTC). + CreatedAt *string `json:"createdAt,omitempty"` + + // CreatedBy: The identity that created the resource. + CreatedBy *string `json:"createdBy,omitempty"` + + // CreatedByType: The type of identity that created the resource. + CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"` + + // LastModifiedAt: The timestamp of resource last modification (UTC) + LastModifiedAt *string `json:"lastModifiedAt,omitempty"` + + // LastModifiedBy: The identity that last modified the resource. + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + + // LastModifiedByType: The type of identity that last modified the resource. + LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"` +} + +var _ genruntime.FromARMConverter = &SystemData_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (data *SystemData_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SystemData_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (data *SystemData_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SystemData_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SystemData_STATUS, got %T", armInput) + } + + // Set property "CreatedAt": + if typedInput.CreatedAt != nil { + createdAt := *typedInput.CreatedAt + data.CreatedAt = &createdAt + } + + // Set property "CreatedBy": + if typedInput.CreatedBy != nil { + createdBy := *typedInput.CreatedBy + data.CreatedBy = &createdBy + } + + // Set property "CreatedByType": + if typedInput.CreatedByType != nil { + var temp string + temp = string(*typedInput.CreatedByType) + createdByType := SystemData_CreatedByType_STATUS(temp) + data.CreatedByType = &createdByType + } + + // Set property "LastModifiedAt": + if typedInput.LastModifiedAt != nil { + lastModifiedAt := *typedInput.LastModifiedAt + data.LastModifiedAt = &lastModifiedAt + } + + // Set property "LastModifiedBy": + if typedInput.LastModifiedBy != nil { + lastModifiedBy := *typedInput.LastModifiedBy + data.LastModifiedBy = &lastModifiedBy + } + + // Set property "LastModifiedByType": + if typedInput.LastModifiedByType != nil { + var temp string + temp = string(*typedInput.LastModifiedByType) + lastModifiedByType := SystemData_LastModifiedByType_STATUS(temp) + data.LastModifiedByType = &lastModifiedByType + } + + // No error + return nil +} + +// AssignProperties_From_SystemData_STATUS populates our SystemData_STATUS from the provided source SystemData_STATUS +func (data *SystemData_STATUS) AssignProperties_From_SystemData_STATUS(source *storage.SystemData_STATUS) error { + + // CreatedAt + data.CreatedAt = genruntime.ClonePointerToString(source.CreatedAt) + + // CreatedBy + data.CreatedBy = genruntime.ClonePointerToString(source.CreatedBy) + + // CreatedByType + if source.CreatedByType != nil { + createdByType := *source.CreatedByType + createdByTypeTemp := genruntime.ToEnum(createdByType, systemData_CreatedByType_STATUS_Values) + data.CreatedByType = &createdByTypeTemp + } else { + data.CreatedByType = nil + } + + // LastModifiedAt + data.LastModifiedAt = genruntime.ClonePointerToString(source.LastModifiedAt) + + // LastModifiedBy + data.LastModifiedBy = genruntime.ClonePointerToString(source.LastModifiedBy) + + // LastModifiedByType + if source.LastModifiedByType != nil { + lastModifiedByType := *source.LastModifiedByType + lastModifiedByTypeTemp := genruntime.ToEnum(lastModifiedByType, systemData_LastModifiedByType_STATUS_Values) + data.LastModifiedByType = &lastModifiedByTypeTemp + } else { + data.LastModifiedByType = nil + } + + // No error + return nil +} + +// AssignProperties_To_SystemData_STATUS populates the provided destination SystemData_STATUS from our SystemData_STATUS +func (data *SystemData_STATUS) AssignProperties_To_SystemData_STATUS(destination *storage.SystemData_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // CreatedAt + destination.CreatedAt = genruntime.ClonePointerToString(data.CreatedAt) + + // CreatedBy + destination.CreatedBy = genruntime.ClonePointerToString(data.CreatedBy) + + // CreatedByType + if data.CreatedByType != nil { + createdByType := string(*data.CreatedByType) + destination.CreatedByType = &createdByType + } else { + destination.CreatedByType = nil + } + + // LastModifiedAt + destination.LastModifiedAt = genruntime.ClonePointerToString(data.LastModifiedAt) + + // LastModifiedBy + destination.LastModifiedBy = genruntime.ClonePointerToString(data.LastModifiedBy) + + // LastModifiedByType + if data.LastModifiedByType != nil { + lastModifiedByType := string(*data.LastModifiedByType) + destination.LastModifiedByType = &lastModifiedByType + } else { + destination.LastModifiedByType = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type SystemData_CreatedByType_STATUS string + +const ( + SystemData_CreatedByType_STATUS_Application = SystemData_CreatedByType_STATUS("Application") + SystemData_CreatedByType_STATUS_Key = SystemData_CreatedByType_STATUS("Key") + SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity") + SystemData_CreatedByType_STATUS_User = SystemData_CreatedByType_STATUS("User") +) + +// Mapping from string to SystemData_CreatedByType_STATUS +var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{ + "application": SystemData_CreatedByType_STATUS_Application, + "key": SystemData_CreatedByType_STATUS_Key, + "managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity, + "user": SystemData_CreatedByType_STATUS_User, +} + +type SystemData_LastModifiedByType_STATUS string + +const ( + SystemData_LastModifiedByType_STATUS_Application = SystemData_LastModifiedByType_STATUS("Application") + SystemData_LastModifiedByType_STATUS_Key = SystemData_LastModifiedByType_STATUS("Key") + SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity") + SystemData_LastModifiedByType_STATUS_User = SystemData_LastModifiedByType_STATUS("User") +) + +// Mapping from string to SystemData_LastModifiedByType_STATUS +var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{ + "application": SystemData_LastModifiedByType_STATUS_Application, + "key": SystemData_LastModifiedByType_STATUS_Key, + "managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity, + "user": SystemData_LastModifiedByType_STATUS_User, +} + +func init() { + SchemeBuilder.Register(&CustomCertificate{}, &CustomCertificateList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/custom_certificate_types_gen_test.go b/v2/api/signalrservice/v1api20240301/custom_certificate_types_gen_test.go new file mode 100644 index 00000000000..a29a3bcb4c7 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/custom_certificate_types_gen_test.go @@ -0,0 +1,629 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomCertificate_WhenConvertedToHub_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + parameters.MinSuccessfulTests = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomCertificate to hub returns original", + prop.ForAll(RunResourceConversionTestForCustomCertificate, CustomCertificateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForCustomCertificate tests if a specific instance of CustomCertificate round trips to the hub storage version and back losslessly +func RunResourceConversionTestForCustomCertificate(subject CustomCertificate) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.CustomCertificate + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual CustomCertificate + err = actual.ConvertFrom(&hub) + if err != nil { + return err.Error() + } + + // Compare actual with what we started with + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomCertificate_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomCertificate to CustomCertificate via AssignProperties_To_CustomCertificate & AssignProperties_From_CustomCertificate returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomCertificate, CustomCertificateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomCertificate tests if a specific instance of CustomCertificate can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomCertificate(subject CustomCertificate) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomCertificate + err := copied.AssignProperties_To_CustomCertificate(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomCertificate + err = actual.AssignProperties_From_CustomCertificate(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomCertificate_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate, CustomCertificateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate runs a test to see if a specific instance of CustomCertificate round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate(subject CustomCertificate) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate instances for property testing - lazily instantiated by CustomCertificateGenerator() +var customCertificateGenerator gopter.Gen + +// CustomCertificateGenerator returns a generator of CustomCertificate instances for property testing. +func CustomCertificateGenerator() gopter.Gen { + if customCertificateGenerator != nil { + return customCertificateGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForCustomCertificate(generators) + customCertificateGenerator = gen.Struct(reflect.TypeOf(CustomCertificate{}), generators) + + return customCertificateGenerator +} + +// AddRelatedPropertyGeneratorsForCustomCertificate is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate(gens map[string]gopter.Gen) { + gens["Spec"] = CustomCertificate_SpecGenerator() + gens["Status"] = CustomCertificate_STATUSGenerator() +} + +func Test_CustomCertificateOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomCertificateOperatorSpec to CustomCertificateOperatorSpec via AssignProperties_To_CustomCertificateOperatorSpec & AssignProperties_From_CustomCertificateOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomCertificateOperatorSpec, CustomCertificateOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomCertificateOperatorSpec tests if a specific instance of CustomCertificateOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomCertificateOperatorSpec(subject CustomCertificateOperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomCertificateOperatorSpec + err := copied.AssignProperties_To_CustomCertificateOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomCertificateOperatorSpec + err = actual.AssignProperties_From_CustomCertificateOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomCertificateOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificateOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificateOperatorSpec, CustomCertificateOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificateOperatorSpec runs a test to see if a specific instance of CustomCertificateOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificateOperatorSpec(subject CustomCertificateOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificateOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificateOperatorSpec instances for property testing - lazily instantiated by +// CustomCertificateOperatorSpecGenerator() +var customCertificateOperatorSpecGenerator gopter.Gen + +// CustomCertificateOperatorSpecGenerator returns a generator of CustomCertificateOperatorSpec instances for property testing. +func CustomCertificateOperatorSpecGenerator() gopter.Gen { + if customCertificateOperatorSpecGenerator != nil { + return customCertificateOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + customCertificateOperatorSpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificateOperatorSpec{}), generators) + + return customCertificateOperatorSpecGenerator +} + +func Test_CustomCertificate_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomCertificate_STATUS to CustomCertificate_STATUS via AssignProperties_To_CustomCertificate_STATUS & AssignProperties_From_CustomCertificate_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomCertificate_STATUS, CustomCertificate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomCertificate_STATUS tests if a specific instance of CustomCertificate_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomCertificate_STATUS(subject CustomCertificate_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomCertificate_STATUS + err := copied.AssignProperties_To_CustomCertificate_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomCertificate_STATUS + err = actual.AssignProperties_From_CustomCertificate_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomCertificate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate_STATUS, CustomCertificate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate_STATUS runs a test to see if a specific instance of CustomCertificate_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate_STATUS(subject CustomCertificate_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate_STATUS instances for property testing - lazily instantiated by +// CustomCertificate_STATUSGenerator() +var customCertificate_STATUSGenerator gopter.Gen + +// CustomCertificate_STATUSGenerator returns a generator of CustomCertificate_STATUS instances for property testing. +// We first initialize customCertificate_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomCertificate_STATUSGenerator() gopter.Gen { + if customCertificate_STATUSGenerator != nil { + return customCertificate_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(generators) + customCertificate_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomCertificate_STATUS(generators) + customCertificate_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_STATUS{}), generators) + + return customCertificate_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificate_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultBaseUri"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretName"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretVersion"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomCertificate_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_CustomCertificate_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomCertificate_Spec to CustomCertificate_Spec via AssignProperties_To_CustomCertificate_Spec & AssignProperties_From_CustomCertificate_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomCertificate_Spec, CustomCertificate_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomCertificate_Spec tests if a specific instance of CustomCertificate_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomCertificate_Spec(subject CustomCertificate_Spec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomCertificate_Spec + err := copied.AssignProperties_To_CustomCertificate_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomCertificate_Spec + err = actual.AssignProperties_From_CustomCertificate_Spec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomCertificate_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate_Spec, CustomCertificate_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate_Spec runs a test to see if a specific instance of CustomCertificate_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate_Spec(subject CustomCertificate_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate_Spec instances for property testing - lazily instantiated by +// CustomCertificate_SpecGenerator() +var customCertificate_SpecGenerator gopter.Gen + +// CustomCertificate_SpecGenerator returns a generator of CustomCertificate_Spec instances for property testing. +// We first initialize customCertificate_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomCertificate_SpecGenerator() gopter.Gen { + if customCertificate_SpecGenerator != nil { + return customCertificate_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_Spec(generators) + customCertificate_SpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_Spec(generators) + AddRelatedPropertyGeneratorsForCustomCertificate_Spec(generators) + customCertificate_SpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_Spec{}), generators) + + return customCertificate_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificate_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificate_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["KeyVaultBaseUri"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretName"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretVersion"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomCertificate_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(CustomCertificateOperatorSpecGenerator()) +} + +func Test_SystemData_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SystemData_STATUS to SystemData_STATUS via AssignProperties_To_SystemData_STATUS & AssignProperties_From_SystemData_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSystemData_STATUS, SystemData_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSystemData_STATUS tests if a specific instance of SystemData_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSystemData_STATUS(subject SystemData_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SystemData_STATUS + err := copied.AssignProperties_To_SystemData_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SystemData_STATUS + err = actual.AssignProperties_From_SystemData_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SystemData_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SystemData_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSystemData_STATUS, SystemData_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSystemData_STATUS runs a test to see if a specific instance of SystemData_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSystemData_STATUS(subject SystemData_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SystemData_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SystemData_STATUS instances for property testing - lazily instantiated by SystemData_STATUSGenerator() +var systemData_STATUSGenerator gopter.Gen + +// SystemData_STATUSGenerator returns a generator of SystemData_STATUS instances for property testing. +func SystemData_STATUSGenerator() gopter.Gen { + if systemData_STATUSGenerator != nil { + return systemData_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSystemData_STATUS(generators) + systemData_STATUSGenerator = gen.Struct(reflect.TypeOf(SystemData_STATUS{}), generators) + + return systemData_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSystemData_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter.Gen) { + gens["CreatedAt"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedBy"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedByType"] = gen.PtrOf(gen.OneConstOf( + SystemData_CreatedByType_STATUS_Application, + SystemData_CreatedByType_STATUS_Key, + SystemData_CreatedByType_STATUS_ManagedIdentity, + SystemData_CreatedByType_STATUS_User)) + gens["LastModifiedAt"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedBy"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedByType"] = gen.PtrOf(gen.OneConstOf( + SystemData_LastModifiedByType_STATUS_Application, + SystemData_LastModifiedByType_STATUS_Key, + SystemData_LastModifiedByType_STATUS_ManagedIdentity, + SystemData_LastModifiedByType_STATUS_User)) +} diff --git a/v2/api/signalrservice/v1api20240301/custom_domain_types_gen.go b/v2/api/signalrservice/v1api20240301/custom_domain_types_gen.go new file mode 100644 index 00000000000..a8f54fd0d5b --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/custom_domain_types_gen.go @@ -0,0 +1,1206 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/arm" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customDomains/{name} +type CustomDomain struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec CustomDomain_Spec `json:"spec,omitempty"` + Status CustomDomain_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &CustomDomain{} + +// GetConditions returns the conditions of the resource +func (domain *CustomDomain) GetConditions() conditions.Conditions { + return domain.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (domain *CustomDomain) SetConditions(conditions conditions.Conditions) { + domain.Status.Conditions = conditions +} + +var _ conversion.Convertible = &CustomDomain{} + +// ConvertFrom populates our CustomDomain from the provided hub CustomDomain +func (domain *CustomDomain) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.CustomDomain) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/CustomDomain but received %T instead", hub) + } + + return domain.AssignProperties_From_CustomDomain(source) +} + +// ConvertTo populates the provided hub CustomDomain from our CustomDomain +func (domain *CustomDomain) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.CustomDomain) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/CustomDomain but received %T instead", hub) + } + + return domain.AssignProperties_To_CustomDomain(destination) +} + +// +kubebuilder:webhook:path=/mutate-signalrservice-azure-com-v1api20240301-customdomain,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=customdomains,verbs=create;update,versions=v1api20240301,name=default.v1api20240301.customdomains.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &CustomDomain{} + +// Default applies defaults to the CustomDomain resource +func (domain *CustomDomain) Default() { + domain.defaultImpl() + var temp any = domain + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (domain *CustomDomain) defaultAzureName() { + if domain.Spec.AzureName == "" { + domain.Spec.AzureName = domain.Name + } +} + +// defaultImpl applies the code generated defaults to the CustomDomain resource +func (domain *CustomDomain) defaultImpl() { domain.defaultAzureName() } + +var _ configmaps.Exporter = &CustomDomain{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (domain *CustomDomain) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if domain.Spec.OperatorSpec == nil { + return nil + } + return domain.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &CustomDomain{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (domain *CustomDomain) SecretDestinationExpressions() []*core.DestinationExpression { + if domain.Spec.OperatorSpec == nil { + return nil + } + return domain.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &CustomDomain{} + +// InitializeSpec initializes the spec for this resource from the given status +func (domain *CustomDomain) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*CustomDomain_STATUS); ok { + return domain.Spec.Initialize_From_CustomDomain_STATUS(s) + } + + return fmt.Errorf("expected Status of type CustomDomain_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &CustomDomain{} + +// AzureName returns the Azure name of the resource +func (domain *CustomDomain) AzureName() string { + return domain.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (domain CustomDomain) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (domain *CustomDomain) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (domain *CustomDomain) GetSpec() genruntime.ConvertibleSpec { + return &domain.Spec +} + +// GetStatus returns the status of this resource +func (domain *CustomDomain) GetStatus() genruntime.ConvertibleStatus { + return &domain.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (domain *CustomDomain) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/customDomains" +func (domain *CustomDomain) GetType() string { + return "Microsoft.SignalRService/signalR/customDomains" +} + +// NewEmptyStatus returns a new empty (blank) status +func (domain *CustomDomain) NewEmptyStatus() genruntime.ConvertibleStatus { + return &CustomDomain_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (domain *CustomDomain) Owner() *genruntime.ResourceReference { + if domain.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(domain.Spec) + return domain.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (domain *CustomDomain) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*CustomDomain_STATUS); ok { + domain.Status = *st + return nil + } + + // Convert status to required version + var st CustomDomain_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + domain.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-signalrservice-azure-com-v1api20240301-customdomain,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=customdomains,verbs=create;update,versions=v1api20240301,name=validate.v1api20240301.customdomains.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &CustomDomain{} + +// ValidateCreate validates the creation of the resource +func (domain *CustomDomain) ValidateCreate() (admission.Warnings, error) { + validations := domain.createValidations() + var temp any = domain + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (domain *CustomDomain) ValidateDelete() (admission.Warnings, error) { + validations := domain.deleteValidations() + var temp any = domain + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (domain *CustomDomain) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := domain.updateValidations() + var temp any = domain + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate(old, validations) +} + +// createValidations validates the creation of the resource +func (domain *CustomDomain) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){domain.validateResourceReferences, domain.validateOwnerReference, domain.validateSecretDestinations, domain.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (domain *CustomDomain) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (domain *CustomDomain) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return domain.validateResourceReferences() + }, + domain.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return domain.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return domain.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return domain.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (domain *CustomDomain) validateConfigMapDestinations() (admission.Warnings, error) { + if domain.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(domain, nil, domain.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (domain *CustomDomain) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(domain) +} + +// validateResourceReferences validates all resource references +func (domain *CustomDomain) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&domain.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (domain *CustomDomain) validateSecretDestinations() (admission.Warnings, error) { + if domain.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(domain, nil, domain.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (domain *CustomDomain) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*CustomDomain) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, domain) +} + +// AssignProperties_From_CustomDomain populates our CustomDomain from the provided source CustomDomain +func (domain *CustomDomain) AssignProperties_From_CustomDomain(source *storage.CustomDomain) error { + + // ObjectMeta + domain.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec CustomDomain_Spec + err := spec.AssignProperties_From_CustomDomain_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_CustomDomain_Spec() to populate field Spec") + } + domain.Spec = spec + + // Status + var status CustomDomain_STATUS + err = status.AssignProperties_From_CustomDomain_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_CustomDomain_STATUS() to populate field Status") + } + domain.Status = status + + // No error + return nil +} + +// AssignProperties_To_CustomDomain populates the provided destination CustomDomain from our CustomDomain +func (domain *CustomDomain) AssignProperties_To_CustomDomain(destination *storage.CustomDomain) error { + + // ObjectMeta + destination.ObjectMeta = *domain.ObjectMeta.DeepCopy() + + // Spec + var spec storage.CustomDomain_Spec + err := domain.Spec.AssignProperties_To_CustomDomain_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_CustomDomain_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.CustomDomain_STATUS + err = domain.Status.AssignProperties_To_CustomDomain_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_CustomDomain_STATUS() to populate field Status") + } + destination.Status = status + + // No error + return nil +} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (domain *CustomDomain) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: domain.Spec.OriginalVersion(), + Kind: "CustomDomain", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customDomains/{name} +type CustomDomainList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CustomDomain `json:"items"` +} + +type CustomDomain_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + + // +kubebuilder:validation:Required + // CustomCertificate: Reference to a resource. + CustomCertificate *ResourceReference `json:"customCertificate,omitempty"` + + // +kubebuilder:validation:Required + // DomainName: The custom domain name. + DomainName *string `json:"domainName,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *CustomDomainOperatorSpec `json:"operatorSpec,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a signalrservice.azure.com/SignalR resource + Owner *genruntime.KnownResourceReference `group:"signalrservice.azure.com" json:"owner,omitempty" kind:"SignalR"` +} + +var _ genruntime.ARMTransformer = &CustomDomain_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (domain *CustomDomain_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if domain == nil { + return nil, nil + } + result := &arm.CustomDomain_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if domain.CustomCertificate != nil || domain.DomainName != nil { + result.Properties = &arm.CustomDomainProperties{} + } + if domain.CustomCertificate != nil { + customCertificate_ARM, err := (*domain.CustomCertificate).ConvertToARM(resolved) + if err != nil { + return nil, err + } + customCertificate := *customCertificate_ARM.(*arm.ResourceReference) + result.Properties.CustomCertificate = &customCertificate + } + if domain.DomainName != nil { + domainName := *domain.DomainName + result.Properties.DomainName = &domainName + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (domain *CustomDomain_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.CustomDomain_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (domain *CustomDomain_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.CustomDomain_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.CustomDomain_Spec, got %T", armInput) + } + + // Set property "AzureName": + domain.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "CustomCertificate": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CustomCertificate != nil { + var customCertificate1 ResourceReference + err := customCertificate1.PopulateFromARM(owner, *typedInput.Properties.CustomCertificate) + if err != nil { + return err + } + customCertificate := customCertificate1 + domain.CustomCertificate = &customCertificate + } + } + + // Set property "DomainName": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DomainName != nil { + domainName := *typedInput.Properties.DomainName + domain.DomainName = &domainName + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + domain.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &CustomDomain_Spec{} + +// ConvertSpecFrom populates our CustomDomain_Spec from the provided source +func (domain *CustomDomain_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.CustomDomain_Spec) + if ok { + // Populate our instance from source + return domain.AssignProperties_From_CustomDomain_Spec(src) + } + + // Convert to an intermediate form + src = &storage.CustomDomain_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = domain.AssignProperties_From_CustomDomain_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our CustomDomain_Spec +func (domain *CustomDomain_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.CustomDomain_Spec) + if ok { + // Populate destination from our instance + return domain.AssignProperties_To_CustomDomain_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.CustomDomain_Spec{} + err := domain.AssignProperties_To_CustomDomain_Spec(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecTo()") + } + + // Update dst from our instance + err = dst.ConvertSpecTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecTo()") + } + + return nil +} + +// AssignProperties_From_CustomDomain_Spec populates our CustomDomain_Spec from the provided source CustomDomain_Spec +func (domain *CustomDomain_Spec) AssignProperties_From_CustomDomain_Spec(source *storage.CustomDomain_Spec) error { + + // AzureName + domain.AzureName = source.AzureName + + // CustomCertificate + if source.CustomCertificate != nil { + var customCertificate ResourceReference + err := customCertificate.AssignProperties_From_ResourceReference(source.CustomCertificate) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceReference() to populate field CustomCertificate") + } + domain.CustomCertificate = &customCertificate + } else { + domain.CustomCertificate = nil + } + + // DomainName + domain.DomainName = genruntime.ClonePointerToString(source.DomainName) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec CustomDomainOperatorSpec + err := operatorSpec.AssignProperties_From_CustomDomainOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_CustomDomainOperatorSpec() to populate field OperatorSpec") + } + domain.OperatorSpec = &operatorSpec + } else { + domain.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + domain.Owner = &owner + } else { + domain.Owner = nil + } + + // No error + return nil +} + +// AssignProperties_To_CustomDomain_Spec populates the provided destination CustomDomain_Spec from our CustomDomain_Spec +func (domain *CustomDomain_Spec) AssignProperties_To_CustomDomain_Spec(destination *storage.CustomDomain_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = domain.AzureName + + // CustomCertificate + if domain.CustomCertificate != nil { + var customCertificate storage.ResourceReference + err := domain.CustomCertificate.AssignProperties_To_ResourceReference(&customCertificate) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceReference() to populate field CustomCertificate") + } + destination.CustomCertificate = &customCertificate + } else { + destination.CustomCertificate = nil + } + + // DomainName + destination.DomainName = genruntime.ClonePointerToString(domain.DomainName) + + // OperatorSpec + if domain.OperatorSpec != nil { + var operatorSpec storage.CustomDomainOperatorSpec + err := domain.OperatorSpec.AssignProperties_To_CustomDomainOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_CustomDomainOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = domain.OriginalVersion() + + // Owner + if domain.Owner != nil { + owner := domain.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_CustomDomain_STATUS populates our CustomDomain_Spec from the provided source CustomDomain_STATUS +func (domain *CustomDomain_Spec) Initialize_From_CustomDomain_STATUS(source *CustomDomain_STATUS) error { + + // CustomCertificate + if source.CustomCertificate != nil { + var customCertificate ResourceReference + err := customCertificate.Initialize_From_ResourceReference_STATUS(source.CustomCertificate) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ResourceReference_STATUS() to populate field CustomCertificate") + } + domain.CustomCertificate = &customCertificate + } else { + domain.CustomCertificate = nil + } + + // DomainName + domain.DomainName = genruntime.ClonePointerToString(source.DomainName) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (domain *CustomDomain_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (domain *CustomDomain_Spec) SetAzureName(azureName string) { domain.AzureName = azureName } + +type CustomDomain_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // CustomCertificate: Reference to a resource. + CustomCertificate *ResourceReference_STATUS `json:"customCertificate,omitempty"` + + // DomainName: The custom domain name. + DomainName *string `json:"domainName,omitempty"` + + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &CustomDomain_STATUS{} + +// ConvertStatusFrom populates our CustomDomain_STATUS from the provided source +func (domain *CustomDomain_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.CustomDomain_STATUS) + if ok { + // Populate our instance from source + return domain.AssignProperties_From_CustomDomain_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.CustomDomain_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = domain.AssignProperties_From_CustomDomain_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our CustomDomain_STATUS +func (domain *CustomDomain_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.CustomDomain_STATUS) + if ok { + // Populate destination from our instance + return domain.AssignProperties_To_CustomDomain_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.CustomDomain_STATUS{} + err := domain.AssignProperties_To_CustomDomain_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } + + // Update dst from our instance + err = dst.ConvertStatusTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusTo()") + } + + return nil +} + +var _ genruntime.FromARMConverter = &CustomDomain_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (domain *CustomDomain_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.CustomDomain_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (domain *CustomDomain_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.CustomDomain_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.CustomDomain_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "CustomCertificate": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CustomCertificate != nil { + var customCertificate1 ResourceReference_STATUS + err := customCertificate1.PopulateFromARM(owner, *typedInput.Properties.CustomCertificate) + if err != nil { + return err + } + customCertificate := customCertificate1 + domain.CustomCertificate = &customCertificate + } + } + + // Set property "DomainName": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DomainName != nil { + domainName := *typedInput.Properties.DomainName + domain.DomainName = &domainName + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + domain.Id = &id + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + domain.Name = &name + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := ProvisioningState_STATUS(temp) + domain.ProvisioningState = &provisioningState + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + domain.SystemData = &systemData + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + domain.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_CustomDomain_STATUS populates our CustomDomain_STATUS from the provided source CustomDomain_STATUS +func (domain *CustomDomain_STATUS) AssignProperties_From_CustomDomain_STATUS(source *storage.CustomDomain_STATUS) error { + + // Conditions + domain.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CustomCertificate + if source.CustomCertificate != nil { + var customCertificate ResourceReference_STATUS + err := customCertificate.AssignProperties_From_ResourceReference_STATUS(source.CustomCertificate) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceReference_STATUS() to populate field CustomCertificate") + } + domain.CustomCertificate = &customCertificate + } else { + domain.CustomCertificate = nil + } + + // DomainName + domain.DomainName = genruntime.ClonePointerToString(source.DomainName) + + // Id + domain.Id = genruntime.ClonePointerToString(source.Id) + + // Name + domain.Name = genruntime.ClonePointerToString(source.Name) + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, provisioningState_STATUS_Values) + domain.ProvisioningState = &provisioningStateTemp + } else { + domain.ProvisioningState = nil + } + + // SystemData + if source.SystemData != nil { + var systemDatum SystemData_STATUS + err := systemDatum.AssignProperties_From_SystemData_STATUS(source.SystemData) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SystemData_STATUS() to populate field SystemData") + } + domain.SystemData = &systemDatum + } else { + domain.SystemData = nil + } + + // Type + domain.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_CustomDomain_STATUS populates the provided destination CustomDomain_STATUS from our CustomDomain_STATUS +func (domain *CustomDomain_STATUS) AssignProperties_To_CustomDomain_STATUS(destination *storage.CustomDomain_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(domain.Conditions) + + // CustomCertificate + if domain.CustomCertificate != nil { + var customCertificate storage.ResourceReference_STATUS + err := domain.CustomCertificate.AssignProperties_To_ResourceReference_STATUS(&customCertificate) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceReference_STATUS() to populate field CustomCertificate") + } + destination.CustomCertificate = &customCertificate + } else { + destination.CustomCertificate = nil + } + + // DomainName + destination.DomainName = genruntime.ClonePointerToString(domain.DomainName) + + // Id + destination.Id = genruntime.ClonePointerToString(domain.Id) + + // Name + destination.Name = genruntime.ClonePointerToString(domain.Name) + + // ProvisioningState + if domain.ProvisioningState != nil { + provisioningState := string(*domain.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // SystemData + if domain.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := domain.SystemData.AssignProperties_To_SystemData_STATUS(&systemDatum) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SystemData_STATUS() to populate field SystemData") + } + destination.SystemData = &systemDatum + } else { + destination.SystemData = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(domain.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type CustomDomainOperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions). + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// AssignProperties_From_CustomDomainOperatorSpec populates our CustomDomainOperatorSpec from the provided source CustomDomainOperatorSpec +func (operator *CustomDomainOperatorSpec) AssignProperties_From_CustomDomainOperatorSpec(source *storage.CustomDomainOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // No error + return nil +} + +// AssignProperties_To_CustomDomainOperatorSpec populates the provided destination CustomDomainOperatorSpec from our CustomDomainOperatorSpec +func (operator *CustomDomainOperatorSpec) AssignProperties_To_CustomDomainOperatorSpec(destination *storage.CustomDomainOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Reference to a resource. +type ResourceReference struct { + // Reference: Resource ID. + Reference *genruntime.ResourceReference `armReference:"Id" json:"reference,omitempty"` +} + +var _ genruntime.ARMTransformer = &ResourceReference{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (reference *ResourceReference) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if reference == nil { + return nil, nil + } + result := &arm.ResourceReference{} + + // Set property "Id": + if reference.Reference != nil { + referenceARMID, err := resolved.ResolvedReferences.Lookup(*reference.Reference) + if err != nil { + return nil, err + } + reference1 := referenceARMID + result.Id = &reference1 + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (reference *ResourceReference) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceReference{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (reference *ResourceReference) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + _, ok := armInput.(arm.ResourceReference) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceReference, got %T", armInput) + } + + // no assignment for property "Reference" + + // No error + return nil +} + +// AssignProperties_From_ResourceReference populates our ResourceReference from the provided source ResourceReference +func (reference *ResourceReference) AssignProperties_From_ResourceReference(source *storage.ResourceReference) error { + + // Reference + if source.Reference != nil { + referenceTemp := source.Reference.Copy() + reference.Reference = &referenceTemp + } else { + reference.Reference = nil + } + + // No error + return nil +} + +// AssignProperties_To_ResourceReference populates the provided destination ResourceReference from our ResourceReference +func (reference *ResourceReference) AssignProperties_To_ResourceReference(destination *storage.ResourceReference) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Reference + if reference.Reference != nil { + referenceTemp := reference.Reference.Copy() + destination.Reference = &referenceTemp + } else { + destination.Reference = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ResourceReference_STATUS populates our ResourceReference from the provided source ResourceReference_STATUS +func (reference *ResourceReference) Initialize_From_ResourceReference_STATUS(source *ResourceReference_STATUS) error { + + // Reference + if source.Id != nil { + referenceTemp := genruntime.CreateResourceReferenceFromARMID(*source.Id) + reference.Reference = &referenceTemp + } else { + reference.Reference = nil + } + + // No error + return nil +} + +// Reference to a resource. +type ResourceReference_STATUS struct { + // Id: Resource ID. + Id *string `json:"id,omitempty"` +} + +var _ genruntime.FromARMConverter = &ResourceReference_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (reference *ResourceReference_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceReference_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (reference *ResourceReference_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceReference_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceReference_STATUS, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + reference.Id = &id + } + + // No error + return nil +} + +// AssignProperties_From_ResourceReference_STATUS populates our ResourceReference_STATUS from the provided source ResourceReference_STATUS +func (reference *ResourceReference_STATUS) AssignProperties_From_ResourceReference_STATUS(source *storage.ResourceReference_STATUS) error { + + // Id + reference.Id = genruntime.ClonePointerToString(source.Id) + + // No error + return nil +} + +// AssignProperties_To_ResourceReference_STATUS populates the provided destination ResourceReference_STATUS from our ResourceReference_STATUS +func (reference *ResourceReference_STATUS) AssignProperties_To_ResourceReference_STATUS(destination *storage.ResourceReference_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(reference.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +func init() { + SchemeBuilder.Register(&CustomDomain{}, &CustomDomainList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/custom_domain_types_gen_test.go b/v2/api/signalrservice/v1api20240301/custom_domain_types_gen_test.go new file mode 100644 index 00000000000..38cc35bafc4 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/custom_domain_types_gen_test.go @@ -0,0 +1,710 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomDomain_WhenConvertedToHub_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + parameters.MinSuccessfulTests = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomDomain to hub returns original", + prop.ForAll(RunResourceConversionTestForCustomDomain, CustomDomainGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForCustomDomain tests if a specific instance of CustomDomain round trips to the hub storage version and back losslessly +func RunResourceConversionTestForCustomDomain(subject CustomDomain) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.CustomDomain + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual CustomDomain + err = actual.ConvertFrom(&hub) + if err != nil { + return err.Error() + } + + // Compare actual with what we started with + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomDomain_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomDomain to CustomDomain via AssignProperties_To_CustomDomain & AssignProperties_From_CustomDomain returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomDomain, CustomDomainGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomDomain tests if a specific instance of CustomDomain can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomDomain(subject CustomDomain) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomDomain + err := copied.AssignProperties_To_CustomDomain(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomDomain + err = actual.AssignProperties_From_CustomDomain(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomDomain_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain, CustomDomainGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain runs a test to see if a specific instance of CustomDomain round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain(subject CustomDomain) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain instances for property testing - lazily instantiated by CustomDomainGenerator() +var customDomainGenerator gopter.Gen + +// CustomDomainGenerator returns a generator of CustomDomain instances for property testing. +func CustomDomainGenerator() gopter.Gen { + if customDomainGenerator != nil { + return customDomainGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForCustomDomain(generators) + customDomainGenerator = gen.Struct(reflect.TypeOf(CustomDomain{}), generators) + + return customDomainGenerator +} + +// AddRelatedPropertyGeneratorsForCustomDomain is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain(gens map[string]gopter.Gen) { + gens["Spec"] = CustomDomain_SpecGenerator() + gens["Status"] = CustomDomain_STATUSGenerator() +} + +func Test_CustomDomainOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomDomainOperatorSpec to CustomDomainOperatorSpec via AssignProperties_To_CustomDomainOperatorSpec & AssignProperties_From_CustomDomainOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomDomainOperatorSpec, CustomDomainOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomDomainOperatorSpec tests if a specific instance of CustomDomainOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomDomainOperatorSpec(subject CustomDomainOperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomDomainOperatorSpec + err := copied.AssignProperties_To_CustomDomainOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomDomainOperatorSpec + err = actual.AssignProperties_From_CustomDomainOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomDomainOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomainOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomainOperatorSpec, CustomDomainOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomainOperatorSpec runs a test to see if a specific instance of CustomDomainOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomainOperatorSpec(subject CustomDomainOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomainOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomainOperatorSpec instances for property testing - lazily instantiated by +// CustomDomainOperatorSpecGenerator() +var customDomainOperatorSpecGenerator gopter.Gen + +// CustomDomainOperatorSpecGenerator returns a generator of CustomDomainOperatorSpec instances for property testing. +func CustomDomainOperatorSpecGenerator() gopter.Gen { + if customDomainOperatorSpecGenerator != nil { + return customDomainOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + customDomainOperatorSpecGenerator = gen.Struct(reflect.TypeOf(CustomDomainOperatorSpec{}), generators) + + return customDomainOperatorSpecGenerator +} + +func Test_CustomDomain_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomDomain_STATUS to CustomDomain_STATUS via AssignProperties_To_CustomDomain_STATUS & AssignProperties_From_CustomDomain_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomDomain_STATUS, CustomDomain_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomDomain_STATUS tests if a specific instance of CustomDomain_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomDomain_STATUS(subject CustomDomain_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomDomain_STATUS + err := copied.AssignProperties_To_CustomDomain_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomDomain_STATUS + err = actual.AssignProperties_From_CustomDomain_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomDomain_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain_STATUS, CustomDomain_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain_STATUS runs a test to see if a specific instance of CustomDomain_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain_STATUS(subject CustomDomain_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain_STATUS instances for property testing - lazily instantiated by +// CustomDomain_STATUSGenerator() +var customDomain_STATUSGenerator gopter.Gen + +// CustomDomain_STATUSGenerator returns a generator of CustomDomain_STATUS instances for property testing. +// We first initialize customDomain_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomain_STATUSGenerator() gopter.Gen { + if customDomain_STATUSGenerator != nil { + return customDomain_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_STATUS(generators) + customDomain_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomain_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomDomain_STATUS(generators) + customDomain_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomain_STATUS{}), generators) + + return customDomain_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomain_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomain_STATUS(gens map[string]gopter.Gen) { + gens["DomainName"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomDomain_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain_STATUS(gens map[string]gopter.Gen) { + gens["CustomCertificate"] = gen.PtrOf(ResourceReference_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_CustomDomain_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from CustomDomain_Spec to CustomDomain_Spec via AssignProperties_To_CustomDomain_Spec & AssignProperties_From_CustomDomain_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForCustomDomain_Spec, CustomDomain_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForCustomDomain_Spec tests if a specific instance of CustomDomain_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForCustomDomain_Spec(subject CustomDomain_Spec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.CustomDomain_Spec + err := copied.AssignProperties_To_CustomDomain_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual CustomDomain_Spec + err = actual.AssignProperties_From_CustomDomain_Spec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_CustomDomain_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain_Spec, CustomDomain_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain_Spec runs a test to see if a specific instance of CustomDomain_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain_Spec(subject CustomDomain_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain_Spec instances for property testing - lazily instantiated by CustomDomain_SpecGenerator() +var customDomain_SpecGenerator gopter.Gen + +// CustomDomain_SpecGenerator returns a generator of CustomDomain_Spec instances for property testing. +// We first initialize customDomain_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomain_SpecGenerator() gopter.Gen { + if customDomain_SpecGenerator != nil { + return customDomain_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_Spec(generators) + customDomain_SpecGenerator = gen.Struct(reflect.TypeOf(CustomDomain_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_Spec(generators) + AddRelatedPropertyGeneratorsForCustomDomain_Spec(generators) + customDomain_SpecGenerator = gen.Struct(reflect.TypeOf(CustomDomain_Spec{}), generators) + + return customDomain_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomain_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomain_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["DomainName"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomDomain_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain_Spec(gens map[string]gopter.Gen) { + gens["CustomCertificate"] = gen.PtrOf(ResourceReferenceGenerator()) + gens["OperatorSpec"] = gen.PtrOf(CustomDomainOperatorSpecGenerator()) +} + +func Test_ResourceReference_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceReference to ResourceReference via AssignProperties_To_ResourceReference & AssignProperties_From_ResourceReference returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceReference, ResourceReferenceGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceReference tests if a specific instance of ResourceReference can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceReference(subject ResourceReference) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceReference + err := copied.AssignProperties_To_ResourceReference(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceReference + err = actual.AssignProperties_From_ResourceReference(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceReference_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceReference via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceReference, ResourceReferenceGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceReference runs a test to see if a specific instance of ResourceReference round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceReference(subject ResourceReference) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceReference + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceReference instances for property testing - lazily instantiated by ResourceReferenceGenerator() +var resourceReferenceGenerator gopter.Gen + +// ResourceReferenceGenerator returns a generator of ResourceReference instances for property testing. +func ResourceReferenceGenerator() gopter.Gen { + if resourceReferenceGenerator != nil { + return resourceReferenceGenerator + } + + generators := make(map[string]gopter.Gen) + resourceReferenceGenerator = gen.Struct(reflect.TypeOf(ResourceReference{}), generators) + + return resourceReferenceGenerator +} + +func Test_ResourceReference_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceReference_STATUS to ResourceReference_STATUS via AssignProperties_To_ResourceReference_STATUS & AssignProperties_From_ResourceReference_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceReference_STATUS, ResourceReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceReference_STATUS tests if a specific instance of ResourceReference_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceReference_STATUS(subject ResourceReference_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceReference_STATUS + err := copied.AssignProperties_To_ResourceReference_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceReference_STATUS + err = actual.AssignProperties_From_ResourceReference_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceReference_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceReference_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceReference_STATUS, ResourceReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceReference_STATUS runs a test to see if a specific instance of ResourceReference_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceReference_STATUS(subject ResourceReference_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceReference_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceReference_STATUS instances for property testing - lazily instantiated by +// ResourceReference_STATUSGenerator() +var resourceReference_STATUSGenerator gopter.Gen + +// ResourceReference_STATUSGenerator returns a generator of ResourceReference_STATUS instances for property testing. +func ResourceReference_STATUSGenerator() gopter.Gen { + if resourceReference_STATUSGenerator != nil { + return resourceReference_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceReference_STATUS(generators) + resourceReference_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceReference_STATUS{}), generators) + + return resourceReference_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceReference_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceReference_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/doc.go b/v2/api/signalrservice/v1api20240301/doc.go new file mode 100644 index 00000000000..58e3e252944 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/doc.go @@ -0,0 +1,10 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by azure-service-operator-codegen. DO NOT EDIT. + +// Package v1api20240301 contains API Schema definitions for the signalrservice v1api20240301 API group +// +groupName=signalrservice.azure.com +package v1api20240301 diff --git a/v2/api/signalrservice/v1api20240301/groupversion_info_gen.go b/v2/api/signalrservice/v1api20240301/groupversion_info_gen.go new file mode 100644 index 00000000000..33d0ab62435 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/groupversion_info_gen.go @@ -0,0 +1,32 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by azure-service-operator-codegen. DO NOT EDIT. + +// Package v1api20240301 contains API Schema definitions for the signalrservice v1api20240301 API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=signalrservice.azure.com +// +versionName=v1api20240301 +package v1api20240301 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "signalrservice.azure.com", Version: "v1api20240301"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme + + localSchemeBuilder = SchemeBuilder.SchemeBuilder +) diff --git a/v2/api/signalrservice/v1api20240301/replica_types_gen.go b/v2/api/signalrservice/v1api20240301/replica_types_gen.go new file mode 100644 index 00000000000..2498192355a --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/replica_types_gen.go @@ -0,0 +1,1521 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/arm" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/replicas/{replicaName} +type Replica struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Replica_Spec `json:"spec,omitempty"` + Status Replica_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Replica{} + +// GetConditions returns the conditions of the resource +func (replica *Replica) GetConditions() conditions.Conditions { + return replica.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (replica *Replica) SetConditions(conditions conditions.Conditions) { + replica.Status.Conditions = conditions +} + +var _ conversion.Convertible = &Replica{} + +// ConvertFrom populates our Replica from the provided hub Replica +func (replica *Replica) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.Replica) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/Replica but received %T instead", hub) + } + + return replica.AssignProperties_From_Replica(source) +} + +// ConvertTo populates the provided hub Replica from our Replica +func (replica *Replica) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.Replica) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/Replica but received %T instead", hub) + } + + return replica.AssignProperties_To_Replica(destination) +} + +// +kubebuilder:webhook:path=/mutate-signalrservice-azure-com-v1api20240301-replica,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=replicas,verbs=create;update,versions=v1api20240301,name=default.v1api20240301.replicas.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &Replica{} + +// Default applies defaults to the Replica resource +func (replica *Replica) Default() { + replica.defaultImpl() + var temp any = replica + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (replica *Replica) defaultAzureName() { + if replica.Spec.AzureName == "" { + replica.Spec.AzureName = replica.Name + } +} + +// defaultImpl applies the code generated defaults to the Replica resource +func (replica *Replica) defaultImpl() { replica.defaultAzureName() } + +var _ configmaps.Exporter = &Replica{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (replica *Replica) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Replica{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (replica *Replica) SecretDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &Replica{} + +// InitializeSpec initializes the spec for this resource from the given status +func (replica *Replica) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*Replica_STATUS); ok { + return replica.Spec.Initialize_From_Replica_STATUS(s) + } + + return fmt.Errorf("expected Status of type Replica_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &Replica{} + +// AzureName returns the Azure name of the resource +func (replica *Replica) AzureName() string { + return replica.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (replica Replica) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (replica *Replica) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (replica *Replica) GetSpec() genruntime.ConvertibleSpec { + return &replica.Spec +} + +// GetStatus returns the status of this resource +func (replica *Replica) GetStatus() genruntime.ConvertibleStatus { + return &replica.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (replica *Replica) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/replicas" +func (replica *Replica) GetType() string { + return "Microsoft.SignalRService/signalR/replicas" +} + +// NewEmptyStatus returns a new empty (blank) status +func (replica *Replica) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Replica_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (replica *Replica) Owner() *genruntime.ResourceReference { + if replica.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(replica.Spec) + return replica.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (replica *Replica) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Replica_STATUS); ok { + replica.Status = *st + return nil + } + + // Convert status to required version + var st Replica_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + replica.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-signalrservice-azure-com-v1api20240301-replica,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=replicas,verbs=create;update,versions=v1api20240301,name=validate.v1api20240301.replicas.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &Replica{} + +// ValidateCreate validates the creation of the resource +func (replica *Replica) ValidateCreate() (admission.Warnings, error) { + validations := replica.createValidations() + var temp any = replica + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (replica *Replica) ValidateDelete() (admission.Warnings, error) { + validations := replica.deleteValidations() + var temp any = replica + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (replica *Replica) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := replica.updateValidations() + var temp any = replica + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate(old, validations) +} + +// createValidations validates the creation of the resource +func (replica *Replica) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){replica.validateResourceReferences, replica.validateOwnerReference, replica.validateSecretDestinations, replica.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (replica *Replica) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (replica *Replica) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return replica.validateResourceReferences() + }, + replica.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return replica.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return replica.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return replica.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (replica *Replica) validateConfigMapDestinations() (admission.Warnings, error) { + if replica.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(replica, nil, replica.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (replica *Replica) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(replica) +} + +// validateResourceReferences validates all resource references +func (replica *Replica) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&replica.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (replica *Replica) validateSecretDestinations() (admission.Warnings, error) { + if replica.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(replica, nil, replica.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (replica *Replica) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*Replica) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, replica) +} + +// AssignProperties_From_Replica populates our Replica from the provided source Replica +func (replica *Replica) AssignProperties_From_Replica(source *storage.Replica) error { + + // ObjectMeta + replica.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec Replica_Spec + err := spec.AssignProperties_From_Replica_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Replica_Spec() to populate field Spec") + } + replica.Spec = spec + + // Status + var status Replica_STATUS + err = status.AssignProperties_From_Replica_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Replica_STATUS() to populate field Status") + } + replica.Status = status + + // No error + return nil +} + +// AssignProperties_To_Replica populates the provided destination Replica from our Replica +func (replica *Replica) AssignProperties_To_Replica(destination *storage.Replica) error { + + // ObjectMeta + destination.ObjectMeta = *replica.ObjectMeta.DeepCopy() + + // Spec + var spec storage.Replica_Spec + err := replica.Spec.AssignProperties_To_Replica_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Replica_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.Replica_STATUS + err = replica.Status.AssignProperties_To_Replica_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Replica_STATUS() to populate field Status") + } + destination.Status = status + + // No error + return nil +} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (replica *Replica) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: replica.Spec.OriginalVersion(), + Kind: "Replica", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/replicas/{replicaName} +type ReplicaList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Replica `json:"items"` +} + +type Replica_Spec struct { + // +kubebuilder:validation:MaxLength=63 + // +kubebuilder:validation:MinLength=3 + // +kubebuilder:validation:Pattern="^[a-zA-Z][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]$" + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + + // +kubebuilder:validation:Required + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *ReplicaOperatorSpec `json:"operatorSpec,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a signalrservice.azure.com/SignalR resource + Owner *genruntime.KnownResourceReference `group:"signalrservice.azure.com" json:"owner,omitempty" kind:"SignalR"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "false". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku `json:"sku,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMTransformer = &Replica_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (replica *Replica_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if replica == nil { + return nil, nil + } + result := &arm.Replica_Spec{} + + // Set property "Location": + if replica.Location != nil { + location := *replica.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if replica.RegionEndpointEnabled != nil || replica.ResourceStopped != nil { + result.Properties = &arm.ReplicaProperties{} + } + if replica.RegionEndpointEnabled != nil { + regionEndpointEnabled := *replica.RegionEndpointEnabled + result.Properties.RegionEndpointEnabled = ®ionEndpointEnabled + } + if replica.ResourceStopped != nil { + resourceStopped := *replica.ResourceStopped + result.Properties.ResourceStopped = &resourceStopped + } + + // Set property "Sku": + if replica.Sku != nil { + sku_ARM, err := (*replica.Sku).ConvertToARM(resolved) + if err != nil { + return nil, err + } + sku := *sku_ARM.(*arm.ResourceSku) + result.Sku = &sku + } + + // Set property "Tags": + if replica.Tags != nil { + result.Tags = make(map[string]string, len(replica.Tags)) + for key, value := range replica.Tags { + result.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (replica *Replica_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Replica_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (replica *Replica_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Replica_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Replica_Spec, got %T", armInput) + } + + // Set property "AzureName": + replica.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + replica.Location = &location + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + replica.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "RegionEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RegionEndpointEnabled != nil { + regionEndpointEnabled := *typedInput.Properties.RegionEndpointEnabled + replica.RegionEndpointEnabled = ®ionEndpointEnabled + } + } + + // Set property "ResourceStopped": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ResourceStopped != nil { + resourceStopped := *typedInput.Properties.ResourceStopped + replica.ResourceStopped = &resourceStopped + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 ResourceSku + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + replica.Sku = &sku + } + + // Set property "Tags": + if typedInput.Tags != nil { + replica.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + replica.Tags[key] = value + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &Replica_Spec{} + +// ConvertSpecFrom populates our Replica_Spec from the provided source +func (replica *Replica_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.Replica_Spec) + if ok { + // Populate our instance from source + return replica.AssignProperties_From_Replica_Spec(src) + } + + // Convert to an intermediate form + src = &storage.Replica_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = replica.AssignProperties_From_Replica_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our Replica_Spec +func (replica *Replica_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.Replica_Spec) + if ok { + // Populate destination from our instance + return replica.AssignProperties_To_Replica_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.Replica_Spec{} + err := replica.AssignProperties_To_Replica_Spec(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecTo()") + } + + // Update dst from our instance + err = dst.ConvertSpecTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecTo()") + } + + return nil +} + +// AssignProperties_From_Replica_Spec populates our Replica_Spec from the provided source Replica_Spec +func (replica *Replica_Spec) AssignProperties_From_Replica_Spec(source *storage.Replica_Spec) error { + + // AzureName + replica.AzureName = source.AzureName + + // Location + replica.Location = genruntime.ClonePointerToString(source.Location) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec ReplicaOperatorSpec + err := operatorSpec.AssignProperties_From_ReplicaOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ReplicaOperatorSpec() to populate field OperatorSpec") + } + replica.OperatorSpec = &operatorSpec + } else { + replica.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + replica.Owner = &owner + } else { + replica.Owner = nil + } + + // RegionEndpointEnabled + replica.RegionEndpointEnabled = genruntime.ClonePointerToString(source.RegionEndpointEnabled) + + // ResourceStopped + replica.ResourceStopped = genruntime.ClonePointerToString(source.ResourceStopped) + + // Sku + if source.Sku != nil { + var sku ResourceSku + err := sku.AssignProperties_From_ResourceSku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceSku() to populate field Sku") + } + replica.Sku = &sku + } else { + replica.Sku = nil + } + + // Tags + replica.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // No error + return nil +} + +// AssignProperties_To_Replica_Spec populates the provided destination Replica_Spec from our Replica_Spec +func (replica *Replica_Spec) AssignProperties_To_Replica_Spec(destination *storage.Replica_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = replica.AzureName + + // Location + destination.Location = genruntime.ClonePointerToString(replica.Location) + + // OperatorSpec + if replica.OperatorSpec != nil { + var operatorSpec storage.ReplicaOperatorSpec + err := replica.OperatorSpec.AssignProperties_To_ReplicaOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ReplicaOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = replica.OriginalVersion() + + // Owner + if replica.Owner != nil { + owner := replica.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // RegionEndpointEnabled + destination.RegionEndpointEnabled = genruntime.ClonePointerToString(replica.RegionEndpointEnabled) + + // ResourceStopped + destination.ResourceStopped = genruntime.ClonePointerToString(replica.ResourceStopped) + + // Sku + if replica.Sku != nil { + var sku storage.ResourceSku + err := replica.Sku.AssignProperties_To_ResourceSku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceSku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(replica.Tags) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Replica_STATUS populates our Replica_Spec from the provided source Replica_STATUS +func (replica *Replica_Spec) Initialize_From_Replica_STATUS(source *Replica_STATUS) error { + + // Location + replica.Location = genruntime.ClonePointerToString(source.Location) + + // RegionEndpointEnabled + replica.RegionEndpointEnabled = genruntime.ClonePointerToString(source.RegionEndpointEnabled) + + // ResourceStopped + replica.ResourceStopped = genruntime.ClonePointerToString(source.ResourceStopped) + + // Sku + if source.Sku != nil { + var sku ResourceSku + err := sku.Initialize_From_ResourceSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ResourceSku_STATUS() to populate field Sku") + } + replica.Sku = &sku + } else { + replica.Sku = nil + } + + // Tags + replica.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (replica *Replica_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (replica *Replica_Spec) SetAzureName(azureName string) { replica.AzureName = azureName } + +type Replica_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "false". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku_STATUS `json:"sku,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Replica_STATUS{} + +// ConvertStatusFrom populates our Replica_STATUS from the provided source +func (replica *Replica_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.Replica_STATUS) + if ok { + // Populate our instance from source + return replica.AssignProperties_From_Replica_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.Replica_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = replica.AssignProperties_From_Replica_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our Replica_STATUS +func (replica *Replica_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.Replica_STATUS) + if ok { + // Populate destination from our instance + return replica.AssignProperties_To_Replica_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.Replica_STATUS{} + err := replica.AssignProperties_To_Replica_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } + + // Update dst from our instance + err = dst.ConvertStatusTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusTo()") + } + + return nil +} + +var _ genruntime.FromARMConverter = &Replica_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (replica *Replica_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Replica_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (replica *Replica_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Replica_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Replica_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + replica.Id = &id + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + replica.Location = &location + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + replica.Name = &name + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := ProvisioningState_STATUS(temp) + replica.ProvisioningState = &provisioningState + } + } + + // Set property "RegionEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RegionEndpointEnabled != nil { + regionEndpointEnabled := *typedInput.Properties.RegionEndpointEnabled + replica.RegionEndpointEnabled = ®ionEndpointEnabled + } + } + + // Set property "ResourceStopped": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ResourceStopped != nil { + resourceStopped := *typedInput.Properties.ResourceStopped + replica.ResourceStopped = &resourceStopped + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 ResourceSku_STATUS + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + replica.Sku = &sku + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + replica.SystemData = &systemData + } + + // Set property "Tags": + if typedInput.Tags != nil { + replica.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + replica.Tags[key] = value + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + replica.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_Replica_STATUS populates our Replica_STATUS from the provided source Replica_STATUS +func (replica *Replica_STATUS) AssignProperties_From_Replica_STATUS(source *storage.Replica_STATUS) error { + + // Conditions + replica.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + replica.Id = genruntime.ClonePointerToString(source.Id) + + // Location + replica.Location = genruntime.ClonePointerToString(source.Location) + + // Name + replica.Name = genruntime.ClonePointerToString(source.Name) + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, provisioningState_STATUS_Values) + replica.ProvisioningState = &provisioningStateTemp + } else { + replica.ProvisioningState = nil + } + + // RegionEndpointEnabled + replica.RegionEndpointEnabled = genruntime.ClonePointerToString(source.RegionEndpointEnabled) + + // ResourceStopped + replica.ResourceStopped = genruntime.ClonePointerToString(source.ResourceStopped) + + // Sku + if source.Sku != nil { + var sku ResourceSku_STATUS + err := sku.AssignProperties_From_ResourceSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceSku_STATUS() to populate field Sku") + } + replica.Sku = &sku + } else { + replica.Sku = nil + } + + // SystemData + if source.SystemData != nil { + var systemDatum SystemData_STATUS + err := systemDatum.AssignProperties_From_SystemData_STATUS(source.SystemData) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SystemData_STATUS() to populate field SystemData") + } + replica.SystemData = &systemDatum + } else { + replica.SystemData = nil + } + + // Tags + replica.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + replica.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_Replica_STATUS populates the provided destination Replica_STATUS from our Replica_STATUS +func (replica *Replica_STATUS) AssignProperties_To_Replica_STATUS(destination *storage.Replica_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(replica.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(replica.Id) + + // Location + destination.Location = genruntime.ClonePointerToString(replica.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(replica.Name) + + // ProvisioningState + if replica.ProvisioningState != nil { + provisioningState := string(*replica.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // RegionEndpointEnabled + destination.RegionEndpointEnabled = genruntime.ClonePointerToString(replica.RegionEndpointEnabled) + + // ResourceStopped + destination.ResourceStopped = genruntime.ClonePointerToString(replica.ResourceStopped) + + // Sku + if replica.Sku != nil { + var sku storage.ResourceSku_STATUS + err := replica.Sku.AssignProperties_To_ResourceSku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceSku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SystemData + if replica.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := replica.SystemData.AssignProperties_To_SystemData_STATUS(&systemDatum) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SystemData_STATUS() to populate field SystemData") + } + destination.SystemData = &systemDatum + } else { + destination.SystemData = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(replica.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(replica.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type ReplicaOperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions). + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// AssignProperties_From_ReplicaOperatorSpec populates our ReplicaOperatorSpec from the provided source ReplicaOperatorSpec +func (operator *ReplicaOperatorSpec) AssignProperties_From_ReplicaOperatorSpec(source *storage.ReplicaOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // No error + return nil +} + +// AssignProperties_To_ReplicaOperatorSpec populates the provided destination ReplicaOperatorSpec from our ReplicaOperatorSpec +func (operator *ReplicaOperatorSpec) AssignProperties_To_ReplicaOperatorSpec(destination *storage.ReplicaOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The billing information of the resource. +type ResourceSku struct { + // Capacity: Optional, integer. The unit count of the resource. + // 1 for Free_F1/Standard_S1/Premium_P1, 100 for Premium_P2 by default. + // If present, following values are allowed: + // Free_F1: 1; + // Standard_S1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P2: 100,200,300,400,500,600,700,800,900,1000; + Capacity *int `json:"capacity,omitempty"` + + // +kubebuilder:validation:Required + // Name: The name of the SKU. Required. + // Allowed values: Standard_S1, Free_F1, Premium_P1, Premium_P2 + Name *string `json:"name,omitempty"` + + // Tier: Optional tier of this particular SKU. 'Standard' or 'Free'. + // `Basic` is deprecated, use `Standard` instead. + Tier *SignalRSkuTier `json:"tier,omitempty"` +} + +var _ genruntime.ARMTransformer = &ResourceSku{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (resourceSku *ResourceSku) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if resourceSku == nil { + return nil, nil + } + result := &arm.ResourceSku{} + + // Set property "Capacity": + if resourceSku.Capacity != nil { + capacity := *resourceSku.Capacity + result.Capacity = &capacity + } + + // Set property "Name": + if resourceSku.Name != nil { + name := *resourceSku.Name + result.Name = &name + } + + // Set property "Tier": + if resourceSku.Tier != nil { + var temp string + temp = string(*resourceSku.Tier) + tier := arm.SignalRSkuTier(temp) + result.Tier = &tier + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (resourceSku *ResourceSku) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceSku{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (resourceSku *ResourceSku) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceSku) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceSku, got %T", armInput) + } + + // Set property "Capacity": + if typedInput.Capacity != nil { + capacity := *typedInput.Capacity + resourceSku.Capacity = &capacity + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + resourceSku.Name = &name + } + + // Set property "Tier": + if typedInput.Tier != nil { + var temp string + temp = string(*typedInput.Tier) + tier := SignalRSkuTier(temp) + resourceSku.Tier = &tier + } + + // No error + return nil +} + +// AssignProperties_From_ResourceSku populates our ResourceSku from the provided source ResourceSku +func (resourceSku *ResourceSku) AssignProperties_From_ResourceSku(source *storage.ResourceSku) error { + + // Capacity + resourceSku.Capacity = genruntime.ClonePointerToInt(source.Capacity) + + // Name + resourceSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + if source.Tier != nil { + tier := *source.Tier + tierTemp := genruntime.ToEnum(tier, signalRSkuTier_Values) + resourceSku.Tier = &tierTemp + } else { + resourceSku.Tier = nil + } + + // No error + return nil +} + +// AssignProperties_To_ResourceSku populates the provided destination ResourceSku from our ResourceSku +func (resourceSku *ResourceSku) AssignProperties_To_ResourceSku(destination *storage.ResourceSku) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Capacity + destination.Capacity = genruntime.ClonePointerToInt(resourceSku.Capacity) + + // Name + destination.Name = genruntime.ClonePointerToString(resourceSku.Name) + + // Tier + if resourceSku.Tier != nil { + tier := string(*resourceSku.Tier) + destination.Tier = &tier + } else { + destination.Tier = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ResourceSku_STATUS populates our ResourceSku from the provided source ResourceSku_STATUS +func (resourceSku *ResourceSku) Initialize_From_ResourceSku_STATUS(source *ResourceSku_STATUS) error { + + // Capacity + resourceSku.Capacity = genruntime.ClonePointerToInt(source.Capacity) + + // Name + resourceSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + if source.Tier != nil { + tier := genruntime.ToEnum(string(*source.Tier), signalRSkuTier_Values) + resourceSku.Tier = &tier + } else { + resourceSku.Tier = nil + } + + // No error + return nil +} + +// The billing information of the resource. +type ResourceSku_STATUS struct { + // Capacity: Optional, integer. The unit count of the resource. + // 1 for Free_F1/Standard_S1/Premium_P1, 100 for Premium_P2 by default. + // If present, following values are allowed: + // Free_F1: 1; + // Standard_S1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P1: 1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100; + // Premium_P2: 100,200,300,400,500,600,700,800,900,1000; + Capacity *int `json:"capacity,omitempty"` + + // Family: Not used. Retained for future use. + Family *string `json:"family,omitempty"` + + // Name: The name of the SKU. Required. + // Allowed values: Standard_S1, Free_F1, Premium_P1, Premium_P2 + Name *string `json:"name,omitempty"` + + // Size: Not used. Retained for future use. + Size *string `json:"size,omitempty"` + + // Tier: Optional tier of this particular SKU. 'Standard' or 'Free'. + // `Basic` is deprecated, use `Standard` instead. + Tier *SignalRSkuTier_STATUS `json:"tier,omitempty"` +} + +var _ genruntime.FromARMConverter = &ResourceSku_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (resourceSku *ResourceSku_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceSku_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (resourceSku *ResourceSku_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceSku_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceSku_STATUS, got %T", armInput) + } + + // Set property "Capacity": + if typedInput.Capacity != nil { + capacity := *typedInput.Capacity + resourceSku.Capacity = &capacity + } + + // Set property "Family": + if typedInput.Family != nil { + family := *typedInput.Family + resourceSku.Family = &family + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + resourceSku.Name = &name + } + + // Set property "Size": + if typedInput.Size != nil { + size := *typedInput.Size + resourceSku.Size = &size + } + + // Set property "Tier": + if typedInput.Tier != nil { + var temp string + temp = string(*typedInput.Tier) + tier := SignalRSkuTier_STATUS(temp) + resourceSku.Tier = &tier + } + + // No error + return nil +} + +// AssignProperties_From_ResourceSku_STATUS populates our ResourceSku_STATUS from the provided source ResourceSku_STATUS +func (resourceSku *ResourceSku_STATUS) AssignProperties_From_ResourceSku_STATUS(source *storage.ResourceSku_STATUS) error { + + // Capacity + resourceSku.Capacity = genruntime.ClonePointerToInt(source.Capacity) + + // Family + resourceSku.Family = genruntime.ClonePointerToString(source.Family) + + // Name + resourceSku.Name = genruntime.ClonePointerToString(source.Name) + + // Size + resourceSku.Size = genruntime.ClonePointerToString(source.Size) + + // Tier + if source.Tier != nil { + tier := *source.Tier + tierTemp := genruntime.ToEnum(tier, signalRSkuTier_STATUS_Values) + resourceSku.Tier = &tierTemp + } else { + resourceSku.Tier = nil + } + + // No error + return nil +} + +// AssignProperties_To_ResourceSku_STATUS populates the provided destination ResourceSku_STATUS from our ResourceSku_STATUS +func (resourceSku *ResourceSku_STATUS) AssignProperties_To_ResourceSku_STATUS(destination *storage.ResourceSku_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Capacity + destination.Capacity = genruntime.ClonePointerToInt(resourceSku.Capacity) + + // Family + destination.Family = genruntime.ClonePointerToString(resourceSku.Family) + + // Name + destination.Name = genruntime.ClonePointerToString(resourceSku.Name) + + // Size + destination.Size = genruntime.ClonePointerToString(resourceSku.Size) + + // Tier + if resourceSku.Tier != nil { + tier := string(*resourceSku.Tier) + destination.Tier = &tier + } else { + destination.Tier = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Optional tier of this particular SKU. 'Standard' or 'Free'. +// `Basic` is deprecated, use `Standard` instead. +// +kubebuilder:validation:Enum={"Basic","Free","Premium","Standard"} +type SignalRSkuTier string + +const ( + SignalRSkuTier_Basic = SignalRSkuTier("Basic") + SignalRSkuTier_Free = SignalRSkuTier("Free") + SignalRSkuTier_Premium = SignalRSkuTier("Premium") + SignalRSkuTier_Standard = SignalRSkuTier("Standard") +) + +// Mapping from string to SignalRSkuTier +var signalRSkuTier_Values = map[string]SignalRSkuTier{ + "basic": SignalRSkuTier_Basic, + "free": SignalRSkuTier_Free, + "premium": SignalRSkuTier_Premium, + "standard": SignalRSkuTier_Standard, +} + +// Optional tier of this particular SKU. 'Standard' or 'Free'. +// `Basic` is deprecated, use `Standard` instead. +type SignalRSkuTier_STATUS string + +const ( + SignalRSkuTier_STATUS_Basic = SignalRSkuTier_STATUS("Basic") + SignalRSkuTier_STATUS_Free = SignalRSkuTier_STATUS("Free") + SignalRSkuTier_STATUS_Premium = SignalRSkuTier_STATUS("Premium") + SignalRSkuTier_STATUS_Standard = SignalRSkuTier_STATUS("Standard") +) + +// Mapping from string to SignalRSkuTier_STATUS +var signalRSkuTier_STATUS_Values = map[string]SignalRSkuTier_STATUS{ + "basic": SignalRSkuTier_STATUS_Basic, + "free": SignalRSkuTier_STATUS_Free, + "premium": SignalRSkuTier_STATUS_Premium, + "standard": SignalRSkuTier_STATUS_Standard, +} + +func init() { + SchemeBuilder.Register(&Replica{}, &ReplicaList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/replica_types_gen_test.go b/v2/api/signalrservice/v1api20240301/replica_types_gen_test.go new file mode 100644 index 00000000000..320ec19f4d1 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/replica_types_gen_test.go @@ -0,0 +1,738 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_Replica_WhenConvertedToHub_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + parameters.MinSuccessfulTests = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica to hub returns original", + prop.ForAll(RunResourceConversionTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForReplica tests if a specific instance of Replica round trips to the hub storage version and back losslessly +func RunResourceConversionTestForReplica(subject Replica) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.Replica + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual Replica + err = actual.ConvertFrom(&hub) + if err != nil { + return err.Error() + } + + // Compare actual with what we started with + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica to Replica via AssignProperties_To_Replica & AssignProperties_From_Replica returns original", + prop.ForAll(RunPropertyAssignmentTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplica tests if a specific instance of Replica can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplica(subject Replica) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.Replica + err := copied.AssignProperties_To_Replica(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Replica + err = actual.AssignProperties_From_Replica(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica runs a test to see if a specific instance of Replica round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica(subject Replica) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica instances for property testing - lazily instantiated by ReplicaGenerator() +var replicaGenerator gopter.Gen + +// ReplicaGenerator returns a generator of Replica instances for property testing. +func ReplicaGenerator() gopter.Gen { + if replicaGenerator != nil { + return replicaGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForReplica(generators) + replicaGenerator = gen.Struct(reflect.TypeOf(Replica{}), generators) + + return replicaGenerator +} + +// AddRelatedPropertyGeneratorsForReplica is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica(gens map[string]gopter.Gen) { + gens["Spec"] = Replica_SpecGenerator() + gens["Status"] = Replica_STATUSGenerator() +} + +func Test_ReplicaOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ReplicaOperatorSpec to ReplicaOperatorSpec via AssignProperties_To_ReplicaOperatorSpec & AssignProperties_From_ReplicaOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForReplicaOperatorSpec, ReplicaOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplicaOperatorSpec tests if a specific instance of ReplicaOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplicaOperatorSpec(subject ReplicaOperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ReplicaOperatorSpec + err := copied.AssignProperties_To_ReplicaOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ReplicaOperatorSpec + err = actual.AssignProperties_From_ReplicaOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ReplicaOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaOperatorSpec, ReplicaOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaOperatorSpec runs a test to see if a specific instance of ReplicaOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaOperatorSpec(subject ReplicaOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaOperatorSpec instances for property testing - lazily instantiated by +// ReplicaOperatorSpecGenerator() +var replicaOperatorSpecGenerator gopter.Gen + +// ReplicaOperatorSpecGenerator returns a generator of ReplicaOperatorSpec instances for property testing. +func ReplicaOperatorSpecGenerator() gopter.Gen { + if replicaOperatorSpecGenerator != nil { + return replicaOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + replicaOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ReplicaOperatorSpec{}), generators) + + return replicaOperatorSpecGenerator +} + +func Test_Replica_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica_STATUS to Replica_STATUS via AssignProperties_To_Replica_STATUS & AssignProperties_From_Replica_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplica_STATUS tests if a specific instance of Replica_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplica_STATUS(subject Replica_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.Replica_STATUS + err := copied.AssignProperties_To_Replica_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Replica_STATUS + err = actual.AssignProperties_From_Replica_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_STATUS runs a test to see if a specific instance of Replica_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_STATUS(subject Replica_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_STATUS instances for property testing - lazily instantiated by Replica_STATUSGenerator() +var replica_STATUSGenerator gopter.Gen + +// Replica_STATUSGenerator returns a generator of Replica_STATUS instances for property testing. +// We first initialize replica_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_STATUSGenerator() gopter.Gen { + if replica_STATUSGenerator != nil { + return replica_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + AddRelatedPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + return replica_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Sku"] = gen.PtrOf(ResourceSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_Replica_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica_Spec to Replica_Spec via AssignProperties_To_Replica_Spec & AssignProperties_From_Replica_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplica_Spec tests if a specific instance of Replica_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplica_Spec(subject Replica_Spec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.Replica_Spec + err := copied.AssignProperties_To_Replica_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Replica_Spec + err = actual.AssignProperties_From_Replica_Spec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_Spec runs a test to see if a specific instance of Replica_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_Spec(subject Replica_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_Spec instances for property testing - lazily instantiated by Replica_SpecGenerator() +var replica_SpecGenerator gopter.Gen + +// Replica_SpecGenerator returns a generator of Replica_Spec instances for property testing. +// We first initialize replica_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_SpecGenerator() gopter.Gen { + if replica_SpecGenerator != nil { + return replica_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + AddRelatedPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + return replica_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(ReplicaOperatorSpecGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSkuGenerator()) +} + +func Test_ResourceSku_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceSku to ResourceSku via AssignProperties_To_ResourceSku & AssignProperties_From_ResourceSku returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceSku, ResourceSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceSku tests if a specific instance of ResourceSku can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceSku(subject ResourceSku) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceSku + err := copied.AssignProperties_To_ResourceSku(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceSku + err = actual.AssignProperties_From_ResourceSku(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceSku_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceSku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceSku, ResourceSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceSku runs a test to see if a specific instance of ResourceSku round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceSku(subject ResourceSku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceSku + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceSku instances for property testing - lazily instantiated by ResourceSkuGenerator() +var resourceSkuGenerator gopter.Gen + +// ResourceSkuGenerator returns a generator of ResourceSku instances for property testing. +func ResourceSkuGenerator() gopter.Gen { + if resourceSkuGenerator != nil { + return resourceSkuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceSku(generators) + resourceSkuGenerator = gen.Struct(reflect.TypeOf(ResourceSku{}), generators) + + return resourceSkuGenerator +} + +// AddIndependentPropertyGeneratorsForResourceSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceSku(gens map[string]gopter.Gen) { + gens["Capacity"] = gen.PtrOf(gen.Int()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf( + SignalRSkuTier_Basic, + SignalRSkuTier_Free, + SignalRSkuTier_Premium, + SignalRSkuTier_Standard)) +} + +func Test_ResourceSku_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceSku_STATUS to ResourceSku_STATUS via AssignProperties_To_ResourceSku_STATUS & AssignProperties_From_ResourceSku_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceSku_STATUS, ResourceSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceSku_STATUS tests if a specific instance of ResourceSku_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceSku_STATUS(subject ResourceSku_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceSku_STATUS + err := copied.AssignProperties_To_ResourceSku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceSku_STATUS + err = actual.AssignProperties_From_ResourceSku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceSku_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceSku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceSku_STATUS, ResourceSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceSku_STATUS runs a test to see if a specific instance of ResourceSku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceSku_STATUS(subject ResourceSku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceSku_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceSku_STATUS instances for property testing - lazily instantiated by ResourceSku_STATUSGenerator() +var resourceSku_STATUSGenerator gopter.Gen + +// ResourceSku_STATUSGenerator returns a generator of ResourceSku_STATUS instances for property testing. +func ResourceSku_STATUSGenerator() gopter.Gen { + if resourceSku_STATUSGenerator != nil { + return resourceSku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceSku_STATUS(generators) + resourceSku_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceSku_STATUS{}), generators) + + return resourceSku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceSku_STATUS(gens map[string]gopter.Gen) { + gens["Capacity"] = gen.PtrOf(gen.Int()) + gens["Family"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Size"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf( + SignalRSkuTier_STATUS_Basic, + SignalRSkuTier_STATUS_Free, + SignalRSkuTier_STATUS_Premium, + SignalRSkuTier_STATUS_Standard)) +} diff --git a/v2/api/signalrservice/v1api20240301/signal_r_types_gen.go b/v2/api/signalrservice/v1api20240301/signal_r_types_gen.go new file mode 100644 index 00000000000..266d5bdb2b1 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/signal_r_types_gen.go @@ -0,0 +1,7605 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/arm" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName} +type SignalR struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec SignalR_Spec `json:"spec,omitempty"` + Status SignalR_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &SignalR{} + +// GetConditions returns the conditions of the resource +func (signalR *SignalR) GetConditions() conditions.Conditions { + return signalR.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (signalR *SignalR) SetConditions(conditions conditions.Conditions) { + signalR.Status.Conditions = conditions +} + +var _ conversion.Convertible = &SignalR{} + +// ConvertFrom populates our SignalR from the provided hub SignalR +func (signalR *SignalR) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.SignalR) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/SignalR but received %T instead", hub) + } + + return signalR.AssignProperties_From_SignalR(source) +} + +// ConvertTo populates the provided hub SignalR from our SignalR +func (signalR *SignalR) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.SignalR) + if !ok { + return fmt.Errorf("expected signalrservice/v1api20240301/storage/SignalR but received %T instead", hub) + } + + return signalR.AssignProperties_To_SignalR(destination) +} + +// +kubebuilder:webhook:path=/mutate-signalrservice-azure-com-v1api20240301-signalr,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=signalrs,verbs=create;update,versions=v1api20240301,name=default.v1api20240301.signalrs.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &SignalR{} + +// Default applies defaults to the SignalR resource +func (signalR *SignalR) Default() { + signalR.defaultImpl() + var temp any = signalR + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (signalR *SignalR) defaultAzureName() { + if signalR.Spec.AzureName == "" { + signalR.Spec.AzureName = signalR.Name + } +} + +// defaultImpl applies the code generated defaults to the SignalR resource +func (signalR *SignalR) defaultImpl() { signalR.defaultAzureName() } + +var _ configmaps.Exporter = &SignalR{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (signalR *SignalR) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if signalR.Spec.OperatorSpec == nil { + return nil + } + return signalR.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &SignalR{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (signalR *SignalR) SecretDestinationExpressions() []*core.DestinationExpression { + if signalR.Spec.OperatorSpec == nil { + return nil + } + return signalR.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &SignalR{} + +// InitializeSpec initializes the spec for this resource from the given status +func (signalR *SignalR) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*SignalR_STATUS); ok { + return signalR.Spec.Initialize_From_SignalR_STATUS(s) + } + + return fmt.Errorf("expected Status of type SignalR_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &SignalR{} + +// AzureName returns the Azure name of the resource +func (signalR *SignalR) AzureName() string { + return signalR.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (signalR SignalR) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (signalR *SignalR) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (signalR *SignalR) GetSpec() genruntime.ConvertibleSpec { + return &signalR.Spec +} + +// GetStatus returns the status of this resource +func (signalR *SignalR) GetStatus() genruntime.ConvertibleStatus { + return &signalR.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (signalR *SignalR) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR" +func (signalR *SignalR) GetType() string { + return "Microsoft.SignalRService/signalR" +} + +// NewEmptyStatus returns a new empty (blank) status +func (signalR *SignalR) NewEmptyStatus() genruntime.ConvertibleStatus { + return &SignalR_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (signalR *SignalR) Owner() *genruntime.ResourceReference { + if signalR.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(signalR.Spec) + return signalR.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (signalR *SignalR) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*SignalR_STATUS); ok { + signalR.Status = *st + return nil + } + + // Convert status to required version + var st SignalR_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + signalR.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-signalrservice-azure-com-v1api20240301-signalr,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=signalrservice.azure.com,resources=signalrs,verbs=create;update,versions=v1api20240301,name=validate.v1api20240301.signalrs.signalrservice.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &SignalR{} + +// ValidateCreate validates the creation of the resource +func (signalR *SignalR) ValidateCreate() (admission.Warnings, error) { + validations := signalR.createValidations() + var temp any = signalR + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (signalR *SignalR) ValidateDelete() (admission.Warnings, error) { + validations := signalR.deleteValidations() + var temp any = signalR + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (signalR *SignalR) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := signalR.updateValidations() + var temp any = signalR + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate(old, validations) +} + +// createValidations validates the creation of the resource +func (signalR *SignalR) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){signalR.validateResourceReferences, signalR.validateOwnerReference, signalR.validateSecretDestinations, signalR.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (signalR *SignalR) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (signalR *SignalR) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return signalR.validateResourceReferences() + }, + signalR.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return signalR.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return signalR.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return signalR.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (signalR *SignalR) validateConfigMapDestinations() (admission.Warnings, error) { + if signalR.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(signalR, nil, signalR.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (signalR *SignalR) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(signalR) +} + +// validateResourceReferences validates all resource references +func (signalR *SignalR) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&signalR.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (signalR *SignalR) validateSecretDestinations() (admission.Warnings, error) { + if signalR.Spec.OperatorSpec == nil { + return nil, nil + } + var toValidate []*genruntime.SecretDestination + if signalR.Spec.OperatorSpec.Secrets != nil { + toValidate = []*genruntime.SecretDestination{ + signalR.Spec.OperatorSpec.Secrets.PrimaryConnectionString, + signalR.Spec.OperatorSpec.Secrets.PrimaryKey, + signalR.Spec.OperatorSpec.Secrets.SecondaryConnectionString, + signalR.Spec.OperatorSpec.Secrets.SecondaryKey, + } + } + return secrets.ValidateDestinations(signalR, toValidate, signalR.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (signalR *SignalR) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*SignalR) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, signalR) +} + +// AssignProperties_From_SignalR populates our SignalR from the provided source SignalR +func (signalR *SignalR) AssignProperties_From_SignalR(source *storage.SignalR) error { + + // ObjectMeta + signalR.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec SignalR_Spec + err := spec.AssignProperties_From_SignalR_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalR_Spec() to populate field Spec") + } + signalR.Spec = spec + + // Status + var status SignalR_STATUS + err = status.AssignProperties_From_SignalR_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalR_STATUS() to populate field Status") + } + signalR.Status = status + + // No error + return nil +} + +// AssignProperties_To_SignalR populates the provided destination SignalR from our SignalR +func (signalR *SignalR) AssignProperties_To_SignalR(destination *storage.SignalR) error { + + // ObjectMeta + destination.ObjectMeta = *signalR.ObjectMeta.DeepCopy() + + // Spec + var spec storage.SignalR_Spec + err := signalR.Spec.AssignProperties_To_SignalR_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalR_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.SignalR_STATUS + err = signalR.Status.AssignProperties_To_SignalR_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalR_STATUS() to populate field Status") + } + destination.Status = status + + // No error + return nil +} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (signalR *SignalR) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: signalR.Spec.OriginalVersion(), + Kind: "SignalR", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName} +type SignalRList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SignalR `json:"items"` +} + +type SignalR_Spec struct { + // +kubebuilder:validation:MaxLength=63 + // +kubebuilder:validation:MinLength=3 + // +kubebuilder:validation:Pattern="^[a-zA-Z][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]$" + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + + // Cors: Cross-Origin Resource Sharing (CORS) settings. + Cors *SignalRCorsSettings `json:"cors,omitempty"` + + // DisableAadAuth: DisableLocalAuth + // Enable or disable aad auth + // When set as true, connection with AuthType=aad won't work. + DisableAadAuth *bool `json:"disableAadAuth,omitempty"` + + // DisableLocalAuth: DisableLocalAuth + // Enable or disable local auth with AccessKey + // When set as true, connection with AccessKey=xxx won't work. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // Features: List of the featureFlags. + // FeatureFlags that are not included in the parameters for the update operation will not be modified. + // And the response will only include featureFlags that are explicitly set. + // When a featureFlag is not explicitly set, its globally default value will be used + // But keep in mind, the default value doesn't mean "false". It varies in terms of different FeatureFlags. + Features []SignalRFeature `json:"features,omitempty"` + + // Identity: A class represent managed identities used for request and response + Identity *ManagedIdentity `json:"identity,omitempty"` + + // Kind: The kind of the service + Kind *SignalrServiceKind `json:"kind,omitempty"` + + // LiveTraceConfiguration: Live trace configuration of a Microsoft.SignalRService resource. + LiveTraceConfiguration *LiveTraceConfiguration `json:"liveTraceConfiguration,omitempty"` + + // +kubebuilder:validation:Required + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // NetworkACLs: Network ACLs for the resource + NetworkACLs *SignalRNetworkACLs `json:"networkACLs,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *SignalROperatorSpec `json:"operatorSpec,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a resources.azure.com/ResourceGroup resource + Owner *genruntime.KnownResourceReference `group:"resources.azure.com" json:"owner,omitempty" kind:"ResourceGroup"` + + // PublicNetworkAccess: Enable or disable public network access. Default to "Enabled". + // When it's Enabled, network ACLs still apply. + // When it's Disabled, public network access is always disabled no matter what you set in network ACLs. + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + // This property is replica specific. Disable the regional endpoint without replica is not allowed. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceLogConfiguration: Resource log configuration of a Microsoft.SignalRService resource. + ResourceLogConfiguration *ResourceLogConfiguration `json:"resourceLogConfiguration,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "False". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` + + // Serverless: Serverless settings. + Serverless *ServerlessSettings `json:"serverless,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku `json:"sku,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Tls: TLS settings for the resource + Tls *SignalRTlsSettings `json:"tls,omitempty"` + + // Upstream: The settings for the Upstream when the service is in server-less mode. + Upstream *ServerlessUpstreamSettings `json:"upstream,omitempty"` +} + +var _ genruntime.ARMTransformer = &SignalR_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (signalR *SignalR_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if signalR == nil { + return nil, nil + } + result := &arm.SignalR_Spec{} + + // Set property "Identity": + if signalR.Identity != nil { + identity_ARM, err := (*signalR.Identity).ConvertToARM(resolved) + if err != nil { + return nil, err + } + identity := *identity_ARM.(*arm.ManagedIdentity) + result.Identity = &identity + } + + // Set property "Kind": + if signalR.Kind != nil { + var temp string + temp = string(*signalR.Kind) + kind := arm.SignalrServiceKind(temp) + result.Kind = &kind + } + + // Set property "Location": + if signalR.Location != nil { + location := *signalR.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if signalR.Cors != nil || + signalR.DisableAadAuth != nil || + signalR.DisableLocalAuth != nil || + signalR.Features != nil || + signalR.LiveTraceConfiguration != nil || + signalR.NetworkACLs != nil || + signalR.PublicNetworkAccess != nil || + signalR.RegionEndpointEnabled != nil || + signalR.ResourceLogConfiguration != nil || + signalR.ResourceStopped != nil || + signalR.Serverless != nil || + signalR.Tls != nil || + signalR.Upstream != nil { + result.Properties = &arm.SignalRProperties{} + } + if signalR.Cors != nil { + cors_ARM, err := (*signalR.Cors).ConvertToARM(resolved) + if err != nil { + return nil, err + } + cors := *cors_ARM.(*arm.SignalRCorsSettings) + result.Properties.Cors = &cors + } + if signalR.DisableAadAuth != nil { + disableAadAuth := *signalR.DisableAadAuth + result.Properties.DisableAadAuth = &disableAadAuth + } + if signalR.DisableLocalAuth != nil { + disableLocalAuth := *signalR.DisableLocalAuth + result.Properties.DisableLocalAuth = &disableLocalAuth + } + for _, item := range signalR.Features { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.Properties.Features = append(result.Properties.Features, *item_ARM.(*arm.SignalRFeature)) + } + if signalR.LiveTraceConfiguration != nil { + liveTraceConfiguration_ARM, err := (*signalR.LiveTraceConfiguration).ConvertToARM(resolved) + if err != nil { + return nil, err + } + liveTraceConfiguration := *liveTraceConfiguration_ARM.(*arm.LiveTraceConfiguration) + result.Properties.LiveTraceConfiguration = &liveTraceConfiguration + } + if signalR.NetworkACLs != nil { + networkACLs_ARM, err := (*signalR.NetworkACLs).ConvertToARM(resolved) + if err != nil { + return nil, err + } + networkACLs := *networkACLs_ARM.(*arm.SignalRNetworkACLs) + result.Properties.NetworkACLs = &networkACLs + } + if signalR.PublicNetworkAccess != nil { + publicNetworkAccess := *signalR.PublicNetworkAccess + result.Properties.PublicNetworkAccess = &publicNetworkAccess + } + if signalR.RegionEndpointEnabled != nil { + regionEndpointEnabled := *signalR.RegionEndpointEnabled + result.Properties.RegionEndpointEnabled = ®ionEndpointEnabled + } + if signalR.ResourceLogConfiguration != nil { + resourceLogConfiguration_ARM, err := (*signalR.ResourceLogConfiguration).ConvertToARM(resolved) + if err != nil { + return nil, err + } + resourceLogConfiguration := *resourceLogConfiguration_ARM.(*arm.ResourceLogConfiguration) + result.Properties.ResourceLogConfiguration = &resourceLogConfiguration + } + if signalR.ResourceStopped != nil { + resourceStopped := *signalR.ResourceStopped + result.Properties.ResourceStopped = &resourceStopped + } + if signalR.Serverless != nil { + serverless_ARM, err := (*signalR.Serverless).ConvertToARM(resolved) + if err != nil { + return nil, err + } + serverless := *serverless_ARM.(*arm.ServerlessSettings) + result.Properties.Serverless = &serverless + } + if signalR.Tls != nil { + tls_ARM, err := (*signalR.Tls).ConvertToARM(resolved) + if err != nil { + return nil, err + } + tls := *tls_ARM.(*arm.SignalRTlsSettings) + result.Properties.Tls = &tls + } + if signalR.Upstream != nil { + upstream_ARM, err := (*signalR.Upstream).ConvertToARM(resolved) + if err != nil { + return nil, err + } + upstream := *upstream_ARM.(*arm.ServerlessUpstreamSettings) + result.Properties.Upstream = &upstream + } + + // Set property "Sku": + if signalR.Sku != nil { + sku_ARM, err := (*signalR.Sku).ConvertToARM(resolved) + if err != nil { + return nil, err + } + sku := *sku_ARM.(*arm.ResourceSku) + result.Sku = &sku + } + + // Set property "Tags": + if signalR.Tags != nil { + result.Tags = make(map[string]string, len(signalR.Tags)) + for key, value := range signalR.Tags { + result.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (signalR *SignalR_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalR_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (signalR *SignalR_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalR_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalR_Spec, got %T", armInput) + } + + // Set property "AzureName": + signalR.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "Cors": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Cors != nil { + var cors1 SignalRCorsSettings + err := cors1.PopulateFromARM(owner, *typedInput.Properties.Cors) + if err != nil { + return err + } + cors := cors1 + signalR.Cors = &cors + } + } + + // Set property "DisableAadAuth": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DisableAadAuth != nil { + disableAadAuth := *typedInput.Properties.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } + } + + // Set property "DisableLocalAuth": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DisableLocalAuth != nil { + disableLocalAuth := *typedInput.Properties.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } + } + + // Set property "Features": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.Features { + var item1 SignalRFeature + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + signalR.Features = append(signalR.Features, item1) + } + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 ManagedIdentity + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + signalR.Identity = &identity + } + + // Set property "Kind": + if typedInput.Kind != nil { + var temp string + temp = string(*typedInput.Kind) + kind := SignalrServiceKind(temp) + signalR.Kind = &kind + } + + // Set property "LiveTraceConfiguration": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.LiveTraceConfiguration != nil { + var liveTraceConfiguration1 LiveTraceConfiguration + err := liveTraceConfiguration1.PopulateFromARM(owner, *typedInput.Properties.LiveTraceConfiguration) + if err != nil { + return err + } + liveTraceConfiguration := liveTraceConfiguration1 + signalR.LiveTraceConfiguration = &liveTraceConfiguration + } + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + signalR.Location = &location + } + + // Set property "NetworkACLs": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.NetworkACLs != nil { + var networkACLs1 SignalRNetworkACLs + err := networkACLs1.PopulateFromARM(owner, *typedInput.Properties.NetworkACLs) + if err != nil { + return err + } + networkACLs := networkACLs1 + signalR.NetworkACLs = &networkACLs + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + signalR.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "PublicNetworkAccess": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PublicNetworkAccess != nil { + publicNetworkAccess := *typedInput.Properties.PublicNetworkAccess + signalR.PublicNetworkAccess = &publicNetworkAccess + } + } + + // Set property "RegionEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RegionEndpointEnabled != nil { + regionEndpointEnabled := *typedInput.Properties.RegionEndpointEnabled + signalR.RegionEndpointEnabled = ®ionEndpointEnabled + } + } + + // Set property "ResourceLogConfiguration": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ResourceLogConfiguration != nil { + var resourceLogConfiguration1 ResourceLogConfiguration + err := resourceLogConfiguration1.PopulateFromARM(owner, *typedInput.Properties.ResourceLogConfiguration) + if err != nil { + return err + } + resourceLogConfiguration := resourceLogConfiguration1 + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } + } + + // Set property "ResourceStopped": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ResourceStopped != nil { + resourceStopped := *typedInput.Properties.ResourceStopped + signalR.ResourceStopped = &resourceStopped + } + } + + // Set property "Serverless": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Serverless != nil { + var serverless1 ServerlessSettings + err := serverless1.PopulateFromARM(owner, *typedInput.Properties.Serverless) + if err != nil { + return err + } + serverless := serverless1 + signalR.Serverless = &serverless + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 ResourceSku + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + signalR.Sku = &sku + } + + // Set property "Tags": + if typedInput.Tags != nil { + signalR.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + signalR.Tags[key] = value + } + } + + // Set property "Tls": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Tls != nil { + var tls1 SignalRTlsSettings + err := tls1.PopulateFromARM(owner, *typedInput.Properties.Tls) + if err != nil { + return err + } + tls := tls1 + signalR.Tls = &tls + } + } + + // Set property "Upstream": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Upstream != nil { + var upstream1 ServerlessUpstreamSettings + err := upstream1.PopulateFromARM(owner, *typedInput.Properties.Upstream) + if err != nil { + return err + } + upstream := upstream1 + signalR.Upstream = &upstream + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &SignalR_Spec{} + +// ConvertSpecFrom populates our SignalR_Spec from the provided source +func (signalR *SignalR_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.SignalR_Spec) + if ok { + // Populate our instance from source + return signalR.AssignProperties_From_SignalR_Spec(src) + } + + // Convert to an intermediate form + src = &storage.SignalR_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = signalR.AssignProperties_From_SignalR_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our SignalR_Spec +func (signalR *SignalR_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.SignalR_Spec) + if ok { + // Populate destination from our instance + return signalR.AssignProperties_To_SignalR_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.SignalR_Spec{} + err := signalR.AssignProperties_To_SignalR_Spec(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecTo()") + } + + // Update dst from our instance + err = dst.ConvertSpecTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecTo()") + } + + return nil +} + +// AssignProperties_From_SignalR_Spec populates our SignalR_Spec from the provided source SignalR_Spec +func (signalR *SignalR_Spec) AssignProperties_From_SignalR_Spec(source *storage.SignalR_Spec) error { + + // AzureName + signalR.AzureName = source.AzureName + + // Cors + if source.Cors != nil { + var cor SignalRCorsSettings + err := cor.AssignProperties_From_SignalRCorsSettings(source.Cors) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRCorsSettings() to populate field Cors") + } + signalR.Cors = &cor + } else { + signalR.Cors = nil + } + + // DisableAadAuth + if source.DisableAadAuth != nil { + disableAadAuth := *source.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } else { + signalR.DisableAadAuth = nil + } + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } else { + signalR.DisableLocalAuth = nil + } + + // Features + if source.Features != nil { + featureList := make([]SignalRFeature, len(source.Features)) + for featureIndex, featureItem := range source.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature SignalRFeature + err := feature.AssignProperties_From_SignalRFeature(&featureItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRFeature() to populate field Features") + } + featureList[featureIndex] = feature + } + signalR.Features = featureList + } else { + signalR.Features = nil + } + + // Identity + if source.Identity != nil { + var identity ManagedIdentity + err := identity.AssignProperties_From_ManagedIdentity(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentity() to populate field Identity") + } + signalR.Identity = &identity + } else { + signalR.Identity = nil + } + + // Kind + if source.Kind != nil { + kind := *source.Kind + kindTemp := genruntime.ToEnum(kind, signalrServiceKind_Values) + signalR.Kind = &kindTemp + } else { + signalR.Kind = nil + } + + // LiveTraceConfiguration + if source.LiveTraceConfiguration != nil { + var liveTraceConfiguration LiveTraceConfiguration + err := liveTraceConfiguration.AssignProperties_From_LiveTraceConfiguration(source.LiveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_LiveTraceConfiguration() to populate field LiveTraceConfiguration") + } + signalR.LiveTraceConfiguration = &liveTraceConfiguration + } else { + signalR.LiveTraceConfiguration = nil + } + + // Location + signalR.Location = genruntime.ClonePointerToString(source.Location) + + // NetworkACLs + if source.NetworkACLs != nil { + var networkACL SignalRNetworkACLs + err := networkACL.AssignProperties_From_SignalRNetworkACLs(source.NetworkACLs) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRNetworkACLs() to populate field NetworkACLs") + } + signalR.NetworkACLs = &networkACL + } else { + signalR.NetworkACLs = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec SignalROperatorSpec + err := operatorSpec.AssignProperties_From_SignalROperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalROperatorSpec() to populate field OperatorSpec") + } + signalR.OperatorSpec = &operatorSpec + } else { + signalR.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + signalR.Owner = &owner + } else { + signalR.Owner = nil + } + + // PublicNetworkAccess + signalR.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // RegionEndpointEnabled + signalR.RegionEndpointEnabled = genruntime.ClonePointerToString(source.RegionEndpointEnabled) + + // ResourceLogConfiguration + if source.ResourceLogConfiguration != nil { + var resourceLogConfiguration ResourceLogConfiguration + err := resourceLogConfiguration.AssignProperties_From_ResourceLogConfiguration(source.ResourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogConfiguration() to populate field ResourceLogConfiguration") + } + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } else { + signalR.ResourceLogConfiguration = nil + } + + // ResourceStopped + signalR.ResourceStopped = genruntime.ClonePointerToString(source.ResourceStopped) + + // Serverless + if source.Serverless != nil { + var serverless ServerlessSettings + err := serverless.AssignProperties_From_ServerlessSettings(source.Serverless) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ServerlessSettings() to populate field Serverless") + } + signalR.Serverless = &serverless + } else { + signalR.Serverless = nil + } + + // Sku + if source.Sku != nil { + var sku ResourceSku + err := sku.AssignProperties_From_ResourceSku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceSku() to populate field Sku") + } + signalR.Sku = &sku + } else { + signalR.Sku = nil + } + + // Tags + signalR.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Tls + if source.Tls != nil { + var tl SignalRTlsSettings + err := tl.AssignProperties_From_SignalRTlsSettings(source.Tls) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRTlsSettings() to populate field Tls") + } + signalR.Tls = &tl + } else { + signalR.Tls = nil + } + + // Upstream + if source.Upstream != nil { + var upstream ServerlessUpstreamSettings + err := upstream.AssignProperties_From_ServerlessUpstreamSettings(source.Upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ServerlessUpstreamSettings() to populate field Upstream") + } + signalR.Upstream = &upstream + } else { + signalR.Upstream = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalR_Spec populates the provided destination SignalR_Spec from our SignalR_Spec +func (signalR *SignalR_Spec) AssignProperties_To_SignalR_Spec(destination *storage.SignalR_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = signalR.AzureName + + // Cors + if signalR.Cors != nil { + var cor storage.SignalRCorsSettings + err := signalR.Cors.AssignProperties_To_SignalRCorsSettings(&cor) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRCorsSettings() to populate field Cors") + } + destination.Cors = &cor + } else { + destination.Cors = nil + } + + // DisableAadAuth + if signalR.DisableAadAuth != nil { + disableAadAuth := *signalR.DisableAadAuth + destination.DisableAadAuth = &disableAadAuth + } else { + destination.DisableAadAuth = nil + } + + // DisableLocalAuth + if signalR.DisableLocalAuth != nil { + disableLocalAuth := *signalR.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // Features + if signalR.Features != nil { + featureList := make([]storage.SignalRFeature, len(signalR.Features)) + for featureIndex, featureItem := range signalR.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature storage.SignalRFeature + err := featureItem.AssignProperties_To_SignalRFeature(&feature) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRFeature() to populate field Features") + } + featureList[featureIndex] = feature + } + destination.Features = featureList + } else { + destination.Features = nil + } + + // Identity + if signalR.Identity != nil { + var identity storage.ManagedIdentity + err := signalR.Identity.AssignProperties_To_ManagedIdentity(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentity() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Kind + if signalR.Kind != nil { + kind := string(*signalR.Kind) + destination.Kind = &kind + } else { + destination.Kind = nil + } + + // LiveTraceConfiguration + if signalR.LiveTraceConfiguration != nil { + var liveTraceConfiguration storage.LiveTraceConfiguration + err := signalR.LiveTraceConfiguration.AssignProperties_To_LiveTraceConfiguration(&liveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_LiveTraceConfiguration() to populate field LiveTraceConfiguration") + } + destination.LiveTraceConfiguration = &liveTraceConfiguration + } else { + destination.LiveTraceConfiguration = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(signalR.Location) + + // NetworkACLs + if signalR.NetworkACLs != nil { + var networkACL storage.SignalRNetworkACLs + err := signalR.NetworkACLs.AssignProperties_To_SignalRNetworkACLs(&networkACL) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRNetworkACLs() to populate field NetworkACLs") + } + destination.NetworkACLs = &networkACL + } else { + destination.NetworkACLs = nil + } + + // OperatorSpec + if signalR.OperatorSpec != nil { + var operatorSpec storage.SignalROperatorSpec + err := signalR.OperatorSpec.AssignProperties_To_SignalROperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalROperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = signalR.OriginalVersion() + + // Owner + if signalR.Owner != nil { + owner := signalR.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(signalR.PublicNetworkAccess) + + // RegionEndpointEnabled + destination.RegionEndpointEnabled = genruntime.ClonePointerToString(signalR.RegionEndpointEnabled) + + // ResourceLogConfiguration + if signalR.ResourceLogConfiguration != nil { + var resourceLogConfiguration storage.ResourceLogConfiguration + err := signalR.ResourceLogConfiguration.AssignProperties_To_ResourceLogConfiguration(&resourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogConfiguration() to populate field ResourceLogConfiguration") + } + destination.ResourceLogConfiguration = &resourceLogConfiguration + } else { + destination.ResourceLogConfiguration = nil + } + + // ResourceStopped + destination.ResourceStopped = genruntime.ClonePointerToString(signalR.ResourceStopped) + + // Serverless + if signalR.Serverless != nil { + var serverless storage.ServerlessSettings + err := signalR.Serverless.AssignProperties_To_ServerlessSettings(&serverless) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ServerlessSettings() to populate field Serverless") + } + destination.Serverless = &serverless + } else { + destination.Serverless = nil + } + + // Sku + if signalR.Sku != nil { + var sku storage.ResourceSku + err := signalR.Sku.AssignProperties_To_ResourceSku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceSku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(signalR.Tags) + + // Tls + if signalR.Tls != nil { + var tl storage.SignalRTlsSettings + err := signalR.Tls.AssignProperties_To_SignalRTlsSettings(&tl) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRTlsSettings() to populate field Tls") + } + destination.Tls = &tl + } else { + destination.Tls = nil + } + + // Upstream + if signalR.Upstream != nil { + var upstream storage.ServerlessUpstreamSettings + err := signalR.Upstream.AssignProperties_To_ServerlessUpstreamSettings(&upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ServerlessUpstreamSettings() to populate field Upstream") + } + destination.Upstream = &upstream + } else { + destination.Upstream = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_SignalR_STATUS populates our SignalR_Spec from the provided source SignalR_STATUS +func (signalR *SignalR_Spec) Initialize_From_SignalR_STATUS(source *SignalR_STATUS) error { + + // Cors + if source.Cors != nil { + var cor SignalRCorsSettings + err := cor.Initialize_From_SignalRCorsSettings_STATUS(source.Cors) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_SignalRCorsSettings_STATUS() to populate field Cors") + } + signalR.Cors = &cor + } else { + signalR.Cors = nil + } + + // DisableAadAuth + if source.DisableAadAuth != nil { + disableAadAuth := *source.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } else { + signalR.DisableAadAuth = nil + } + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } else { + signalR.DisableLocalAuth = nil + } + + // Features + if source.Features != nil { + featureList := make([]SignalRFeature, len(source.Features)) + for featureIndex, featureItem := range source.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature SignalRFeature + err := feature.Initialize_From_SignalRFeature_STATUS(&featureItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_SignalRFeature_STATUS() to populate field Features") + } + featureList[featureIndex] = feature + } + signalR.Features = featureList + } else { + signalR.Features = nil + } + + // Identity + if source.Identity != nil { + var identity ManagedIdentity + err := identity.Initialize_From_ManagedIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ManagedIdentity_STATUS() to populate field Identity") + } + signalR.Identity = &identity + } else { + signalR.Identity = nil + } + + // Kind + if source.Kind != nil { + kind := genruntime.ToEnum(string(*source.Kind), signalrServiceKind_Values) + signalR.Kind = &kind + } else { + signalR.Kind = nil + } + + // LiveTraceConfiguration + if source.LiveTraceConfiguration != nil { + var liveTraceConfiguration LiveTraceConfiguration + err := liveTraceConfiguration.Initialize_From_LiveTraceConfiguration_STATUS(source.LiveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_LiveTraceConfiguration_STATUS() to populate field LiveTraceConfiguration") + } + signalR.LiveTraceConfiguration = &liveTraceConfiguration + } else { + signalR.LiveTraceConfiguration = nil + } + + // Location + signalR.Location = genruntime.ClonePointerToString(source.Location) + + // NetworkACLs + if source.NetworkACLs != nil { + var networkACL SignalRNetworkACLs + err := networkACL.Initialize_From_SignalRNetworkACLs_STATUS(source.NetworkACLs) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_SignalRNetworkACLs_STATUS() to populate field NetworkACLs") + } + signalR.NetworkACLs = &networkACL + } else { + signalR.NetworkACLs = nil + } + + // PublicNetworkAccess + signalR.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // RegionEndpointEnabled + signalR.RegionEndpointEnabled = genruntime.ClonePointerToString(source.RegionEndpointEnabled) + + // ResourceLogConfiguration + if source.ResourceLogConfiguration != nil { + var resourceLogConfiguration ResourceLogConfiguration + err := resourceLogConfiguration.Initialize_From_ResourceLogConfiguration_STATUS(source.ResourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ResourceLogConfiguration_STATUS() to populate field ResourceLogConfiguration") + } + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } else { + signalR.ResourceLogConfiguration = nil + } + + // ResourceStopped + signalR.ResourceStopped = genruntime.ClonePointerToString(source.ResourceStopped) + + // Serverless + if source.Serverless != nil { + var serverless ServerlessSettings + err := serverless.Initialize_From_ServerlessSettings_STATUS(source.Serverless) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ServerlessSettings_STATUS() to populate field Serverless") + } + signalR.Serverless = &serverless + } else { + signalR.Serverless = nil + } + + // Sku + if source.Sku != nil { + var sku ResourceSku + err := sku.Initialize_From_ResourceSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ResourceSku_STATUS() to populate field Sku") + } + signalR.Sku = &sku + } else { + signalR.Sku = nil + } + + // Tags + signalR.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Tls + if source.Tls != nil { + var tl SignalRTlsSettings + err := tl.Initialize_From_SignalRTlsSettings_STATUS(source.Tls) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_SignalRTlsSettings_STATUS() to populate field Tls") + } + signalR.Tls = &tl + } else { + signalR.Tls = nil + } + + // Upstream + if source.Upstream != nil { + var upstream ServerlessUpstreamSettings + err := upstream.Initialize_From_ServerlessUpstreamSettings_STATUS(source.Upstream) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ServerlessUpstreamSettings_STATUS() to populate field Upstream") + } + signalR.Upstream = &upstream + } else { + signalR.Upstream = nil + } + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (signalR *SignalR_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (signalR *SignalR_Spec) SetAzureName(azureName string) { signalR.AzureName = azureName } + +type SignalR_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // Cors: Cross-Origin Resource Sharing (CORS) settings. + Cors *SignalRCorsSettings_STATUS `json:"cors,omitempty"` + + // DisableAadAuth: DisableLocalAuth + // Enable or disable aad auth + // When set as true, connection with AuthType=aad won't work. + DisableAadAuth *bool `json:"disableAadAuth,omitempty"` + + // DisableLocalAuth: DisableLocalAuth + // Enable or disable local auth with AccessKey + // When set as true, connection with AccessKey=xxx won't work. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // ExternalIP: The publicly accessible IP of the resource. + ExternalIP *string `json:"externalIP,omitempty"` + + // Features: List of the featureFlags. + // FeatureFlags that are not included in the parameters for the update operation will not be modified. + // And the response will only include featureFlags that are explicitly set. + // When a featureFlag is not explicitly set, its globally default value will be used + // But keep in mind, the default value doesn't mean "false". It varies in terms of different FeatureFlags. + Features []SignalRFeature_STATUS `json:"features,omitempty"` + + // HostName: FQDN of the service instance. + HostName *string `json:"hostName,omitempty"` + + // HostNamePrefix: Deprecated. + HostNamePrefix *string `json:"hostNamePrefix,omitempty"` + + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // Identity: A class represent managed identities used for request and response + Identity *ManagedIdentity_STATUS `json:"identity,omitempty"` + + // Kind: The kind of the service + Kind *SignalrServiceKind_STATUS `json:"kind,omitempty"` + + // LiveTraceConfiguration: Live trace configuration of a Microsoft.SignalRService resource. + LiveTraceConfiguration *LiveTraceConfiguration_STATUS `json:"liveTraceConfiguration,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // NetworkACLs: Network ACLs for the resource + NetworkACLs *SignalRNetworkACLs_STATUS `json:"networkACLs,omitempty"` + + // PrivateEndpointConnections: Private endpoint connections to the resource. + PrivateEndpointConnections []PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded `json:"privateEndpointConnections,omitempty"` + + // ProvisioningState: Provisioning state of the resource. + ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // PublicNetworkAccess: Enable or disable public network access. Default to "Enabled". + // When it's Enabled, network ACLs still apply. + // When it's Disabled, public network access is always disabled no matter what you set in network ACLs. + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + + // PublicPort: The publicly accessible port of the resource which is designed for browser/client side usage. + PublicPort *int `json:"publicPort,omitempty"` + + // RegionEndpointEnabled: Enable or disable the regional endpoint. Default to "Enabled". + // When it's Disabled, new connections will not be routed to this endpoint, however existing connections will not be + // affected. + // This property is replica specific. Disable the regional endpoint without replica is not allowed. + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + + // ResourceLogConfiguration: Resource log configuration of a Microsoft.SignalRService resource. + ResourceLogConfiguration *ResourceLogConfiguration_STATUS `json:"resourceLogConfiguration,omitempty"` + + // ResourceStopped: Stop or start the resource. Default to "False". + // When it's true, the data plane of the resource is shutdown. + // When it's false, the data plane of the resource is started. + ResourceStopped *string `json:"resourceStopped,omitempty"` + + // ServerPort: The publicly accessible port of the resource which is designed for customer server side usage. + ServerPort *int `json:"serverPort,omitempty"` + + // Serverless: Serverless settings. + Serverless *ServerlessSettings_STATUS `json:"serverless,omitempty"` + + // SharedPrivateLinkResources: The list of shared private link resources. + SharedPrivateLinkResources []SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded `json:"sharedPrivateLinkResources,omitempty"` + + // Sku: The billing information of the resource. + Sku *ResourceSku_STATUS `json:"sku,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Tls: TLS settings for the resource + Tls *SignalRTlsSettings_STATUS `json:"tls,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` + + // Upstream: The settings for the Upstream when the service is in server-less mode. + Upstream *ServerlessUpstreamSettings_STATUS `json:"upstream,omitempty"` + + // Version: Version of the resource. Probably you need the same or higher version of client SDKs. + Version *string `json:"version,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &SignalR_STATUS{} + +// ConvertStatusFrom populates our SignalR_STATUS from the provided source +func (signalR *SignalR_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.SignalR_STATUS) + if ok { + // Populate our instance from source + return signalR.AssignProperties_From_SignalR_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.SignalR_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = signalR.AssignProperties_From_SignalR_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our SignalR_STATUS +func (signalR *SignalR_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.SignalR_STATUS) + if ok { + // Populate destination from our instance + return signalR.AssignProperties_To_SignalR_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.SignalR_STATUS{} + err := signalR.AssignProperties_To_SignalR_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } + + // Update dst from our instance + err = dst.ConvertStatusTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusTo()") + } + + return nil +} + +var _ genruntime.FromARMConverter = &SignalR_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (signalR *SignalR_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalR_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (signalR *SignalR_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalR_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalR_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "Cors": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Cors != nil { + var cors1 SignalRCorsSettings_STATUS + err := cors1.PopulateFromARM(owner, *typedInput.Properties.Cors) + if err != nil { + return err + } + cors := cors1 + signalR.Cors = &cors + } + } + + // Set property "DisableAadAuth": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DisableAadAuth != nil { + disableAadAuth := *typedInput.Properties.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } + } + + // Set property "DisableLocalAuth": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DisableLocalAuth != nil { + disableLocalAuth := *typedInput.Properties.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } + } + + // Set property "ExternalIP": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ExternalIP != nil { + externalIP := *typedInput.Properties.ExternalIP + signalR.ExternalIP = &externalIP + } + } + + // Set property "Features": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.Features { + var item1 SignalRFeature_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + signalR.Features = append(signalR.Features, item1) + } + } + + // Set property "HostName": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.HostName != nil { + hostName := *typedInput.Properties.HostName + signalR.HostName = &hostName + } + } + + // Set property "HostNamePrefix": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.HostNamePrefix != nil { + hostNamePrefix := *typedInput.Properties.HostNamePrefix + signalR.HostNamePrefix = &hostNamePrefix + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + signalR.Id = &id + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 ManagedIdentity_STATUS + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + signalR.Identity = &identity + } + + // Set property "Kind": + if typedInput.Kind != nil { + var temp string + temp = string(*typedInput.Kind) + kind := SignalrServiceKind_STATUS(temp) + signalR.Kind = &kind + } + + // Set property "LiveTraceConfiguration": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.LiveTraceConfiguration != nil { + var liveTraceConfiguration1 LiveTraceConfiguration_STATUS + err := liveTraceConfiguration1.PopulateFromARM(owner, *typedInput.Properties.LiveTraceConfiguration) + if err != nil { + return err + } + liveTraceConfiguration := liveTraceConfiguration1 + signalR.LiveTraceConfiguration = &liveTraceConfiguration + } + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + signalR.Location = &location + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + signalR.Name = &name + } + + // Set property "NetworkACLs": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.NetworkACLs != nil { + var networkACLs1 SignalRNetworkACLs_STATUS + err := networkACLs1.PopulateFromARM(owner, *typedInput.Properties.NetworkACLs) + if err != nil { + return err + } + networkACLs := networkACLs1 + signalR.NetworkACLs = &networkACLs + } + } + + // Set property "PrivateEndpointConnections": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.PrivateEndpointConnections { + var item1 PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + signalR.PrivateEndpointConnections = append(signalR.PrivateEndpointConnections, item1) + } + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := ProvisioningState_STATUS(temp) + signalR.ProvisioningState = &provisioningState + } + } + + // Set property "PublicNetworkAccess": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PublicNetworkAccess != nil { + publicNetworkAccess := *typedInput.Properties.PublicNetworkAccess + signalR.PublicNetworkAccess = &publicNetworkAccess + } + } + + // Set property "PublicPort": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PublicPort != nil { + publicPort := *typedInput.Properties.PublicPort + signalR.PublicPort = &publicPort + } + } + + // Set property "RegionEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RegionEndpointEnabled != nil { + regionEndpointEnabled := *typedInput.Properties.RegionEndpointEnabled + signalR.RegionEndpointEnabled = ®ionEndpointEnabled + } + } + + // Set property "ResourceLogConfiguration": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ResourceLogConfiguration != nil { + var resourceLogConfiguration1 ResourceLogConfiguration_STATUS + err := resourceLogConfiguration1.PopulateFromARM(owner, *typedInput.Properties.ResourceLogConfiguration) + if err != nil { + return err + } + resourceLogConfiguration := resourceLogConfiguration1 + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } + } + + // Set property "ResourceStopped": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ResourceStopped != nil { + resourceStopped := *typedInput.Properties.ResourceStopped + signalR.ResourceStopped = &resourceStopped + } + } + + // Set property "ServerPort": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ServerPort != nil { + serverPort := *typedInput.Properties.ServerPort + signalR.ServerPort = &serverPort + } + } + + // Set property "Serverless": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Serverless != nil { + var serverless1 ServerlessSettings_STATUS + err := serverless1.PopulateFromARM(owner, *typedInput.Properties.Serverless) + if err != nil { + return err + } + serverless := serverless1 + signalR.Serverless = &serverless + } + } + + // Set property "SharedPrivateLinkResources": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.SharedPrivateLinkResources { + var item1 SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + signalR.SharedPrivateLinkResources = append(signalR.SharedPrivateLinkResources, item1) + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 ResourceSku_STATUS + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + signalR.Sku = &sku + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + signalR.SystemData = &systemData + } + + // Set property "Tags": + if typedInput.Tags != nil { + signalR.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + signalR.Tags[key] = value + } + } + + // Set property "Tls": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Tls != nil { + var tls1 SignalRTlsSettings_STATUS + err := tls1.PopulateFromARM(owner, *typedInput.Properties.Tls) + if err != nil { + return err + } + tls := tls1 + signalR.Tls = &tls + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + signalR.Type = &typeVar + } + + // Set property "Upstream": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Upstream != nil { + var upstream1 ServerlessUpstreamSettings_STATUS + err := upstream1.PopulateFromARM(owner, *typedInput.Properties.Upstream) + if err != nil { + return err + } + upstream := upstream1 + signalR.Upstream = &upstream + } + } + + // Set property "Version": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Version != nil { + version := *typedInput.Properties.Version + signalR.Version = &version + } + } + + // No error + return nil +} + +// AssignProperties_From_SignalR_STATUS populates our SignalR_STATUS from the provided source SignalR_STATUS +func (signalR *SignalR_STATUS) AssignProperties_From_SignalR_STATUS(source *storage.SignalR_STATUS) error { + + // Conditions + signalR.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Cors + if source.Cors != nil { + var cor SignalRCorsSettings_STATUS + err := cor.AssignProperties_From_SignalRCorsSettings_STATUS(source.Cors) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRCorsSettings_STATUS() to populate field Cors") + } + signalR.Cors = &cor + } else { + signalR.Cors = nil + } + + // DisableAadAuth + if source.DisableAadAuth != nil { + disableAadAuth := *source.DisableAadAuth + signalR.DisableAadAuth = &disableAadAuth + } else { + signalR.DisableAadAuth = nil + } + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + signalR.DisableLocalAuth = &disableLocalAuth + } else { + signalR.DisableLocalAuth = nil + } + + // ExternalIP + signalR.ExternalIP = genruntime.ClonePointerToString(source.ExternalIP) + + // Features + if source.Features != nil { + featureList := make([]SignalRFeature_STATUS, len(source.Features)) + for featureIndex, featureItem := range source.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature SignalRFeature_STATUS + err := feature.AssignProperties_From_SignalRFeature_STATUS(&featureItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRFeature_STATUS() to populate field Features") + } + featureList[featureIndex] = feature + } + signalR.Features = featureList + } else { + signalR.Features = nil + } + + // HostName + signalR.HostName = genruntime.ClonePointerToString(source.HostName) + + // HostNamePrefix + signalR.HostNamePrefix = genruntime.ClonePointerToString(source.HostNamePrefix) + + // Id + signalR.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity ManagedIdentity_STATUS + err := identity.AssignProperties_From_ManagedIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentity_STATUS() to populate field Identity") + } + signalR.Identity = &identity + } else { + signalR.Identity = nil + } + + // Kind + if source.Kind != nil { + kind := *source.Kind + kindTemp := genruntime.ToEnum(kind, signalrServiceKind_STATUS_Values) + signalR.Kind = &kindTemp + } else { + signalR.Kind = nil + } + + // LiveTraceConfiguration + if source.LiveTraceConfiguration != nil { + var liveTraceConfiguration LiveTraceConfiguration_STATUS + err := liveTraceConfiguration.AssignProperties_From_LiveTraceConfiguration_STATUS(source.LiveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_LiveTraceConfiguration_STATUS() to populate field LiveTraceConfiguration") + } + signalR.LiveTraceConfiguration = &liveTraceConfiguration + } else { + signalR.LiveTraceConfiguration = nil + } + + // Location + signalR.Location = genruntime.ClonePointerToString(source.Location) + + // Name + signalR.Name = genruntime.ClonePointerToString(source.Name) + + // NetworkACLs + if source.NetworkACLs != nil { + var networkACL SignalRNetworkACLs_STATUS + err := networkACL.AssignProperties_From_SignalRNetworkACLs_STATUS(source.NetworkACLs) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRNetworkACLs_STATUS() to populate field NetworkACLs") + } + signalR.NetworkACLs = &networkACL + } else { + signalR.NetworkACLs = nil + } + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + signalR.PrivateEndpointConnections = privateEndpointConnectionList + } else { + signalR.PrivateEndpointConnections = nil + } + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, provisioningState_STATUS_Values) + signalR.ProvisioningState = &provisioningStateTemp + } else { + signalR.ProvisioningState = nil + } + + // PublicNetworkAccess + signalR.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // PublicPort + signalR.PublicPort = genruntime.ClonePointerToInt(source.PublicPort) + + // RegionEndpointEnabled + signalR.RegionEndpointEnabled = genruntime.ClonePointerToString(source.RegionEndpointEnabled) + + // ResourceLogConfiguration + if source.ResourceLogConfiguration != nil { + var resourceLogConfiguration ResourceLogConfiguration_STATUS + err := resourceLogConfiguration.AssignProperties_From_ResourceLogConfiguration_STATUS(source.ResourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogConfiguration_STATUS() to populate field ResourceLogConfiguration") + } + signalR.ResourceLogConfiguration = &resourceLogConfiguration + } else { + signalR.ResourceLogConfiguration = nil + } + + // ResourceStopped + signalR.ResourceStopped = genruntime.ClonePointerToString(source.ResourceStopped) + + // ServerPort + signalR.ServerPort = genruntime.ClonePointerToInt(source.ServerPort) + + // Serverless + if source.Serverless != nil { + var serverless ServerlessSettings_STATUS + err := serverless.AssignProperties_From_ServerlessSettings_STATUS(source.Serverless) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ServerlessSettings_STATUS() to populate field Serverless") + } + signalR.Serverless = &serverless + } else { + signalR.Serverless = nil + } + + // SharedPrivateLinkResources + if source.SharedPrivateLinkResources != nil { + sharedPrivateLinkResourceList := make([]SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, len(source.SharedPrivateLinkResources)) + for sharedPrivateLinkResourceIndex, sharedPrivateLinkResourceItem := range source.SharedPrivateLinkResources { + // Shadow the loop variable to avoid aliasing + sharedPrivateLinkResourceItem := sharedPrivateLinkResourceItem + var sharedPrivateLinkResource SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := sharedPrivateLinkResource.AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&sharedPrivateLinkResourceItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded() to populate field SharedPrivateLinkResources") + } + sharedPrivateLinkResourceList[sharedPrivateLinkResourceIndex] = sharedPrivateLinkResource + } + signalR.SharedPrivateLinkResources = sharedPrivateLinkResourceList + } else { + signalR.SharedPrivateLinkResources = nil + } + + // Sku + if source.Sku != nil { + var sku ResourceSku_STATUS + err := sku.AssignProperties_From_ResourceSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceSku_STATUS() to populate field Sku") + } + signalR.Sku = &sku + } else { + signalR.Sku = nil + } + + // SystemData + if source.SystemData != nil { + var systemDatum SystemData_STATUS + err := systemDatum.AssignProperties_From_SystemData_STATUS(source.SystemData) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SystemData_STATUS() to populate field SystemData") + } + signalR.SystemData = &systemDatum + } else { + signalR.SystemData = nil + } + + // Tags + signalR.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Tls + if source.Tls != nil { + var tl SignalRTlsSettings_STATUS + err := tl.AssignProperties_From_SignalRTlsSettings_STATUS(source.Tls) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalRTlsSettings_STATUS() to populate field Tls") + } + signalR.Tls = &tl + } else { + signalR.Tls = nil + } + + // Type + signalR.Type = genruntime.ClonePointerToString(source.Type) + + // Upstream + if source.Upstream != nil { + var upstream ServerlessUpstreamSettings_STATUS + err := upstream.AssignProperties_From_ServerlessUpstreamSettings_STATUS(source.Upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ServerlessUpstreamSettings_STATUS() to populate field Upstream") + } + signalR.Upstream = &upstream + } else { + signalR.Upstream = nil + } + + // Version + signalR.Version = genruntime.ClonePointerToString(source.Version) + + // No error + return nil +} + +// AssignProperties_To_SignalR_STATUS populates the provided destination SignalR_STATUS from our SignalR_STATUS +func (signalR *SignalR_STATUS) AssignProperties_To_SignalR_STATUS(destination *storage.SignalR_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(signalR.Conditions) + + // Cors + if signalR.Cors != nil { + var cor storage.SignalRCorsSettings_STATUS + err := signalR.Cors.AssignProperties_To_SignalRCorsSettings_STATUS(&cor) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRCorsSettings_STATUS() to populate field Cors") + } + destination.Cors = &cor + } else { + destination.Cors = nil + } + + // DisableAadAuth + if signalR.DisableAadAuth != nil { + disableAadAuth := *signalR.DisableAadAuth + destination.DisableAadAuth = &disableAadAuth + } else { + destination.DisableAadAuth = nil + } + + // DisableLocalAuth + if signalR.DisableLocalAuth != nil { + disableLocalAuth := *signalR.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // ExternalIP + destination.ExternalIP = genruntime.ClonePointerToString(signalR.ExternalIP) + + // Features + if signalR.Features != nil { + featureList := make([]storage.SignalRFeature_STATUS, len(signalR.Features)) + for featureIndex, featureItem := range signalR.Features { + // Shadow the loop variable to avoid aliasing + featureItem := featureItem + var feature storage.SignalRFeature_STATUS + err := featureItem.AssignProperties_To_SignalRFeature_STATUS(&feature) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRFeature_STATUS() to populate field Features") + } + featureList[featureIndex] = feature + } + destination.Features = featureList + } else { + destination.Features = nil + } + + // HostName + destination.HostName = genruntime.ClonePointerToString(signalR.HostName) + + // HostNamePrefix + destination.HostNamePrefix = genruntime.ClonePointerToString(signalR.HostNamePrefix) + + // Id + destination.Id = genruntime.ClonePointerToString(signalR.Id) + + // Identity + if signalR.Identity != nil { + var identity storage.ManagedIdentity_STATUS + err := signalR.Identity.AssignProperties_To_ManagedIdentity_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentity_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Kind + if signalR.Kind != nil { + kind := string(*signalR.Kind) + destination.Kind = &kind + } else { + destination.Kind = nil + } + + // LiveTraceConfiguration + if signalR.LiveTraceConfiguration != nil { + var liveTraceConfiguration storage.LiveTraceConfiguration_STATUS + err := signalR.LiveTraceConfiguration.AssignProperties_To_LiveTraceConfiguration_STATUS(&liveTraceConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_LiveTraceConfiguration_STATUS() to populate field LiveTraceConfiguration") + } + destination.LiveTraceConfiguration = &liveTraceConfiguration + } else { + destination.LiveTraceConfiguration = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(signalR.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(signalR.Name) + + // NetworkACLs + if signalR.NetworkACLs != nil { + var networkACL storage.SignalRNetworkACLs_STATUS + err := signalR.NetworkACLs.AssignProperties_To_SignalRNetworkACLs_STATUS(&networkACL) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRNetworkACLs_STATUS() to populate field NetworkACLs") + } + destination.NetworkACLs = &networkACL + } else { + destination.NetworkACLs = nil + } + + // PrivateEndpointConnections + if signalR.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, len(signalR.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range signalR.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ProvisioningState + if signalR.ProvisioningState != nil { + provisioningState := string(*signalR.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(signalR.PublicNetworkAccess) + + // PublicPort + destination.PublicPort = genruntime.ClonePointerToInt(signalR.PublicPort) + + // RegionEndpointEnabled + destination.RegionEndpointEnabled = genruntime.ClonePointerToString(signalR.RegionEndpointEnabled) + + // ResourceLogConfiguration + if signalR.ResourceLogConfiguration != nil { + var resourceLogConfiguration storage.ResourceLogConfiguration_STATUS + err := signalR.ResourceLogConfiguration.AssignProperties_To_ResourceLogConfiguration_STATUS(&resourceLogConfiguration) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogConfiguration_STATUS() to populate field ResourceLogConfiguration") + } + destination.ResourceLogConfiguration = &resourceLogConfiguration + } else { + destination.ResourceLogConfiguration = nil + } + + // ResourceStopped + destination.ResourceStopped = genruntime.ClonePointerToString(signalR.ResourceStopped) + + // ServerPort + destination.ServerPort = genruntime.ClonePointerToInt(signalR.ServerPort) + + // Serverless + if signalR.Serverless != nil { + var serverless storage.ServerlessSettings_STATUS + err := signalR.Serverless.AssignProperties_To_ServerlessSettings_STATUS(&serverless) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ServerlessSettings_STATUS() to populate field Serverless") + } + destination.Serverless = &serverless + } else { + destination.Serverless = nil + } + + // SharedPrivateLinkResources + if signalR.SharedPrivateLinkResources != nil { + sharedPrivateLinkResourceList := make([]storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, len(signalR.SharedPrivateLinkResources)) + for sharedPrivateLinkResourceIndex, sharedPrivateLinkResourceItem := range signalR.SharedPrivateLinkResources { + // Shadow the loop variable to avoid aliasing + sharedPrivateLinkResourceItem := sharedPrivateLinkResourceItem + var sharedPrivateLinkResource storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := sharedPrivateLinkResourceItem.AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&sharedPrivateLinkResource) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded() to populate field SharedPrivateLinkResources") + } + sharedPrivateLinkResourceList[sharedPrivateLinkResourceIndex] = sharedPrivateLinkResource + } + destination.SharedPrivateLinkResources = sharedPrivateLinkResourceList + } else { + destination.SharedPrivateLinkResources = nil + } + + // Sku + if signalR.Sku != nil { + var sku storage.ResourceSku_STATUS + err := signalR.Sku.AssignProperties_To_ResourceSku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceSku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SystemData + if signalR.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := signalR.SystemData.AssignProperties_To_SystemData_STATUS(&systemDatum) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SystemData_STATUS() to populate field SystemData") + } + destination.SystemData = &systemDatum + } else { + destination.SystemData = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(signalR.Tags) + + // Tls + if signalR.Tls != nil { + var tl storage.SignalRTlsSettings_STATUS + err := signalR.Tls.AssignProperties_To_SignalRTlsSettings_STATUS(&tl) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalRTlsSettings_STATUS() to populate field Tls") + } + destination.Tls = &tl + } else { + destination.Tls = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(signalR.Type) + + // Upstream + if signalR.Upstream != nil { + var upstream storage.ServerlessUpstreamSettings_STATUS + err := signalR.Upstream.AssignProperties_To_ServerlessUpstreamSettings_STATUS(&upstream) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ServerlessUpstreamSettings_STATUS() to populate field Upstream") + } + destination.Upstream = &upstream + } else { + destination.Upstream = nil + } + + // Version + destination.Version = genruntime.ClonePointerToString(signalR.Version) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Live trace configuration of a Microsoft.SignalRService resource. +type LiveTraceConfiguration struct { + // Categories: Gets or sets the list of category configurations. + Categories []LiveTraceCategory `json:"categories,omitempty"` + + // Enabled: Indicates whether or not enable live trace. + // When it's set to true, live trace client can connect to the service. + // Otherwise, live trace client can't connect to the service, so that you are unable to receive any log, no matter what you + // configure in "categories". + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` +} + +var _ genruntime.ARMTransformer = &LiveTraceConfiguration{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (configuration *LiveTraceConfiguration) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if configuration == nil { + return nil, nil + } + result := &arm.LiveTraceConfiguration{} + + // Set property "Categories": + for _, item := range configuration.Categories { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.Categories = append(result.Categories, *item_ARM.(*arm.LiveTraceCategory)) + } + + // Set property "Enabled": + if configuration.Enabled != nil { + enabled := *configuration.Enabled + result.Enabled = &enabled + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (configuration *LiveTraceConfiguration) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.LiveTraceConfiguration{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (configuration *LiveTraceConfiguration) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.LiveTraceConfiguration) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.LiveTraceConfiguration, got %T", armInput) + } + + // Set property "Categories": + for _, item := range typedInput.Categories { + var item1 LiveTraceCategory + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + configuration.Categories = append(configuration.Categories, item1) + } + + // Set property "Enabled": + if typedInput.Enabled != nil { + enabled := *typedInput.Enabled + configuration.Enabled = &enabled + } + + // No error + return nil +} + +// AssignProperties_From_LiveTraceConfiguration populates our LiveTraceConfiguration from the provided source LiveTraceConfiguration +func (configuration *LiveTraceConfiguration) AssignProperties_From_LiveTraceConfiguration(source *storage.LiveTraceConfiguration) error { + + // Categories + if source.Categories != nil { + categoryList := make([]LiveTraceCategory, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category LiveTraceCategory + err := category.AssignProperties_From_LiveTraceCategory(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_LiveTraceCategory() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // Enabled + configuration.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // No error + return nil +} + +// AssignProperties_To_LiveTraceConfiguration populates the provided destination LiveTraceConfiguration from our LiveTraceConfiguration +func (configuration *LiveTraceConfiguration) AssignProperties_To_LiveTraceConfiguration(destination *storage.LiveTraceConfiguration) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Categories + if configuration.Categories != nil { + categoryList := make([]storage.LiveTraceCategory, len(configuration.Categories)) + for categoryIndex, categoryItem := range configuration.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category storage.LiveTraceCategory + err := categoryItem.AssignProperties_To_LiveTraceCategory(&category) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_LiveTraceCategory() to populate field Categories") + } + categoryList[categoryIndex] = category + } + destination.Categories = categoryList + } else { + destination.Categories = nil + } + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(configuration.Enabled) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_LiveTraceConfiguration_STATUS populates our LiveTraceConfiguration from the provided source LiveTraceConfiguration_STATUS +func (configuration *LiveTraceConfiguration) Initialize_From_LiveTraceConfiguration_STATUS(source *LiveTraceConfiguration_STATUS) error { + + // Categories + if source.Categories != nil { + categoryList := make([]LiveTraceCategory, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category LiveTraceCategory + err := category.Initialize_From_LiveTraceCategory_STATUS(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_LiveTraceCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // Enabled + configuration.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // No error + return nil +} + +// Live trace configuration of a Microsoft.SignalRService resource. +type LiveTraceConfiguration_STATUS struct { + // Categories: Gets or sets the list of category configurations. + Categories []LiveTraceCategory_STATUS `json:"categories,omitempty"` + + // Enabled: Indicates whether or not enable live trace. + // When it's set to true, live trace client can connect to the service. + // Otherwise, live trace client can't connect to the service, so that you are unable to receive any log, no matter what you + // configure in "categories". + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` +} + +var _ genruntime.FromARMConverter = &LiveTraceConfiguration_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (configuration *LiveTraceConfiguration_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.LiveTraceConfiguration_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (configuration *LiveTraceConfiguration_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.LiveTraceConfiguration_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.LiveTraceConfiguration_STATUS, got %T", armInput) + } + + // Set property "Categories": + for _, item := range typedInput.Categories { + var item1 LiveTraceCategory_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + configuration.Categories = append(configuration.Categories, item1) + } + + // Set property "Enabled": + if typedInput.Enabled != nil { + enabled := *typedInput.Enabled + configuration.Enabled = &enabled + } + + // No error + return nil +} + +// AssignProperties_From_LiveTraceConfiguration_STATUS populates our LiveTraceConfiguration_STATUS from the provided source LiveTraceConfiguration_STATUS +func (configuration *LiveTraceConfiguration_STATUS) AssignProperties_From_LiveTraceConfiguration_STATUS(source *storage.LiveTraceConfiguration_STATUS) error { + + // Categories + if source.Categories != nil { + categoryList := make([]LiveTraceCategory_STATUS, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category LiveTraceCategory_STATUS + err := category.AssignProperties_From_LiveTraceCategory_STATUS(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_LiveTraceCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // Enabled + configuration.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // No error + return nil +} + +// AssignProperties_To_LiveTraceConfiguration_STATUS populates the provided destination LiveTraceConfiguration_STATUS from our LiveTraceConfiguration_STATUS +func (configuration *LiveTraceConfiguration_STATUS) AssignProperties_To_LiveTraceConfiguration_STATUS(destination *storage.LiveTraceConfiguration_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Categories + if configuration.Categories != nil { + categoryList := make([]storage.LiveTraceCategory_STATUS, len(configuration.Categories)) + for categoryIndex, categoryItem := range configuration.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category storage.LiveTraceCategory_STATUS + err := categoryItem.AssignProperties_To_LiveTraceCategory_STATUS(&category) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_LiveTraceCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + destination.Categories = categoryList + } else { + destination.Categories = nil + } + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(configuration.Enabled) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// A class represent managed identities used for request and response +type ManagedIdentity struct { + // Type: Represents the identity type: systemAssigned, userAssigned, None + Type *ManagedIdentityType `json:"type,omitempty"` + + // UserAssignedIdentities: Get or set the user assigned identities + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.ARMTransformer = &ManagedIdentity{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (identity *ManagedIdentity) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if identity == nil { + return nil, nil + } + result := &arm.ManagedIdentity{} + + // Set property "Type": + if identity.Type != nil { + var temp string + temp = string(*identity.Type) + typeVar := arm.ManagedIdentityType(temp) + result.Type = &typeVar + } + + // Set property "UserAssignedIdentities": + result.UserAssignedIdentities = make(map[string]arm.UserAssignedIdentityDetails, len(identity.UserAssignedIdentities)) + for _, ident := range identity.UserAssignedIdentities { + identARMID, err := resolved.ResolvedReferences.Lookup(ident.Reference) + if err != nil { + return nil, err + } + key := identARMID + result.UserAssignedIdentities[key] = arm.UserAssignedIdentityDetails{} + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (identity *ManagedIdentity) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ManagedIdentity{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *ManagedIdentity) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ManagedIdentity) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ManagedIdentity, got %T", armInput) + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := ManagedIdentityType(temp) + identity.Type = &typeVar + } + + // no assignment for property "UserAssignedIdentities" + + // No error + return nil +} + +// AssignProperties_From_ManagedIdentity populates our ManagedIdentity from the provided source ManagedIdentity +func (identity *ManagedIdentity) AssignProperties_From_ManagedIdentity(source *storage.ManagedIdentity) error { + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, managedIdentityType_Values) + identity.Type = &typeTemp + } else { + identity.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]UserAssignedIdentityDetails, len(source.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity UserAssignedIdentityDetails + err := userAssignedIdentity.AssignProperties_From_UserAssignedIdentityDetails(&userAssignedIdentityItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + identity.UserAssignedIdentities = userAssignedIdentityList + } else { + identity.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentity populates the provided destination ManagedIdentity from our ManagedIdentity +func (identity *ManagedIdentity) AssignProperties_To_ManagedIdentity(destination *storage.ManagedIdentity) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Type + if identity.Type != nil { + typeVar := string(*identity.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // UserAssignedIdentities + if identity.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]storage.UserAssignedIdentityDetails, len(identity.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range identity.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity storage.UserAssignedIdentityDetails + err := userAssignedIdentityItem.AssignProperties_To_UserAssignedIdentityDetails(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityList + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ManagedIdentity_STATUS populates our ManagedIdentity from the provided source ManagedIdentity_STATUS +func (identity *ManagedIdentity) Initialize_From_ManagedIdentity_STATUS(source *ManagedIdentity_STATUS) error { + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), managedIdentityType_Values) + identity.Type = &typeVar + } else { + identity.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]UserAssignedIdentityDetails, 0, len(source.UserAssignedIdentities)) + for userAssignedIdentitiesKey := range source.UserAssignedIdentities { + userAssignedIdentitiesRef := genruntime.CreateResourceReferenceFromARMID(userAssignedIdentitiesKey) + userAssignedIdentityList = append(userAssignedIdentityList, UserAssignedIdentityDetails{Reference: userAssignedIdentitiesRef}) + } + identity.UserAssignedIdentities = userAssignedIdentityList + } else { + identity.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// A class represent managed identities used for request and response +type ManagedIdentity_STATUS struct { + // PrincipalId: Get the principal id for the system assigned identity. + // Only be used in response. + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: Get the tenant id for the system assigned identity. + // Only be used in response + TenantId *string `json:"tenantId,omitempty"` + + // Type: Represents the identity type: systemAssigned, userAssigned, None + Type *ManagedIdentityType_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: Get or set the user assigned identities + UserAssignedIdentities map[string]UserAssignedIdentityProperty_STATUS `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.FromARMConverter = &ManagedIdentity_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (identity *ManagedIdentity_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ManagedIdentity_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *ManagedIdentity_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ManagedIdentity_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ManagedIdentity_STATUS, got %T", armInput) + } + + // Set property "PrincipalId": + if typedInput.PrincipalId != nil { + principalId := *typedInput.PrincipalId + identity.PrincipalId = &principalId + } + + // Set property "TenantId": + if typedInput.TenantId != nil { + tenantId := *typedInput.TenantId + identity.TenantId = &tenantId + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := ManagedIdentityType_STATUS(temp) + identity.Type = &typeVar + } + + // Set property "UserAssignedIdentities": + if typedInput.UserAssignedIdentities != nil { + identity.UserAssignedIdentities = make(map[string]UserAssignedIdentityProperty_STATUS, len(typedInput.UserAssignedIdentities)) + for key, value := range typedInput.UserAssignedIdentities { + var value1 UserAssignedIdentityProperty_STATUS + err := value1.PopulateFromARM(owner, value) + if err != nil { + return err + } + identity.UserAssignedIdentities[key] = value1 + } + } + + // No error + return nil +} + +// AssignProperties_From_ManagedIdentity_STATUS populates our ManagedIdentity_STATUS from the provided source ManagedIdentity_STATUS +func (identity *ManagedIdentity_STATUS) AssignProperties_From_ManagedIdentity_STATUS(source *storage.ManagedIdentity_STATUS) error { + + // PrincipalId + identity.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // TenantId + identity.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, managedIdentityType_STATUS_Values) + identity.Type = &typeTemp + } else { + identity.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]UserAssignedIdentityProperty_STATUS, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity UserAssignedIdentityProperty_STATUS + err := userAssignedIdentity.AssignProperties_From_UserAssignedIdentityProperty_STATUS(&userAssignedIdentityValue) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserAssignedIdentityProperty_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + identity.UserAssignedIdentities = userAssignedIdentityMap + } else { + identity.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentity_STATUS populates the provided destination ManagedIdentity_STATUS from our ManagedIdentity_STATUS +func (identity *ManagedIdentity_STATUS) AssignProperties_To_ManagedIdentity_STATUS(destination *storage.ManagedIdentity_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(identity.PrincipalId) + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(identity.TenantId) + + // Type + if identity.Type != nil { + typeVar := string(*identity.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // UserAssignedIdentities + if identity.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]storage.UserAssignedIdentityProperty_STATUS, len(identity.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range identity.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity storage.UserAssignedIdentityProperty_STATUS + err := userAssignedIdentityValue.AssignProperties_To_UserAssignedIdentityProperty_STATUS(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserAssignedIdentityProperty_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityMap + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// A private endpoint connection to an azure resource +type PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` +} + +var _ genruntime.FromARMConverter = &PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (embedded *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (embedded *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + embedded.Id = &id + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded populates our PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded from the provided source PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded +func (embedded *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(source *storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) error { + + // Id + embedded.Id = genruntime.ClonePointerToString(source.Id) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded populates the provided destination PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded from our PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded +func (embedded *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(destination *storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(embedded.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration struct { + // Categories: Gets or sets the list of category configurations. + Categories []ResourceLogCategory `json:"categories,omitempty"` +} + +var _ genruntime.ARMTransformer = &ResourceLogConfiguration{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (configuration *ResourceLogConfiguration) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if configuration == nil { + return nil, nil + } + result := &arm.ResourceLogConfiguration{} + + // Set property "Categories": + for _, item := range configuration.Categories { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.Categories = append(result.Categories, *item_ARM.(*arm.ResourceLogCategory)) + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (configuration *ResourceLogConfiguration) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceLogConfiguration{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (configuration *ResourceLogConfiguration) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceLogConfiguration) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceLogConfiguration, got %T", armInput) + } + + // Set property "Categories": + for _, item := range typedInput.Categories { + var item1 ResourceLogCategory + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + configuration.Categories = append(configuration.Categories, item1) + } + + // No error + return nil +} + +// AssignProperties_From_ResourceLogConfiguration populates our ResourceLogConfiguration from the provided source ResourceLogConfiguration +func (configuration *ResourceLogConfiguration) AssignProperties_From_ResourceLogConfiguration(source *storage.ResourceLogConfiguration) error { + + // Categories + if source.Categories != nil { + categoryList := make([]ResourceLogCategory, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category ResourceLogCategory + err := category.AssignProperties_From_ResourceLogCategory(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogCategory() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // No error + return nil +} + +// AssignProperties_To_ResourceLogConfiguration populates the provided destination ResourceLogConfiguration from our ResourceLogConfiguration +func (configuration *ResourceLogConfiguration) AssignProperties_To_ResourceLogConfiguration(destination *storage.ResourceLogConfiguration) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Categories + if configuration.Categories != nil { + categoryList := make([]storage.ResourceLogCategory, len(configuration.Categories)) + for categoryIndex, categoryItem := range configuration.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category storage.ResourceLogCategory + err := categoryItem.AssignProperties_To_ResourceLogCategory(&category) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogCategory() to populate field Categories") + } + categoryList[categoryIndex] = category + } + destination.Categories = categoryList + } else { + destination.Categories = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ResourceLogConfiguration_STATUS populates our ResourceLogConfiguration from the provided source ResourceLogConfiguration_STATUS +func (configuration *ResourceLogConfiguration) Initialize_From_ResourceLogConfiguration_STATUS(source *ResourceLogConfiguration_STATUS) error { + + // Categories + if source.Categories != nil { + categoryList := make([]ResourceLogCategory, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category ResourceLogCategory + err := category.Initialize_From_ResourceLogCategory_STATUS(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ResourceLogCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // No error + return nil +} + +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration_STATUS struct { + // Categories: Gets or sets the list of category configurations. + Categories []ResourceLogCategory_STATUS `json:"categories,omitempty"` +} + +var _ genruntime.FromARMConverter = &ResourceLogConfiguration_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (configuration *ResourceLogConfiguration_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceLogConfiguration_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (configuration *ResourceLogConfiguration_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceLogConfiguration_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceLogConfiguration_STATUS, got %T", armInput) + } + + // Set property "Categories": + for _, item := range typedInput.Categories { + var item1 ResourceLogCategory_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + configuration.Categories = append(configuration.Categories, item1) + } + + // No error + return nil +} + +// AssignProperties_From_ResourceLogConfiguration_STATUS populates our ResourceLogConfiguration_STATUS from the provided source ResourceLogConfiguration_STATUS +func (configuration *ResourceLogConfiguration_STATUS) AssignProperties_From_ResourceLogConfiguration_STATUS(source *storage.ResourceLogConfiguration_STATUS) error { + + // Categories + if source.Categories != nil { + categoryList := make([]ResourceLogCategory_STATUS, len(source.Categories)) + for categoryIndex, categoryItem := range source.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category ResourceLogCategory_STATUS + err := category.AssignProperties_From_ResourceLogCategory_STATUS(&categoryItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceLogCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + configuration.Categories = categoryList + } else { + configuration.Categories = nil + } + + // No error + return nil +} + +// AssignProperties_To_ResourceLogConfiguration_STATUS populates the provided destination ResourceLogConfiguration_STATUS from our ResourceLogConfiguration_STATUS +func (configuration *ResourceLogConfiguration_STATUS) AssignProperties_To_ResourceLogConfiguration_STATUS(destination *storage.ResourceLogConfiguration_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Categories + if configuration.Categories != nil { + categoryList := make([]storage.ResourceLogCategory_STATUS, len(configuration.Categories)) + for categoryIndex, categoryItem := range configuration.Categories { + // Shadow the loop variable to avoid aliasing + categoryItem := categoryItem + var category storage.ResourceLogCategory_STATUS + err := categoryItem.AssignProperties_To_ResourceLogCategory_STATUS(&category) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceLogCategory_STATUS() to populate field Categories") + } + categoryList[categoryIndex] = category + } + destination.Categories = categoryList + } else { + destination.Categories = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Serverless settings. +type ServerlessSettings struct { + // +kubebuilder:validation:Maximum=120 + // +kubebuilder:validation:Minimum=1 + // ConnectionTimeoutInSeconds: Gets or sets Client Connection Timeout. Optional to be set. + // Value in seconds. + // Default value is 30 seconds. + // Customer should set the timeout to a shorter period if messages are expected to be sent in shorter intervals, + // and want the client to disconnect more quickly after the last message is sent. + // You can set the timeout to a longer period if messages are expected to be sent in longer intervals, + // and they want to keep the same client connection alive during this session. + // The service considers the client disconnected if it hasn't received a message (including keep-alive) in this interval. + ConnectionTimeoutInSeconds *int `json:"connectionTimeoutInSeconds,omitempty"` +} + +var _ genruntime.ARMTransformer = &ServerlessSettings{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (settings *ServerlessSettings) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if settings == nil { + return nil, nil + } + result := &arm.ServerlessSettings{} + + // Set property "ConnectionTimeoutInSeconds": + if settings.ConnectionTimeoutInSeconds != nil { + connectionTimeoutInSeconds := *settings.ConnectionTimeoutInSeconds + result.ConnectionTimeoutInSeconds = &connectionTimeoutInSeconds + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *ServerlessSettings) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ServerlessSettings{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *ServerlessSettings) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ServerlessSettings) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ServerlessSettings, got %T", armInput) + } + + // Set property "ConnectionTimeoutInSeconds": + if typedInput.ConnectionTimeoutInSeconds != nil { + connectionTimeoutInSeconds := *typedInput.ConnectionTimeoutInSeconds + settings.ConnectionTimeoutInSeconds = &connectionTimeoutInSeconds + } + + // No error + return nil +} + +// AssignProperties_From_ServerlessSettings populates our ServerlessSettings from the provided source ServerlessSettings +func (settings *ServerlessSettings) AssignProperties_From_ServerlessSettings(source *storage.ServerlessSettings) error { + + // ConnectionTimeoutInSeconds + if source.ConnectionTimeoutInSeconds != nil { + connectionTimeoutInSecond := *source.ConnectionTimeoutInSeconds + settings.ConnectionTimeoutInSeconds = &connectionTimeoutInSecond + } else { + settings.ConnectionTimeoutInSeconds = nil + } + + // No error + return nil +} + +// AssignProperties_To_ServerlessSettings populates the provided destination ServerlessSettings from our ServerlessSettings +func (settings *ServerlessSettings) AssignProperties_To_ServerlessSettings(destination *storage.ServerlessSettings) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConnectionTimeoutInSeconds + if settings.ConnectionTimeoutInSeconds != nil { + connectionTimeoutInSecond := *settings.ConnectionTimeoutInSeconds + destination.ConnectionTimeoutInSeconds = &connectionTimeoutInSecond + } else { + destination.ConnectionTimeoutInSeconds = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ServerlessSettings_STATUS populates our ServerlessSettings from the provided source ServerlessSettings_STATUS +func (settings *ServerlessSettings) Initialize_From_ServerlessSettings_STATUS(source *ServerlessSettings_STATUS) error { + + // ConnectionTimeoutInSeconds + if source.ConnectionTimeoutInSeconds != nil { + connectionTimeoutInSecond := *source.ConnectionTimeoutInSeconds + settings.ConnectionTimeoutInSeconds = &connectionTimeoutInSecond + } else { + settings.ConnectionTimeoutInSeconds = nil + } + + // No error + return nil +} + +// Serverless settings. +type ServerlessSettings_STATUS struct { + // ConnectionTimeoutInSeconds: Gets or sets Client Connection Timeout. Optional to be set. + // Value in seconds. + // Default value is 30 seconds. + // Customer should set the timeout to a shorter period if messages are expected to be sent in shorter intervals, + // and want the client to disconnect more quickly after the last message is sent. + // You can set the timeout to a longer period if messages are expected to be sent in longer intervals, + // and they want to keep the same client connection alive during this session. + // The service considers the client disconnected if it hasn't received a message (including keep-alive) in this interval. + ConnectionTimeoutInSeconds *int `json:"connectionTimeoutInSeconds,omitempty"` +} + +var _ genruntime.FromARMConverter = &ServerlessSettings_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *ServerlessSettings_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ServerlessSettings_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *ServerlessSettings_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ServerlessSettings_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ServerlessSettings_STATUS, got %T", armInput) + } + + // Set property "ConnectionTimeoutInSeconds": + if typedInput.ConnectionTimeoutInSeconds != nil { + connectionTimeoutInSeconds := *typedInput.ConnectionTimeoutInSeconds + settings.ConnectionTimeoutInSeconds = &connectionTimeoutInSeconds + } + + // No error + return nil +} + +// AssignProperties_From_ServerlessSettings_STATUS populates our ServerlessSettings_STATUS from the provided source ServerlessSettings_STATUS +func (settings *ServerlessSettings_STATUS) AssignProperties_From_ServerlessSettings_STATUS(source *storage.ServerlessSettings_STATUS) error { + + // ConnectionTimeoutInSeconds + settings.ConnectionTimeoutInSeconds = genruntime.ClonePointerToInt(source.ConnectionTimeoutInSeconds) + + // No error + return nil +} + +// AssignProperties_To_ServerlessSettings_STATUS populates the provided destination ServerlessSettings_STATUS from our ServerlessSettings_STATUS +func (settings *ServerlessSettings_STATUS) AssignProperties_To_ServerlessSettings_STATUS(destination *storage.ServerlessSettings_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConnectionTimeoutInSeconds + destination.ConnectionTimeoutInSeconds = genruntime.ClonePointerToInt(settings.ConnectionTimeoutInSeconds) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings struct { + // Templates: Gets or sets the list of Upstream URL templates. Order matters, and the first matching template takes effects. + Templates []UpstreamTemplate `json:"templates,omitempty"` +} + +var _ genruntime.ARMTransformer = &ServerlessUpstreamSettings{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (settings *ServerlessUpstreamSettings) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if settings == nil { + return nil, nil + } + result := &arm.ServerlessUpstreamSettings{} + + // Set property "Templates": + for _, item := range settings.Templates { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.Templates = append(result.Templates, *item_ARM.(*arm.UpstreamTemplate)) + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *ServerlessUpstreamSettings) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ServerlessUpstreamSettings{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *ServerlessUpstreamSettings) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ServerlessUpstreamSettings) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ServerlessUpstreamSettings, got %T", armInput) + } + + // Set property "Templates": + for _, item := range typedInput.Templates { + var item1 UpstreamTemplate + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + settings.Templates = append(settings.Templates, item1) + } + + // No error + return nil +} + +// AssignProperties_From_ServerlessUpstreamSettings populates our ServerlessUpstreamSettings from the provided source ServerlessUpstreamSettings +func (settings *ServerlessUpstreamSettings) AssignProperties_From_ServerlessUpstreamSettings(source *storage.ServerlessUpstreamSettings) error { + + // Templates + if source.Templates != nil { + templateList := make([]UpstreamTemplate, len(source.Templates)) + for templateIndex, templateItem := range source.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template UpstreamTemplate + err := template.AssignProperties_From_UpstreamTemplate(&templateItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamTemplate() to populate field Templates") + } + templateList[templateIndex] = template + } + settings.Templates = templateList + } else { + settings.Templates = nil + } + + // No error + return nil +} + +// AssignProperties_To_ServerlessUpstreamSettings populates the provided destination ServerlessUpstreamSettings from our ServerlessUpstreamSettings +func (settings *ServerlessUpstreamSettings) AssignProperties_To_ServerlessUpstreamSettings(destination *storage.ServerlessUpstreamSettings) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Templates + if settings.Templates != nil { + templateList := make([]storage.UpstreamTemplate, len(settings.Templates)) + for templateIndex, templateItem := range settings.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template storage.UpstreamTemplate + err := templateItem.AssignProperties_To_UpstreamTemplate(&template) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamTemplate() to populate field Templates") + } + templateList[templateIndex] = template + } + destination.Templates = templateList + } else { + destination.Templates = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ServerlessUpstreamSettings_STATUS populates our ServerlessUpstreamSettings from the provided source ServerlessUpstreamSettings_STATUS +func (settings *ServerlessUpstreamSettings) Initialize_From_ServerlessUpstreamSettings_STATUS(source *ServerlessUpstreamSettings_STATUS) error { + + // Templates + if source.Templates != nil { + templateList := make([]UpstreamTemplate, len(source.Templates)) + for templateIndex, templateItem := range source.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template UpstreamTemplate + err := template.Initialize_From_UpstreamTemplate_STATUS(&templateItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_UpstreamTemplate_STATUS() to populate field Templates") + } + templateList[templateIndex] = template + } + settings.Templates = templateList + } else { + settings.Templates = nil + } + + // No error + return nil +} + +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings_STATUS struct { + // Templates: Gets or sets the list of Upstream URL templates. Order matters, and the first matching template takes effects. + Templates []UpstreamTemplate_STATUS `json:"templates,omitempty"` +} + +var _ genruntime.FromARMConverter = &ServerlessUpstreamSettings_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *ServerlessUpstreamSettings_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ServerlessUpstreamSettings_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *ServerlessUpstreamSettings_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ServerlessUpstreamSettings_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ServerlessUpstreamSettings_STATUS, got %T", armInput) + } + + // Set property "Templates": + for _, item := range typedInput.Templates { + var item1 UpstreamTemplate_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + settings.Templates = append(settings.Templates, item1) + } + + // No error + return nil +} + +// AssignProperties_From_ServerlessUpstreamSettings_STATUS populates our ServerlessUpstreamSettings_STATUS from the provided source ServerlessUpstreamSettings_STATUS +func (settings *ServerlessUpstreamSettings_STATUS) AssignProperties_From_ServerlessUpstreamSettings_STATUS(source *storage.ServerlessUpstreamSettings_STATUS) error { + + // Templates + if source.Templates != nil { + templateList := make([]UpstreamTemplate_STATUS, len(source.Templates)) + for templateIndex, templateItem := range source.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template UpstreamTemplate_STATUS + err := template.AssignProperties_From_UpstreamTemplate_STATUS(&templateItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamTemplate_STATUS() to populate field Templates") + } + templateList[templateIndex] = template + } + settings.Templates = templateList + } else { + settings.Templates = nil + } + + // No error + return nil +} + +// AssignProperties_To_ServerlessUpstreamSettings_STATUS populates the provided destination ServerlessUpstreamSettings_STATUS from our ServerlessUpstreamSettings_STATUS +func (settings *ServerlessUpstreamSettings_STATUS) AssignProperties_To_ServerlessUpstreamSettings_STATUS(destination *storage.ServerlessUpstreamSettings_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Templates + if settings.Templates != nil { + templateList := make([]storage.UpstreamTemplate_STATUS, len(settings.Templates)) + for templateIndex, templateItem := range settings.Templates { + // Shadow the loop variable to avoid aliasing + templateItem := templateItem + var template storage.UpstreamTemplate_STATUS + err := templateItem.AssignProperties_To_UpstreamTemplate_STATUS(&template) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamTemplate_STATUS() to populate field Templates") + } + templateList[templateIndex] = template + } + destination.Templates = templateList + } else { + destination.Templates = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Describes a Shared Private Link Resource +type SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded struct { + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` +} + +var _ genruntime.FromARMConverter = &SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (embedded *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (embedded *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + embedded.Id = &id + } + + // No error + return nil +} + +// AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded populates our SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded from the provided source SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded +func (embedded *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(source *storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) error { + + // Id + embedded.Id = genruntime.ClonePointerToString(source.Id) + + // No error + return nil +} + +// AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded populates the provided destination SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded from our SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded +func (embedded *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(destination *storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(embedded.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings struct { + // AllowedOrigins: Gets or sets the list of origins that should be allowed to make cross-origin calls (for example: + // http://example.com:12345). Use "*" to allow all. If omitted, allow all by default. + AllowedOrigins []string `json:"allowedOrigins,omitempty"` +} + +var _ genruntime.ARMTransformer = &SignalRCorsSettings{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (settings *SignalRCorsSettings) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if settings == nil { + return nil, nil + } + result := &arm.SignalRCorsSettings{} + + // Set property "AllowedOrigins": + for _, item := range settings.AllowedOrigins { + result.AllowedOrigins = append(result.AllowedOrigins, item) + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *SignalRCorsSettings) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRCorsSettings{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *SignalRCorsSettings) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRCorsSettings) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRCorsSettings, got %T", armInput) + } + + // Set property "AllowedOrigins": + for _, item := range typedInput.AllowedOrigins { + settings.AllowedOrigins = append(settings.AllowedOrigins, item) + } + + // No error + return nil +} + +// AssignProperties_From_SignalRCorsSettings populates our SignalRCorsSettings from the provided source SignalRCorsSettings +func (settings *SignalRCorsSettings) AssignProperties_From_SignalRCorsSettings(source *storage.SignalRCorsSettings) error { + + // AllowedOrigins + settings.AllowedOrigins = genruntime.CloneSliceOfString(source.AllowedOrigins) + + // No error + return nil +} + +// AssignProperties_To_SignalRCorsSettings populates the provided destination SignalRCorsSettings from our SignalRCorsSettings +func (settings *SignalRCorsSettings) AssignProperties_To_SignalRCorsSettings(destination *storage.SignalRCorsSettings) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AllowedOrigins + destination.AllowedOrigins = genruntime.CloneSliceOfString(settings.AllowedOrigins) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_SignalRCorsSettings_STATUS populates our SignalRCorsSettings from the provided source SignalRCorsSettings_STATUS +func (settings *SignalRCorsSettings) Initialize_From_SignalRCorsSettings_STATUS(source *SignalRCorsSettings_STATUS) error { + + // AllowedOrigins + settings.AllowedOrigins = genruntime.CloneSliceOfString(source.AllowedOrigins) + + // No error + return nil +} + +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings_STATUS struct { + // AllowedOrigins: Gets or sets the list of origins that should be allowed to make cross-origin calls (for example: + // http://example.com:12345). Use "*" to allow all. If omitted, allow all by default. + AllowedOrigins []string `json:"allowedOrigins,omitempty"` +} + +var _ genruntime.FromARMConverter = &SignalRCorsSettings_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *SignalRCorsSettings_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRCorsSettings_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *SignalRCorsSettings_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRCorsSettings_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRCorsSettings_STATUS, got %T", armInput) + } + + // Set property "AllowedOrigins": + for _, item := range typedInput.AllowedOrigins { + settings.AllowedOrigins = append(settings.AllowedOrigins, item) + } + + // No error + return nil +} + +// AssignProperties_From_SignalRCorsSettings_STATUS populates our SignalRCorsSettings_STATUS from the provided source SignalRCorsSettings_STATUS +func (settings *SignalRCorsSettings_STATUS) AssignProperties_From_SignalRCorsSettings_STATUS(source *storage.SignalRCorsSettings_STATUS) error { + + // AllowedOrigins + settings.AllowedOrigins = genruntime.CloneSliceOfString(source.AllowedOrigins) + + // No error + return nil +} + +// AssignProperties_To_SignalRCorsSettings_STATUS populates the provided destination SignalRCorsSettings_STATUS from our SignalRCorsSettings_STATUS +func (settings *SignalRCorsSettings_STATUS) AssignProperties_To_SignalRCorsSettings_STATUS(destination *storage.SignalRCorsSettings_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AllowedOrigins + destination.AllowedOrigins = genruntime.CloneSliceOfString(settings.AllowedOrigins) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature struct { + // +kubebuilder:validation:Required + // Flag: FeatureFlags is the supported features of Azure SignalR service. + // - ServiceMode: Flag for backend server for SignalR service. Values allowed: "Default": have your own backend server; + // "Serverless": your application doesn't have a backend server; "Classic": for backward compatibility. Support both + // Default and Serverless mode but not recommended; "PredefinedOnly": for future use. + // - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will give you live + // traces in real time, it will be helpful when you developing your own Azure SignalR based web application or + // self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. + // Values allowed: "true"/"false", to enable/disable live trace feature. + Flag *FeatureFlags `json:"flag,omitempty"` + + // Properties: Optional properties related to this feature. + Properties map[string]string `json:"properties,omitempty"` + + // +kubebuilder:validation:Required + // +kubebuilder:validation:MaxLength=128 + // +kubebuilder:validation:MinLength=1 + // Value: Value of the feature flag. See Azure SignalR service document https://docs.microsoft.com/azure/azure-signalr/ for + // allowed values. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ARMTransformer = &SignalRFeature{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (feature *SignalRFeature) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if feature == nil { + return nil, nil + } + result := &arm.SignalRFeature{} + + // Set property "Flag": + if feature.Flag != nil { + var temp string + temp = string(*feature.Flag) + flag := arm.FeatureFlags(temp) + result.Flag = &flag + } + + // Set property "Properties": + if feature.Properties != nil { + result.Properties = make(map[string]string, len(feature.Properties)) + for key, value := range feature.Properties { + result.Properties[key] = value + } + } + + // Set property "Value": + if feature.Value != nil { + value := *feature.Value + result.Value = &value + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (feature *SignalRFeature) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRFeature{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (feature *SignalRFeature) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRFeature) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRFeature, got %T", armInput) + } + + // Set property "Flag": + if typedInput.Flag != nil { + var temp string + temp = string(*typedInput.Flag) + flag := FeatureFlags(temp) + feature.Flag = &flag + } + + // Set property "Properties": + if typedInput.Properties != nil { + feature.Properties = make(map[string]string, len(typedInput.Properties)) + for key, value := range typedInput.Properties { + feature.Properties[key] = value + } + } + + // Set property "Value": + if typedInput.Value != nil { + value := *typedInput.Value + feature.Value = &value + } + + // No error + return nil +} + +// AssignProperties_From_SignalRFeature populates our SignalRFeature from the provided source SignalRFeature +func (feature *SignalRFeature) AssignProperties_From_SignalRFeature(source *storage.SignalRFeature) error { + + // Flag + if source.Flag != nil { + flag := *source.Flag + flagTemp := genruntime.ToEnum(flag, featureFlags_Values) + feature.Flag = &flagTemp + } else { + feature.Flag = nil + } + + // Properties + feature.Properties = genruntime.CloneMapOfStringToString(source.Properties) + + // Value + if source.Value != nil { + value := *source.Value + feature.Value = &value + } else { + feature.Value = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalRFeature populates the provided destination SignalRFeature from our SignalRFeature +func (feature *SignalRFeature) AssignProperties_To_SignalRFeature(destination *storage.SignalRFeature) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Flag + if feature.Flag != nil { + flag := string(*feature.Flag) + destination.Flag = &flag + } else { + destination.Flag = nil + } + + // Properties + destination.Properties = genruntime.CloneMapOfStringToString(feature.Properties) + + // Value + if feature.Value != nil { + value := *feature.Value + destination.Value = &value + } else { + destination.Value = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_SignalRFeature_STATUS populates our SignalRFeature from the provided source SignalRFeature_STATUS +func (feature *SignalRFeature) Initialize_From_SignalRFeature_STATUS(source *SignalRFeature_STATUS) error { + + // Flag + if source.Flag != nil { + flag := genruntime.ToEnum(string(*source.Flag), featureFlags_Values) + feature.Flag = &flag + } else { + feature.Flag = nil + } + + // Properties + feature.Properties = genruntime.CloneMapOfStringToString(source.Properties) + + // Value + if source.Value != nil { + value := *source.Value + feature.Value = &value + } else { + feature.Value = nil + } + + // No error + return nil +} + +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature_STATUS struct { + // Flag: FeatureFlags is the supported features of Azure SignalR service. + // - ServiceMode: Flag for backend server for SignalR service. Values allowed: "Default": have your own backend server; + // "Serverless": your application doesn't have a backend server; "Classic": for backward compatibility. Support both + // Default and Serverless mode but not recommended; "PredefinedOnly": for future use. + // - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category respectively. + // - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will give you live + // traces in real time, it will be helpful when you developing your own Azure SignalR based web application or + // self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. + // Values allowed: "true"/"false", to enable/disable live trace feature. + Flag *FeatureFlags_STATUS `json:"flag,omitempty"` + + // Properties: Optional properties related to this feature. + Properties map[string]string `json:"properties,omitempty"` + + // Value: Value of the feature flag. See Azure SignalR service document https://docs.microsoft.com/azure/azure-signalr/ for + // allowed values. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.FromARMConverter = &SignalRFeature_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (feature *SignalRFeature_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRFeature_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (feature *SignalRFeature_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRFeature_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRFeature_STATUS, got %T", armInput) + } + + // Set property "Flag": + if typedInput.Flag != nil { + var temp string + temp = string(*typedInput.Flag) + flag := FeatureFlags_STATUS(temp) + feature.Flag = &flag + } + + // Set property "Properties": + if typedInput.Properties != nil { + feature.Properties = make(map[string]string, len(typedInput.Properties)) + for key, value := range typedInput.Properties { + feature.Properties[key] = value + } + } + + // Set property "Value": + if typedInput.Value != nil { + value := *typedInput.Value + feature.Value = &value + } + + // No error + return nil +} + +// AssignProperties_From_SignalRFeature_STATUS populates our SignalRFeature_STATUS from the provided source SignalRFeature_STATUS +func (feature *SignalRFeature_STATUS) AssignProperties_From_SignalRFeature_STATUS(source *storage.SignalRFeature_STATUS) error { + + // Flag + if source.Flag != nil { + flag := *source.Flag + flagTemp := genruntime.ToEnum(flag, featureFlags_STATUS_Values) + feature.Flag = &flagTemp + } else { + feature.Flag = nil + } + + // Properties + feature.Properties = genruntime.CloneMapOfStringToString(source.Properties) + + // Value + feature.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_SignalRFeature_STATUS populates the provided destination SignalRFeature_STATUS from our SignalRFeature_STATUS +func (feature *SignalRFeature_STATUS) AssignProperties_To_SignalRFeature_STATUS(destination *storage.SignalRFeature_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Flag + if feature.Flag != nil { + flag := string(*feature.Flag) + destination.Flag = &flag + } else { + destination.Flag = nil + } + + // Properties + destination.Properties = genruntime.CloneMapOfStringToString(feature.Properties) + + // Value + destination.Value = genruntime.ClonePointerToString(feature.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Network ACLs for the resource +type SignalRNetworkACLs struct { + // DefaultAction: Azure Networking ACL Action. + DefaultAction *ACLAction `json:"defaultAction,omitempty"` + + // +kubebuilder:validation:MaxItems=30 + // IpRules: IP rules for filtering public traffic + IpRules []IPRule `json:"ipRules,omitempty"` + + // PrivateEndpoints: ACLs for requests from private endpoints + PrivateEndpoints []PrivateEndpointACL `json:"privateEndpoints,omitempty"` + + // PublicNetwork: Network ACL + PublicNetwork *NetworkACL `json:"publicNetwork,omitempty"` +} + +var _ genruntime.ARMTransformer = &SignalRNetworkACLs{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (acLs *SignalRNetworkACLs) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if acLs == nil { + return nil, nil + } + result := &arm.SignalRNetworkACLs{} + + // Set property "DefaultAction": + if acLs.DefaultAction != nil { + var temp string + temp = string(*acLs.DefaultAction) + defaultAction := arm.ACLAction(temp) + result.DefaultAction = &defaultAction + } + + // Set property "IpRules": + for _, item := range acLs.IpRules { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.IpRules = append(result.IpRules, *item_ARM.(*arm.IPRule)) + } + + // Set property "PrivateEndpoints": + for _, item := range acLs.PrivateEndpoints { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.PrivateEndpoints = append(result.PrivateEndpoints, *item_ARM.(*arm.PrivateEndpointACL)) + } + + // Set property "PublicNetwork": + if acLs.PublicNetwork != nil { + publicNetwork_ARM, err := (*acLs.PublicNetwork).ConvertToARM(resolved) + if err != nil { + return nil, err + } + publicNetwork := *publicNetwork_ARM.(*arm.NetworkACL) + result.PublicNetwork = &publicNetwork + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (acLs *SignalRNetworkACLs) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRNetworkACLs{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (acLs *SignalRNetworkACLs) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRNetworkACLs) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRNetworkACLs, got %T", armInput) + } + + // Set property "DefaultAction": + if typedInput.DefaultAction != nil { + var temp string + temp = string(*typedInput.DefaultAction) + defaultAction := ACLAction(temp) + acLs.DefaultAction = &defaultAction + } + + // Set property "IpRules": + for _, item := range typedInput.IpRules { + var item1 IPRule + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + acLs.IpRules = append(acLs.IpRules, item1) + } + + // Set property "PrivateEndpoints": + for _, item := range typedInput.PrivateEndpoints { + var item1 PrivateEndpointACL + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + acLs.PrivateEndpoints = append(acLs.PrivateEndpoints, item1) + } + + // Set property "PublicNetwork": + if typedInput.PublicNetwork != nil { + var publicNetwork1 NetworkACL + err := publicNetwork1.PopulateFromARM(owner, *typedInput.PublicNetwork) + if err != nil { + return err + } + publicNetwork := publicNetwork1 + acLs.PublicNetwork = &publicNetwork + } + + // No error + return nil +} + +// AssignProperties_From_SignalRNetworkACLs populates our SignalRNetworkACLs from the provided source SignalRNetworkACLs +func (acLs *SignalRNetworkACLs) AssignProperties_From_SignalRNetworkACLs(source *storage.SignalRNetworkACLs) error { + + // DefaultAction + if source.DefaultAction != nil { + defaultAction := *source.DefaultAction + defaultActionTemp := genruntime.ToEnum(defaultAction, aCLAction_Values) + acLs.DefaultAction = &defaultActionTemp + } else { + acLs.DefaultAction = nil + } + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule + err := ipRule.AssignProperties_From_IPRule(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IPRule() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + acLs.IpRules = ipRuleList + } else { + acLs.IpRules = nil + } + + // PrivateEndpoints + if source.PrivateEndpoints != nil { + privateEndpointList := make([]PrivateEndpointACL, len(source.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range source.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint PrivateEndpointACL + err := privateEndpoint.AssignProperties_From_PrivateEndpointACL(&privateEndpointItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointACL() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + acLs.PrivateEndpoints = privateEndpointList + } else { + acLs.PrivateEndpoints = nil + } + + // PublicNetwork + if source.PublicNetwork != nil { + var publicNetwork NetworkACL + err := publicNetwork.AssignProperties_From_NetworkACL(source.PublicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkACL() to populate field PublicNetwork") + } + acLs.PublicNetwork = &publicNetwork + } else { + acLs.PublicNetwork = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalRNetworkACLs populates the provided destination SignalRNetworkACLs from our SignalRNetworkACLs +func (acLs *SignalRNetworkACLs) AssignProperties_To_SignalRNetworkACLs(destination *storage.SignalRNetworkACLs) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DefaultAction + if acLs.DefaultAction != nil { + defaultAction := string(*acLs.DefaultAction) + destination.DefaultAction = &defaultAction + } else { + destination.DefaultAction = nil + } + + // IpRules + if acLs.IpRules != nil { + ipRuleList := make([]storage.IPRule, len(acLs.IpRules)) + for ipRuleIndex, ipRuleItem := range acLs.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule storage.IPRule + err := ipRuleItem.AssignProperties_To_IPRule(&ipRule) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IPRule() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + destination.IpRules = ipRuleList + } else { + destination.IpRules = nil + } + + // PrivateEndpoints + if acLs.PrivateEndpoints != nil { + privateEndpointList := make([]storage.PrivateEndpointACL, len(acLs.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range acLs.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint storage.PrivateEndpointACL + err := privateEndpointItem.AssignProperties_To_PrivateEndpointACL(&privateEndpoint) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointACL() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + destination.PrivateEndpoints = privateEndpointList + } else { + destination.PrivateEndpoints = nil + } + + // PublicNetwork + if acLs.PublicNetwork != nil { + var publicNetwork storage.NetworkACL + err := acLs.PublicNetwork.AssignProperties_To_NetworkACL(&publicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkACL() to populate field PublicNetwork") + } + destination.PublicNetwork = &publicNetwork + } else { + destination.PublicNetwork = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_SignalRNetworkACLs_STATUS populates our SignalRNetworkACLs from the provided source SignalRNetworkACLs_STATUS +func (acLs *SignalRNetworkACLs) Initialize_From_SignalRNetworkACLs_STATUS(source *SignalRNetworkACLs_STATUS) error { + + // DefaultAction + if source.DefaultAction != nil { + defaultAction := genruntime.ToEnum(string(*source.DefaultAction), aCLAction_Values) + acLs.DefaultAction = &defaultAction + } else { + acLs.DefaultAction = nil + } + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule + err := ipRule.Initialize_From_IPRule_STATUS(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + acLs.IpRules = ipRuleList + } else { + acLs.IpRules = nil + } + + // PrivateEndpoints + if source.PrivateEndpoints != nil { + privateEndpointList := make([]PrivateEndpointACL, len(source.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range source.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint PrivateEndpointACL + err := privateEndpoint.Initialize_From_PrivateEndpointACL_STATUS(&privateEndpointItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_PrivateEndpointACL_STATUS() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + acLs.PrivateEndpoints = privateEndpointList + } else { + acLs.PrivateEndpoints = nil + } + + // PublicNetwork + if source.PublicNetwork != nil { + var publicNetwork NetworkACL + err := publicNetwork.Initialize_From_NetworkACL_STATUS(source.PublicNetwork) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_NetworkACL_STATUS() to populate field PublicNetwork") + } + acLs.PublicNetwork = &publicNetwork + } else { + acLs.PublicNetwork = nil + } + + // No error + return nil +} + +// Network ACLs for the resource +type SignalRNetworkACLs_STATUS struct { + // DefaultAction: Azure Networking ACL Action. + DefaultAction *ACLAction_STATUS `json:"defaultAction,omitempty"` + + // IpRules: IP rules for filtering public traffic + IpRules []IPRule_STATUS `json:"ipRules,omitempty"` + + // PrivateEndpoints: ACLs for requests from private endpoints + PrivateEndpoints []PrivateEndpointACL_STATUS `json:"privateEndpoints,omitempty"` + + // PublicNetwork: Network ACL + PublicNetwork *NetworkACL_STATUS `json:"publicNetwork,omitempty"` +} + +var _ genruntime.FromARMConverter = &SignalRNetworkACLs_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (acLs *SignalRNetworkACLs_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRNetworkACLs_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (acLs *SignalRNetworkACLs_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRNetworkACLs_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRNetworkACLs_STATUS, got %T", armInput) + } + + // Set property "DefaultAction": + if typedInput.DefaultAction != nil { + var temp string + temp = string(*typedInput.DefaultAction) + defaultAction := ACLAction_STATUS(temp) + acLs.DefaultAction = &defaultAction + } + + // Set property "IpRules": + for _, item := range typedInput.IpRules { + var item1 IPRule_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + acLs.IpRules = append(acLs.IpRules, item1) + } + + // Set property "PrivateEndpoints": + for _, item := range typedInput.PrivateEndpoints { + var item1 PrivateEndpointACL_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + acLs.PrivateEndpoints = append(acLs.PrivateEndpoints, item1) + } + + // Set property "PublicNetwork": + if typedInput.PublicNetwork != nil { + var publicNetwork1 NetworkACL_STATUS + err := publicNetwork1.PopulateFromARM(owner, *typedInput.PublicNetwork) + if err != nil { + return err + } + publicNetwork := publicNetwork1 + acLs.PublicNetwork = &publicNetwork + } + + // No error + return nil +} + +// AssignProperties_From_SignalRNetworkACLs_STATUS populates our SignalRNetworkACLs_STATUS from the provided source SignalRNetworkACLs_STATUS +func (acLs *SignalRNetworkACLs_STATUS) AssignProperties_From_SignalRNetworkACLs_STATUS(source *storage.SignalRNetworkACLs_STATUS) error { + + // DefaultAction + if source.DefaultAction != nil { + defaultAction := *source.DefaultAction + defaultActionTemp := genruntime.ToEnum(defaultAction, aCLAction_STATUS_Values) + acLs.DefaultAction = &defaultActionTemp + } else { + acLs.DefaultAction = nil + } + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule_STATUS, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule_STATUS + err := ipRule.AssignProperties_From_IPRule_STATUS(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + acLs.IpRules = ipRuleList + } else { + acLs.IpRules = nil + } + + // PrivateEndpoints + if source.PrivateEndpoints != nil { + privateEndpointList := make([]PrivateEndpointACL_STATUS, len(source.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range source.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint PrivateEndpointACL_STATUS + err := privateEndpoint.AssignProperties_From_PrivateEndpointACL_STATUS(&privateEndpointItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointACL_STATUS() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + acLs.PrivateEndpoints = privateEndpointList + } else { + acLs.PrivateEndpoints = nil + } + + // PublicNetwork + if source.PublicNetwork != nil { + var publicNetwork NetworkACL_STATUS + err := publicNetwork.AssignProperties_From_NetworkACL_STATUS(source.PublicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkACL_STATUS() to populate field PublicNetwork") + } + acLs.PublicNetwork = &publicNetwork + } else { + acLs.PublicNetwork = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalRNetworkACLs_STATUS populates the provided destination SignalRNetworkACLs_STATUS from our SignalRNetworkACLs_STATUS +func (acLs *SignalRNetworkACLs_STATUS) AssignProperties_To_SignalRNetworkACLs_STATUS(destination *storage.SignalRNetworkACLs_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DefaultAction + if acLs.DefaultAction != nil { + defaultAction := string(*acLs.DefaultAction) + destination.DefaultAction = &defaultAction + } else { + destination.DefaultAction = nil + } + + // IpRules + if acLs.IpRules != nil { + ipRuleList := make([]storage.IPRule_STATUS, len(acLs.IpRules)) + for ipRuleIndex, ipRuleItem := range acLs.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule storage.IPRule_STATUS + err := ipRuleItem.AssignProperties_To_IPRule_STATUS(&ipRule) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + destination.IpRules = ipRuleList + } else { + destination.IpRules = nil + } + + // PrivateEndpoints + if acLs.PrivateEndpoints != nil { + privateEndpointList := make([]storage.PrivateEndpointACL_STATUS, len(acLs.PrivateEndpoints)) + for privateEndpointIndex, privateEndpointItem := range acLs.PrivateEndpoints { + // Shadow the loop variable to avoid aliasing + privateEndpointItem := privateEndpointItem + var privateEndpoint storage.PrivateEndpointACL_STATUS + err := privateEndpointItem.AssignProperties_To_PrivateEndpointACL_STATUS(&privateEndpoint) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointACL_STATUS() to populate field PrivateEndpoints") + } + privateEndpointList[privateEndpointIndex] = privateEndpoint + } + destination.PrivateEndpoints = privateEndpointList + } else { + destination.PrivateEndpoints = nil + } + + // PublicNetwork + if acLs.PublicNetwork != nil { + var publicNetwork storage.NetworkACL_STATUS + err := acLs.PublicNetwork.AssignProperties_To_NetworkACL_STATUS(&publicNetwork) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkACL_STATUS() to populate field PublicNetwork") + } + destination.PublicNetwork = &publicNetwork + } else { + destination.PublicNetwork = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type SignalROperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions). + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` + + // Secrets: configures where to place Azure generated secrets. + Secrets *SignalROperatorSecrets `json:"secrets,omitempty"` +} + +// AssignProperties_From_SignalROperatorSpec populates our SignalROperatorSpec from the provided source SignalROperatorSpec +func (operator *SignalROperatorSpec) AssignProperties_From_SignalROperatorSpec(source *storage.SignalROperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // Secrets + if source.Secrets != nil { + var secret SignalROperatorSecrets + err := secret.AssignProperties_From_SignalROperatorSecrets(source.Secrets) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SignalROperatorSecrets() to populate field Secrets") + } + operator.Secrets = &secret + } else { + operator.Secrets = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalROperatorSpec populates the provided destination SignalROperatorSpec from our SignalROperatorSpec +func (operator *SignalROperatorSpec) AssignProperties_To_SignalROperatorSpec(destination *storage.SignalROperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Secrets + if operator.Secrets != nil { + var secret storage.SignalROperatorSecrets + err := operator.Secrets.AssignProperties_To_SignalROperatorSecrets(&secret) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SignalROperatorSecrets() to populate field Secrets") + } + destination.Secrets = &secret + } else { + destination.Secrets = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The kind of the service +// +kubebuilder:validation:Enum={"RawWebSockets","SignalR"} +type SignalrServiceKind string + +const ( + SignalrServiceKind_RawWebSockets = SignalrServiceKind("RawWebSockets") + SignalrServiceKind_SignalR = SignalrServiceKind("SignalR") +) + +// Mapping from string to SignalrServiceKind +var signalrServiceKind_Values = map[string]SignalrServiceKind{ + "rawwebsockets": SignalrServiceKind_RawWebSockets, + "signalr": SignalrServiceKind_SignalR, +} + +// The kind of the service +type SignalrServiceKind_STATUS string + +const ( + SignalrServiceKind_STATUS_RawWebSockets = SignalrServiceKind_STATUS("RawWebSockets") + SignalrServiceKind_STATUS_SignalR = SignalrServiceKind_STATUS("SignalR") +) + +// Mapping from string to SignalrServiceKind_STATUS +var signalrServiceKind_STATUS_Values = map[string]SignalrServiceKind_STATUS{ + "rawwebsockets": SignalrServiceKind_STATUS_RawWebSockets, + "signalr": SignalrServiceKind_STATUS_SignalR, +} + +// TLS settings for the resource +type SignalRTlsSettings struct { + // ClientCertEnabled: Request client certificate during TLS handshake if enabled. Not supported for free tier. Any input + // will be ignored for free tier. + ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"` +} + +var _ genruntime.ARMTransformer = &SignalRTlsSettings{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (settings *SignalRTlsSettings) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if settings == nil { + return nil, nil + } + result := &arm.SignalRTlsSettings{} + + // Set property "ClientCertEnabled": + if settings.ClientCertEnabled != nil { + clientCertEnabled := *settings.ClientCertEnabled + result.ClientCertEnabled = &clientCertEnabled + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *SignalRTlsSettings) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRTlsSettings{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *SignalRTlsSettings) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRTlsSettings) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRTlsSettings, got %T", armInput) + } + + // Set property "ClientCertEnabled": + if typedInput.ClientCertEnabled != nil { + clientCertEnabled := *typedInput.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } + + // No error + return nil +} + +// AssignProperties_From_SignalRTlsSettings populates our SignalRTlsSettings from the provided source SignalRTlsSettings +func (settings *SignalRTlsSettings) AssignProperties_From_SignalRTlsSettings(source *storage.SignalRTlsSettings) error { + + // ClientCertEnabled + if source.ClientCertEnabled != nil { + clientCertEnabled := *source.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } else { + settings.ClientCertEnabled = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalRTlsSettings populates the provided destination SignalRTlsSettings from our SignalRTlsSettings +func (settings *SignalRTlsSettings) AssignProperties_To_SignalRTlsSettings(destination *storage.SignalRTlsSettings) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ClientCertEnabled + if settings.ClientCertEnabled != nil { + clientCertEnabled := *settings.ClientCertEnabled + destination.ClientCertEnabled = &clientCertEnabled + } else { + destination.ClientCertEnabled = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_SignalRTlsSettings_STATUS populates our SignalRTlsSettings from the provided source SignalRTlsSettings_STATUS +func (settings *SignalRTlsSettings) Initialize_From_SignalRTlsSettings_STATUS(source *SignalRTlsSettings_STATUS) error { + + // ClientCertEnabled + if source.ClientCertEnabled != nil { + clientCertEnabled := *source.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } else { + settings.ClientCertEnabled = nil + } + + // No error + return nil +} + +// TLS settings for the resource +type SignalRTlsSettings_STATUS struct { + // ClientCertEnabled: Request client certificate during TLS handshake if enabled. Not supported for free tier. Any input + // will be ignored for free tier. + ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"` +} + +var _ genruntime.FromARMConverter = &SignalRTlsSettings_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *SignalRTlsSettings_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SignalRTlsSettings_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *SignalRTlsSettings_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SignalRTlsSettings_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SignalRTlsSettings_STATUS, got %T", armInput) + } + + // Set property "ClientCertEnabled": + if typedInput.ClientCertEnabled != nil { + clientCertEnabled := *typedInput.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } + + // No error + return nil +} + +// AssignProperties_From_SignalRTlsSettings_STATUS populates our SignalRTlsSettings_STATUS from the provided source SignalRTlsSettings_STATUS +func (settings *SignalRTlsSettings_STATUS) AssignProperties_From_SignalRTlsSettings_STATUS(source *storage.SignalRTlsSettings_STATUS) error { + + // ClientCertEnabled + if source.ClientCertEnabled != nil { + clientCertEnabled := *source.ClientCertEnabled + settings.ClientCertEnabled = &clientCertEnabled + } else { + settings.ClientCertEnabled = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalRTlsSettings_STATUS populates the provided destination SignalRTlsSettings_STATUS from our SignalRTlsSettings_STATUS +func (settings *SignalRTlsSettings_STATUS) AssignProperties_To_SignalRTlsSettings_STATUS(destination *storage.SignalRTlsSettings_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ClientCertEnabled + if settings.ClientCertEnabled != nil { + clientCertEnabled := *settings.ClientCertEnabled + destination.ClientCertEnabled = &clientCertEnabled + } else { + destination.ClientCertEnabled = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Azure Networking ACL Action. +// +kubebuilder:validation:Enum={"Allow","Deny"} +type ACLAction string + +const ( + ACLAction_Allow = ACLAction("Allow") + ACLAction_Deny = ACLAction("Deny") +) + +// Mapping from string to ACLAction +var aCLAction_Values = map[string]ACLAction{ + "allow": ACLAction_Allow, + "deny": ACLAction_Deny, +} + +// Azure Networking ACL Action. +type ACLAction_STATUS string + +const ( + ACLAction_STATUS_Allow = ACLAction_STATUS("Allow") + ACLAction_STATUS_Deny = ACLAction_STATUS("Deny") +) + +// Mapping from string to ACLAction_STATUS +var aCLAction_STATUS_Values = map[string]ACLAction_STATUS{ + "allow": ACLAction_STATUS_Allow, + "deny": ACLAction_STATUS_Deny, +} + +// FeatureFlags is the supported features of Azure SignalR service. +// - ServiceMode: Flag for backend server for SignalR +// service. Values allowed: "Default": have your own backend server; "Serverless": your application doesn't have a backend +// server; "Classic": for backward compatibility. Support both Default and Serverless mode but not recommended; +// "PredefinedOnly": for future use. +// - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log +// category respectively. +// - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category +// respectively. +// - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will +// give you live traces in real time, it will be helpful when you developing your own Azure SignalR based web application +// or self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. +// Values allowed: "true"/"false", to enable/disable live trace feature. +// +kubebuilder:validation:Enum={"EnableConnectivityLogs","EnableLiveTrace","EnableMessagingLogs","ServiceMode"} +type FeatureFlags string + +const ( + FeatureFlags_EnableConnectivityLogs = FeatureFlags("EnableConnectivityLogs") + FeatureFlags_EnableLiveTrace = FeatureFlags("EnableLiveTrace") + FeatureFlags_EnableMessagingLogs = FeatureFlags("EnableMessagingLogs") + FeatureFlags_ServiceMode = FeatureFlags("ServiceMode") +) + +// Mapping from string to FeatureFlags +var featureFlags_Values = map[string]FeatureFlags{ + "enableconnectivitylogs": FeatureFlags_EnableConnectivityLogs, + "enablelivetrace": FeatureFlags_EnableLiveTrace, + "enablemessaginglogs": FeatureFlags_EnableMessagingLogs, + "servicemode": FeatureFlags_ServiceMode, +} + +// FeatureFlags is the supported features of Azure SignalR service. +// - ServiceMode: Flag for backend server for SignalR +// service. Values allowed: "Default": have your own backend server; "Serverless": your application doesn't have a backend +// server; "Classic": for backward compatibility. Support both Default and Serverless mode but not recommended; +// "PredefinedOnly": for future use. +// - EnableConnectivityLogs: "true"/"false", to enable/disable the connectivity log +// category respectively. +// - EnableMessagingLogs: "true"/"false", to enable/disable the connectivity log category +// respectively. +// - EnableLiveTrace: Live Trace allows you to know what's happening inside Azure SignalR service, it will +// give you live traces in real time, it will be helpful when you developing your own Azure SignalR based web application +// or self-troubleshooting some issues. Please note that live traces are counted as outbound messages that will be charged. +// Values allowed: "true"/"false", to enable/disable live trace feature. +type FeatureFlags_STATUS string + +const ( + FeatureFlags_STATUS_EnableConnectivityLogs = FeatureFlags_STATUS("EnableConnectivityLogs") + FeatureFlags_STATUS_EnableLiveTrace = FeatureFlags_STATUS("EnableLiveTrace") + FeatureFlags_STATUS_EnableMessagingLogs = FeatureFlags_STATUS("EnableMessagingLogs") + FeatureFlags_STATUS_ServiceMode = FeatureFlags_STATUS("ServiceMode") +) + +// Mapping from string to FeatureFlags_STATUS +var featureFlags_STATUS_Values = map[string]FeatureFlags_STATUS{ + "enableconnectivitylogs": FeatureFlags_STATUS_EnableConnectivityLogs, + "enablelivetrace": FeatureFlags_STATUS_EnableLiveTrace, + "enablemessaginglogs": FeatureFlags_STATUS_EnableMessagingLogs, + "servicemode": FeatureFlags_STATUS_ServiceMode, +} + +// An IP rule +type IPRule struct { + // Action: Azure Networking ACL Action. + Action *ACLAction `json:"action,omitempty"` + + // Value: An IP or CIDR or ServiceTag + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ARMTransformer = &IPRule{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (rule *IPRule) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if rule == nil { + return nil, nil + } + result := &arm.IPRule{} + + // Set property "Action": + if rule.Action != nil { + var temp string + temp = string(*rule.Action) + action := arm.ACLAction(temp) + result.Action = &action + } + + // Set property "Value": + if rule.Value != nil { + value := *rule.Value + result.Value = &value + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (rule *IPRule) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.IPRule{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (rule *IPRule) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.IPRule) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.IPRule, got %T", armInput) + } + + // Set property "Action": + if typedInput.Action != nil { + var temp string + temp = string(*typedInput.Action) + action := ACLAction(temp) + rule.Action = &action + } + + // Set property "Value": + if typedInput.Value != nil { + value := *typedInput.Value + rule.Value = &value + } + + // No error + return nil +} + +// AssignProperties_From_IPRule populates our IPRule from the provided source IPRule +func (rule *IPRule) AssignProperties_From_IPRule(source *storage.IPRule) error { + + // Action + if source.Action != nil { + action := *source.Action + actionTemp := genruntime.ToEnum(action, aCLAction_Values) + rule.Action = &actionTemp + } else { + rule.Action = nil + } + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_IPRule populates the provided destination IPRule from our IPRule +func (rule *IPRule) AssignProperties_To_IPRule(destination *storage.IPRule) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Action + if rule.Action != nil { + action := string(*rule.Action) + destination.Action = &action + } else { + destination.Action = nil + } + + // Value + destination.Value = genruntime.ClonePointerToString(rule.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_IPRule_STATUS populates our IPRule from the provided source IPRule_STATUS +func (rule *IPRule) Initialize_From_IPRule_STATUS(source *IPRule_STATUS) error { + + // Action + if source.Action != nil { + action := genruntime.ToEnum(string(*source.Action), aCLAction_Values) + rule.Action = &action + } else { + rule.Action = nil + } + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// An IP rule +type IPRule_STATUS struct { + // Action: Azure Networking ACL Action. + Action *ACLAction_STATUS `json:"action,omitempty"` + + // Value: An IP or CIDR or ServiceTag + Value *string `json:"value,omitempty"` +} + +var _ genruntime.FromARMConverter = &IPRule_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (rule *IPRule_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.IPRule_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (rule *IPRule_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.IPRule_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.IPRule_STATUS, got %T", armInput) + } + + // Set property "Action": + if typedInput.Action != nil { + var temp string + temp = string(*typedInput.Action) + action := ACLAction_STATUS(temp) + rule.Action = &action + } + + // Set property "Value": + if typedInput.Value != nil { + value := *typedInput.Value + rule.Value = &value + } + + // No error + return nil +} + +// AssignProperties_From_IPRule_STATUS populates our IPRule_STATUS from the provided source IPRule_STATUS +func (rule *IPRule_STATUS) AssignProperties_From_IPRule_STATUS(source *storage.IPRule_STATUS) error { + + // Action + if source.Action != nil { + action := *source.Action + actionTemp := genruntime.ToEnum(action, aCLAction_STATUS_Values) + rule.Action = &actionTemp + } else { + rule.Action = nil + } + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_IPRule_STATUS populates the provided destination IPRule_STATUS from our IPRule_STATUS +func (rule *IPRule_STATUS) AssignProperties_To_IPRule_STATUS(destination *storage.IPRule_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Action + if rule.Action != nil { + action := string(*rule.Action) + destination.Action = &action + } else { + destination.Action = nil + } + + // Value + destination.Value = genruntime.ClonePointerToString(rule.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Live trace category configuration of a Microsoft.SignalRService resource. +type LiveTraceCategory struct { + // Enabled: Indicates whether or the live trace category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the live trace category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +var _ genruntime.ARMTransformer = &LiveTraceCategory{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (category *LiveTraceCategory) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if category == nil { + return nil, nil + } + result := &arm.LiveTraceCategory{} + + // Set property "Enabled": + if category.Enabled != nil { + enabled := *category.Enabled + result.Enabled = &enabled + } + + // Set property "Name": + if category.Name != nil { + name := *category.Name + result.Name = &name + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (category *LiveTraceCategory) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.LiveTraceCategory{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (category *LiveTraceCategory) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.LiveTraceCategory) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.LiveTraceCategory, got %T", armInput) + } + + // Set property "Enabled": + if typedInput.Enabled != nil { + enabled := *typedInput.Enabled + category.Enabled = &enabled + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + category.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_LiveTraceCategory populates our LiveTraceCategory from the provided source LiveTraceCategory +func (category *LiveTraceCategory) AssignProperties_From_LiveTraceCategory(source *storage.LiveTraceCategory) error { + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_LiveTraceCategory populates the provided destination LiveTraceCategory from our LiveTraceCategory +func (category *LiveTraceCategory) AssignProperties_To_LiveTraceCategory(destination *storage.LiveTraceCategory) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(category.Enabled) + + // Name + destination.Name = genruntime.ClonePointerToString(category.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_LiveTraceCategory_STATUS populates our LiveTraceCategory from the provided source LiveTraceCategory_STATUS +func (category *LiveTraceCategory) Initialize_From_LiveTraceCategory_STATUS(source *LiveTraceCategory_STATUS) error { + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// Live trace category configuration of a Microsoft.SignalRService resource. +type LiveTraceCategory_STATUS struct { + // Enabled: Indicates whether or the live trace category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the live trace category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +var _ genruntime.FromARMConverter = &LiveTraceCategory_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (category *LiveTraceCategory_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.LiveTraceCategory_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (category *LiveTraceCategory_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.LiveTraceCategory_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.LiveTraceCategory_STATUS, got %T", armInput) + } + + // Set property "Enabled": + if typedInput.Enabled != nil { + enabled := *typedInput.Enabled + category.Enabled = &enabled + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + category.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_LiveTraceCategory_STATUS populates our LiveTraceCategory_STATUS from the provided source LiveTraceCategory_STATUS +func (category *LiveTraceCategory_STATUS) AssignProperties_From_LiveTraceCategory_STATUS(source *storage.LiveTraceCategory_STATUS) error { + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_LiveTraceCategory_STATUS populates the provided destination LiveTraceCategory_STATUS from our LiveTraceCategory_STATUS +func (category *LiveTraceCategory_STATUS) AssignProperties_To_LiveTraceCategory_STATUS(destination *storage.LiveTraceCategory_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(category.Enabled) + + // Name + destination.Name = genruntime.ClonePointerToString(category.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Represents the identity type: systemAssigned, userAssigned, None +// +kubebuilder:validation:Enum={"None","SystemAssigned","UserAssigned"} +type ManagedIdentityType string + +const ( + ManagedIdentityType_None = ManagedIdentityType("None") + ManagedIdentityType_SystemAssigned = ManagedIdentityType("SystemAssigned") + ManagedIdentityType_UserAssigned = ManagedIdentityType("UserAssigned") +) + +// Mapping from string to ManagedIdentityType +var managedIdentityType_Values = map[string]ManagedIdentityType{ + "none": ManagedIdentityType_None, + "systemassigned": ManagedIdentityType_SystemAssigned, + "userassigned": ManagedIdentityType_UserAssigned, +} + +// Represents the identity type: systemAssigned, userAssigned, None +type ManagedIdentityType_STATUS string + +const ( + ManagedIdentityType_STATUS_None = ManagedIdentityType_STATUS("None") + ManagedIdentityType_STATUS_SystemAssigned = ManagedIdentityType_STATUS("SystemAssigned") + ManagedIdentityType_STATUS_UserAssigned = ManagedIdentityType_STATUS("UserAssigned") +) + +// Mapping from string to ManagedIdentityType_STATUS +var managedIdentityType_STATUS_Values = map[string]ManagedIdentityType_STATUS{ + "none": ManagedIdentityType_STATUS_None, + "systemassigned": ManagedIdentityType_STATUS_SystemAssigned, + "userassigned": ManagedIdentityType_STATUS_UserAssigned, +} + +// Network ACL +type NetworkACL struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType `json:"deny,omitempty"` +} + +var _ genruntime.ARMTransformer = &NetworkACL{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (networkACL *NetworkACL) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if networkACL == nil { + return nil, nil + } + result := &arm.NetworkACL{} + + // Set property "Allow": + for _, item := range networkACL.Allow { + var temp string + temp = string(item) + result.Allow = append(result.Allow, arm.SignalRRequestType(temp)) + } + + // Set property "Deny": + for _, item := range networkACL.Deny { + var temp string + temp = string(item) + result.Deny = append(result.Deny, arm.SignalRRequestType(temp)) + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (networkACL *NetworkACL) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.NetworkACL{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (networkACL *NetworkACL) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.NetworkACL) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.NetworkACL, got %T", armInput) + } + + // Set property "Allow": + for _, item := range typedInput.Allow { + var temp string + temp = string(item) + networkACL.Allow = append(networkACL.Allow, SignalRRequestType(temp)) + } + + // Set property "Deny": + for _, item := range typedInput.Deny { + var temp string + temp = string(item) + networkACL.Deny = append(networkACL.Deny, SignalRRequestType(temp)) + } + + // No error + return nil +} + +// AssignProperties_From_NetworkACL populates our NetworkACL from the provided source NetworkACL +func (networkACL *NetworkACL) AssignProperties_From_NetworkACL(source *storage.NetworkACL) error { + + // Allow + if source.Allow != nil { + allowList := make([]SignalRRequestType, len(source.Allow)) + for allowIndex, allowItem := range source.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = genruntime.ToEnum(allowItem, signalRRequestType_Values) + } + networkACL.Allow = allowList + } else { + networkACL.Allow = nil + } + + // Deny + if source.Deny != nil { + denyList := make([]SignalRRequestType, len(source.Deny)) + for denyIndex, denyItem := range source.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = genruntime.ToEnum(denyItem, signalRRequestType_Values) + } + networkACL.Deny = denyList + } else { + networkACL.Deny = nil + } + + // No error + return nil +} + +// AssignProperties_To_NetworkACL populates the provided destination NetworkACL from our NetworkACL +func (networkACL *NetworkACL) AssignProperties_To_NetworkACL(destination *storage.NetworkACL) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Allow + if networkACL.Allow != nil { + allowList := make([]string, len(networkACL.Allow)) + for allowIndex, allowItem := range networkACL.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = string(allowItem) + } + destination.Allow = allowList + } else { + destination.Allow = nil + } + + // Deny + if networkACL.Deny != nil { + denyList := make([]string, len(networkACL.Deny)) + for denyIndex, denyItem := range networkACL.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = string(denyItem) + } + destination.Deny = denyList + } else { + destination.Deny = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_NetworkACL_STATUS populates our NetworkACL from the provided source NetworkACL_STATUS +func (networkACL *NetworkACL) Initialize_From_NetworkACL_STATUS(source *NetworkACL_STATUS) error { + + // Allow + if source.Allow != nil { + allowList := make([]SignalRRequestType, len(source.Allow)) + for allowIndex, allowItem := range source.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allow := genruntime.ToEnum(string(allowItem), signalRRequestType_Values) + allowList[allowIndex] = allow + } + networkACL.Allow = allowList + } else { + networkACL.Allow = nil + } + + // Deny + if source.Deny != nil { + denyList := make([]SignalRRequestType, len(source.Deny)) + for denyIndex, denyItem := range source.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + deny := genruntime.ToEnum(string(denyItem), signalRRequestType_Values) + denyList[denyIndex] = deny + } + networkACL.Deny = denyList + } else { + networkACL.Deny = nil + } + + // No error + return nil +} + +// Network ACL +type NetworkACL_STATUS struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType_STATUS `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType_STATUS `json:"deny,omitempty"` +} + +var _ genruntime.FromARMConverter = &NetworkACL_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (networkACL *NetworkACL_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.NetworkACL_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (networkACL *NetworkACL_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.NetworkACL_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.NetworkACL_STATUS, got %T", armInput) + } + + // Set property "Allow": + for _, item := range typedInput.Allow { + var temp string + temp = string(item) + networkACL.Allow = append(networkACL.Allow, SignalRRequestType_STATUS(temp)) + } + + // Set property "Deny": + for _, item := range typedInput.Deny { + var temp string + temp = string(item) + networkACL.Deny = append(networkACL.Deny, SignalRRequestType_STATUS(temp)) + } + + // No error + return nil +} + +// AssignProperties_From_NetworkACL_STATUS populates our NetworkACL_STATUS from the provided source NetworkACL_STATUS +func (networkACL *NetworkACL_STATUS) AssignProperties_From_NetworkACL_STATUS(source *storage.NetworkACL_STATUS) error { + + // Allow + if source.Allow != nil { + allowList := make([]SignalRRequestType_STATUS, len(source.Allow)) + for allowIndex, allowItem := range source.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = genruntime.ToEnum(allowItem, signalRRequestType_STATUS_Values) + } + networkACL.Allow = allowList + } else { + networkACL.Allow = nil + } + + // Deny + if source.Deny != nil { + denyList := make([]SignalRRequestType_STATUS, len(source.Deny)) + for denyIndex, denyItem := range source.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = genruntime.ToEnum(denyItem, signalRRequestType_STATUS_Values) + } + networkACL.Deny = denyList + } else { + networkACL.Deny = nil + } + + // No error + return nil +} + +// AssignProperties_To_NetworkACL_STATUS populates the provided destination NetworkACL_STATUS from our NetworkACL_STATUS +func (networkACL *NetworkACL_STATUS) AssignProperties_To_NetworkACL_STATUS(destination *storage.NetworkACL_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Allow + if networkACL.Allow != nil { + allowList := make([]string, len(networkACL.Allow)) + for allowIndex, allowItem := range networkACL.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = string(allowItem) + } + destination.Allow = allowList + } else { + destination.Allow = nil + } + + // Deny + if networkACL.Deny != nil { + denyList := make([]string, len(networkACL.Deny)) + for denyIndex, denyItem := range networkACL.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = string(denyItem) + } + destination.Deny = denyList + } else { + destination.Deny = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// ACL for a private endpoint +type PrivateEndpointACL struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType `json:"deny,omitempty"` + + // +kubebuilder:validation:Required + // Name: Name of the private endpoint connection + Name *string `json:"name,omitempty"` +} + +var _ genruntime.ARMTransformer = &PrivateEndpointACL{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (endpointACL *PrivateEndpointACL) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if endpointACL == nil { + return nil, nil + } + result := &arm.PrivateEndpointACL{} + + // Set property "Allow": + for _, item := range endpointACL.Allow { + var temp string + temp = string(item) + result.Allow = append(result.Allow, arm.SignalRRequestType(temp)) + } + + // Set property "Deny": + for _, item := range endpointACL.Deny { + var temp string + temp = string(item) + result.Deny = append(result.Deny, arm.SignalRRequestType(temp)) + } + + // Set property "Name": + if endpointACL.Name != nil { + name := *endpointACL.Name + result.Name = &name + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (endpointACL *PrivateEndpointACL) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpointACL{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (endpointACL *PrivateEndpointACL) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpointACL) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpointACL, got %T", armInput) + } + + // Set property "Allow": + for _, item := range typedInput.Allow { + var temp string + temp = string(item) + endpointACL.Allow = append(endpointACL.Allow, SignalRRequestType(temp)) + } + + // Set property "Deny": + for _, item := range typedInput.Deny { + var temp string + temp = string(item) + endpointACL.Deny = append(endpointACL.Deny, SignalRRequestType(temp)) + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + endpointACL.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpointACL populates our PrivateEndpointACL from the provided source PrivateEndpointACL +func (endpointACL *PrivateEndpointACL) AssignProperties_From_PrivateEndpointACL(source *storage.PrivateEndpointACL) error { + + // Allow + if source.Allow != nil { + allowList := make([]SignalRRequestType, len(source.Allow)) + for allowIndex, allowItem := range source.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = genruntime.ToEnum(allowItem, signalRRequestType_Values) + } + endpointACL.Allow = allowList + } else { + endpointACL.Allow = nil + } + + // Deny + if source.Deny != nil { + denyList := make([]SignalRRequestType, len(source.Deny)) + for denyIndex, denyItem := range source.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = genruntime.ToEnum(denyItem, signalRRequestType_Values) + } + endpointACL.Deny = denyList + } else { + endpointACL.Deny = nil + } + + // Name + endpointACL.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointACL populates the provided destination PrivateEndpointACL from our PrivateEndpointACL +func (endpointACL *PrivateEndpointACL) AssignProperties_To_PrivateEndpointACL(destination *storage.PrivateEndpointACL) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Allow + if endpointACL.Allow != nil { + allowList := make([]string, len(endpointACL.Allow)) + for allowIndex, allowItem := range endpointACL.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = string(allowItem) + } + destination.Allow = allowList + } else { + destination.Allow = nil + } + + // Deny + if endpointACL.Deny != nil { + denyList := make([]string, len(endpointACL.Deny)) + for denyIndex, denyItem := range endpointACL.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = string(denyItem) + } + destination.Deny = denyList + } else { + destination.Deny = nil + } + + // Name + destination.Name = genruntime.ClonePointerToString(endpointACL.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_PrivateEndpointACL_STATUS populates our PrivateEndpointACL from the provided source PrivateEndpointACL_STATUS +func (endpointACL *PrivateEndpointACL) Initialize_From_PrivateEndpointACL_STATUS(source *PrivateEndpointACL_STATUS) error { + + // Allow + if source.Allow != nil { + allowList := make([]SignalRRequestType, len(source.Allow)) + for allowIndex, allowItem := range source.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allow := genruntime.ToEnum(string(allowItem), signalRRequestType_Values) + allowList[allowIndex] = allow + } + endpointACL.Allow = allowList + } else { + endpointACL.Allow = nil + } + + // Deny + if source.Deny != nil { + denyList := make([]SignalRRequestType, len(source.Deny)) + for denyIndex, denyItem := range source.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + deny := genruntime.ToEnum(string(denyItem), signalRRequestType_Values) + denyList[denyIndex] = deny + } + endpointACL.Deny = denyList + } else { + endpointACL.Deny = nil + } + + // Name + endpointACL.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// ACL for a private endpoint +type PrivateEndpointACL_STATUS struct { + // Allow: Allowed request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Allow []SignalRRequestType_STATUS `json:"allow,omitempty"` + + // Deny: Denied request types. The value can be one or more of: ClientConnection, ServerConnection, RESTAPI. + Deny []SignalRRequestType_STATUS `json:"deny,omitempty"` + + // Name: Name of the private endpoint connection + Name *string `json:"name,omitempty"` +} + +var _ genruntime.FromARMConverter = &PrivateEndpointACL_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (endpointACL *PrivateEndpointACL_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpointACL_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (endpointACL *PrivateEndpointACL_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpointACL_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpointACL_STATUS, got %T", armInput) + } + + // Set property "Allow": + for _, item := range typedInput.Allow { + var temp string + temp = string(item) + endpointACL.Allow = append(endpointACL.Allow, SignalRRequestType_STATUS(temp)) + } + + // Set property "Deny": + for _, item := range typedInput.Deny { + var temp string + temp = string(item) + endpointACL.Deny = append(endpointACL.Deny, SignalRRequestType_STATUS(temp)) + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + endpointACL.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpointACL_STATUS populates our PrivateEndpointACL_STATUS from the provided source PrivateEndpointACL_STATUS +func (endpointACL *PrivateEndpointACL_STATUS) AssignProperties_From_PrivateEndpointACL_STATUS(source *storage.PrivateEndpointACL_STATUS) error { + + // Allow + if source.Allow != nil { + allowList := make([]SignalRRequestType_STATUS, len(source.Allow)) + for allowIndex, allowItem := range source.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = genruntime.ToEnum(allowItem, signalRRequestType_STATUS_Values) + } + endpointACL.Allow = allowList + } else { + endpointACL.Allow = nil + } + + // Deny + if source.Deny != nil { + denyList := make([]SignalRRequestType_STATUS, len(source.Deny)) + for denyIndex, denyItem := range source.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = genruntime.ToEnum(denyItem, signalRRequestType_STATUS_Values) + } + endpointACL.Deny = denyList + } else { + endpointACL.Deny = nil + } + + // Name + endpointACL.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointACL_STATUS populates the provided destination PrivateEndpointACL_STATUS from our PrivateEndpointACL_STATUS +func (endpointACL *PrivateEndpointACL_STATUS) AssignProperties_To_PrivateEndpointACL_STATUS(destination *storage.PrivateEndpointACL_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Allow + if endpointACL.Allow != nil { + allowList := make([]string, len(endpointACL.Allow)) + for allowIndex, allowItem := range endpointACL.Allow { + // Shadow the loop variable to avoid aliasing + allowItem := allowItem + allowList[allowIndex] = string(allowItem) + } + destination.Allow = allowList + } else { + destination.Allow = nil + } + + // Deny + if endpointACL.Deny != nil { + denyList := make([]string, len(endpointACL.Deny)) + for denyIndex, denyItem := range endpointACL.Deny { + // Shadow the loop variable to avoid aliasing + denyItem := denyItem + denyList[denyIndex] = string(denyItem) + } + destination.Deny = denyList + } else { + destination.Deny = nil + } + + // Name + destination.Name = genruntime.ClonePointerToString(endpointACL.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Resource log category configuration of a Microsoft.SignalRService resource. +type ResourceLogCategory struct { + // Enabled: Indicates whether or the resource log category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the resource log category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +var _ genruntime.ARMTransformer = &ResourceLogCategory{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (category *ResourceLogCategory) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if category == nil { + return nil, nil + } + result := &arm.ResourceLogCategory{} + + // Set property "Enabled": + if category.Enabled != nil { + enabled := *category.Enabled + result.Enabled = &enabled + } + + // Set property "Name": + if category.Name != nil { + name := *category.Name + result.Name = &name + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (category *ResourceLogCategory) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceLogCategory{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (category *ResourceLogCategory) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceLogCategory) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceLogCategory, got %T", armInput) + } + + // Set property "Enabled": + if typedInput.Enabled != nil { + enabled := *typedInput.Enabled + category.Enabled = &enabled + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + category.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_ResourceLogCategory populates our ResourceLogCategory from the provided source ResourceLogCategory +func (category *ResourceLogCategory) AssignProperties_From_ResourceLogCategory(source *storage.ResourceLogCategory) error { + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_ResourceLogCategory populates the provided destination ResourceLogCategory from our ResourceLogCategory +func (category *ResourceLogCategory) AssignProperties_To_ResourceLogCategory(destination *storage.ResourceLogCategory) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(category.Enabled) + + // Name + destination.Name = genruntime.ClonePointerToString(category.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ResourceLogCategory_STATUS populates our ResourceLogCategory from the provided source ResourceLogCategory_STATUS +func (category *ResourceLogCategory) Initialize_From_ResourceLogCategory_STATUS(source *ResourceLogCategory_STATUS) error { + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// Resource log category configuration of a Microsoft.SignalRService resource. +type ResourceLogCategory_STATUS struct { + // Enabled: Indicates whether or the resource log category is enabled. + // Available values: true, false. + // Case insensitive. + Enabled *string `json:"enabled,omitempty"` + + // Name: Gets or sets the resource log category's name. + // Available values: ConnectivityLogs, MessagingLogs. + // Case insensitive. + Name *string `json:"name,omitempty"` +} + +var _ genruntime.FromARMConverter = &ResourceLogCategory_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (category *ResourceLogCategory_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceLogCategory_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (category *ResourceLogCategory_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceLogCategory_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceLogCategory_STATUS, got %T", armInput) + } + + // Set property "Enabled": + if typedInput.Enabled != nil { + enabled := *typedInput.Enabled + category.Enabled = &enabled + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + category.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_ResourceLogCategory_STATUS populates our ResourceLogCategory_STATUS from the provided source ResourceLogCategory_STATUS +func (category *ResourceLogCategory_STATUS) AssignProperties_From_ResourceLogCategory_STATUS(source *storage.ResourceLogCategory_STATUS) error { + + // Enabled + category.Enabled = genruntime.ClonePointerToString(source.Enabled) + + // Name + category.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_ResourceLogCategory_STATUS populates the provided destination ResourceLogCategory_STATUS from our ResourceLogCategory_STATUS +func (category *ResourceLogCategory_STATUS) AssignProperties_To_ResourceLogCategory_STATUS(destination *storage.ResourceLogCategory_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Enabled + destination.Enabled = genruntime.ClonePointerToString(category.Enabled) + + // Name + destination.Name = genruntime.ClonePointerToString(category.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type SignalROperatorSecrets struct { + // PrimaryConnectionString: indicates where the PrimaryConnectionString secret should be placed. If omitted, the secret + // will not be retrieved from Azure. + PrimaryConnectionString *genruntime.SecretDestination `json:"primaryConnectionString,omitempty"` + + // PrimaryKey: indicates where the PrimaryKey secret should be placed. If omitted, the secret will not be retrieved from + // Azure. + PrimaryKey *genruntime.SecretDestination `json:"primaryKey,omitempty"` + + // SecondaryConnectionString: indicates where the SecondaryConnectionString secret should be placed. If omitted, the secret + // will not be retrieved from Azure. + SecondaryConnectionString *genruntime.SecretDestination `json:"secondaryConnectionString,omitempty"` + + // SecondaryKey: indicates where the SecondaryKey secret should be placed. If omitted, the secret will not be retrieved + // from Azure. + SecondaryKey *genruntime.SecretDestination `json:"secondaryKey,omitempty"` +} + +// AssignProperties_From_SignalROperatorSecrets populates our SignalROperatorSecrets from the provided source SignalROperatorSecrets +func (secrets *SignalROperatorSecrets) AssignProperties_From_SignalROperatorSecrets(source *storage.SignalROperatorSecrets) error { + + // PrimaryConnectionString + if source.PrimaryConnectionString != nil { + primaryConnectionString := source.PrimaryConnectionString.Copy() + secrets.PrimaryConnectionString = &primaryConnectionString + } else { + secrets.PrimaryConnectionString = nil + } + + // PrimaryKey + if source.PrimaryKey != nil { + primaryKey := source.PrimaryKey.Copy() + secrets.PrimaryKey = &primaryKey + } else { + secrets.PrimaryKey = nil + } + + // SecondaryConnectionString + if source.SecondaryConnectionString != nil { + secondaryConnectionString := source.SecondaryConnectionString.Copy() + secrets.SecondaryConnectionString = &secondaryConnectionString + } else { + secrets.SecondaryConnectionString = nil + } + + // SecondaryKey + if source.SecondaryKey != nil { + secondaryKey := source.SecondaryKey.Copy() + secrets.SecondaryKey = &secondaryKey + } else { + secrets.SecondaryKey = nil + } + + // No error + return nil +} + +// AssignProperties_To_SignalROperatorSecrets populates the provided destination SignalROperatorSecrets from our SignalROperatorSecrets +func (secrets *SignalROperatorSecrets) AssignProperties_To_SignalROperatorSecrets(destination *storage.SignalROperatorSecrets) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // PrimaryConnectionString + if secrets.PrimaryConnectionString != nil { + primaryConnectionString := secrets.PrimaryConnectionString.Copy() + destination.PrimaryConnectionString = &primaryConnectionString + } else { + destination.PrimaryConnectionString = nil + } + + // PrimaryKey + if secrets.PrimaryKey != nil { + primaryKey := secrets.PrimaryKey.Copy() + destination.PrimaryKey = &primaryKey + } else { + destination.PrimaryKey = nil + } + + // SecondaryConnectionString + if secrets.SecondaryConnectionString != nil { + secondaryConnectionString := secrets.SecondaryConnectionString.Copy() + destination.SecondaryConnectionString = &secondaryConnectionString + } else { + destination.SecondaryConnectionString = nil + } + + // SecondaryKey + if secrets.SecondaryKey != nil { + secondaryKey := secrets.SecondaryKey.Copy() + destination.SecondaryKey = &secondaryKey + } else { + destination.SecondaryKey = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Upstream template item settings. It defines the Upstream URL of the incoming requests. +// The template defines the pattern +// of the event, the hub or the category of the incoming request that matches current URL template. +type UpstreamTemplate struct { + // Auth: Upstream auth settings. If not set, no auth is used for upstream messages. + Auth *UpstreamAuthSettings `json:"auth,omitempty"` + + // CategoryPattern: Gets or sets the matching pattern for category names. If not set, it matches any category. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any category name. + // 2. Combine multiple categories with ",", for example "connections,messages", it matches category "connections" and + // "messages". + // 3. The single category name, for example, "connections", it matches the category "connections". + CategoryPattern *string `json:"categoryPattern,omitempty"` + + // EventPattern: Gets or sets the matching pattern for event names. If not set, it matches any event. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any event name. + // 2. Combine multiple events with ",", for example "connect,disconnect", it matches event "connect" and "disconnect". + // 3. The single event name, for example, "connect", it matches "connect". + EventPattern *string `json:"eventPattern,omitempty"` + + // HubPattern: Gets or sets the matching pattern for hub names. If not set, it matches any hub. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any hub name. + // 2. Combine multiple hubs with ",", for example "hub1,hub2", it matches "hub1" and "hub2". + // 3. The single hub name, for example, "hub1", it matches "hub1". + HubPattern *string `json:"hubPattern,omitempty"` + + // +kubebuilder:validation:Required + // UrlTemplate: Gets or sets the Upstream URL template. You can use 3 predefined parameters {hub}, {category} {event} + // inside the template, the value of the Upstream URL is dynamically calculated when the client request comes in. + // For example, if the urlTemplate is `http://example.com/{hub}/api/{event}`, with a client request from hub `chat` + // connects, it will first POST to this URL: `http://example.com/chat/api/connect`. + UrlTemplate *string `json:"urlTemplate,omitempty"` +} + +var _ genruntime.ARMTransformer = &UpstreamTemplate{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (template *UpstreamTemplate) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if template == nil { + return nil, nil + } + result := &arm.UpstreamTemplate{} + + // Set property "Auth": + if template.Auth != nil { + auth_ARM, err := (*template.Auth).ConvertToARM(resolved) + if err != nil { + return nil, err + } + auth := *auth_ARM.(*arm.UpstreamAuthSettings) + result.Auth = &auth + } + + // Set property "CategoryPattern": + if template.CategoryPattern != nil { + categoryPattern := *template.CategoryPattern + result.CategoryPattern = &categoryPattern + } + + // Set property "EventPattern": + if template.EventPattern != nil { + eventPattern := *template.EventPattern + result.EventPattern = &eventPattern + } + + // Set property "HubPattern": + if template.HubPattern != nil { + hubPattern := *template.HubPattern + result.HubPattern = &hubPattern + } + + // Set property "UrlTemplate": + if template.UrlTemplate != nil { + urlTemplate := *template.UrlTemplate + result.UrlTemplate = &urlTemplate + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (template *UpstreamTemplate) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UpstreamTemplate{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (template *UpstreamTemplate) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UpstreamTemplate) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UpstreamTemplate, got %T", armInput) + } + + // Set property "Auth": + if typedInput.Auth != nil { + var auth1 UpstreamAuthSettings + err := auth1.PopulateFromARM(owner, *typedInput.Auth) + if err != nil { + return err + } + auth := auth1 + template.Auth = &auth + } + + // Set property "CategoryPattern": + if typedInput.CategoryPattern != nil { + categoryPattern := *typedInput.CategoryPattern + template.CategoryPattern = &categoryPattern + } + + // Set property "EventPattern": + if typedInput.EventPattern != nil { + eventPattern := *typedInput.EventPattern + template.EventPattern = &eventPattern + } + + // Set property "HubPattern": + if typedInput.HubPattern != nil { + hubPattern := *typedInput.HubPattern + template.HubPattern = &hubPattern + } + + // Set property "UrlTemplate": + if typedInput.UrlTemplate != nil { + urlTemplate := *typedInput.UrlTemplate + template.UrlTemplate = &urlTemplate + } + + // No error + return nil +} + +// AssignProperties_From_UpstreamTemplate populates our UpstreamTemplate from the provided source UpstreamTemplate +func (template *UpstreamTemplate) AssignProperties_From_UpstreamTemplate(source *storage.UpstreamTemplate) error { + + // Auth + if source.Auth != nil { + var auth UpstreamAuthSettings + err := auth.AssignProperties_From_UpstreamAuthSettings(source.Auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamAuthSettings() to populate field Auth") + } + template.Auth = &auth + } else { + template.Auth = nil + } + + // CategoryPattern + template.CategoryPattern = genruntime.ClonePointerToString(source.CategoryPattern) + + // EventPattern + template.EventPattern = genruntime.ClonePointerToString(source.EventPattern) + + // HubPattern + template.HubPattern = genruntime.ClonePointerToString(source.HubPattern) + + // UrlTemplate + template.UrlTemplate = genruntime.ClonePointerToString(source.UrlTemplate) + + // No error + return nil +} + +// AssignProperties_To_UpstreamTemplate populates the provided destination UpstreamTemplate from our UpstreamTemplate +func (template *UpstreamTemplate) AssignProperties_To_UpstreamTemplate(destination *storage.UpstreamTemplate) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Auth + if template.Auth != nil { + var auth storage.UpstreamAuthSettings + err := template.Auth.AssignProperties_To_UpstreamAuthSettings(&auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamAuthSettings() to populate field Auth") + } + destination.Auth = &auth + } else { + destination.Auth = nil + } + + // CategoryPattern + destination.CategoryPattern = genruntime.ClonePointerToString(template.CategoryPattern) + + // EventPattern + destination.EventPattern = genruntime.ClonePointerToString(template.EventPattern) + + // HubPattern + destination.HubPattern = genruntime.ClonePointerToString(template.HubPattern) + + // UrlTemplate + destination.UrlTemplate = genruntime.ClonePointerToString(template.UrlTemplate) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_UpstreamTemplate_STATUS populates our UpstreamTemplate from the provided source UpstreamTemplate_STATUS +func (template *UpstreamTemplate) Initialize_From_UpstreamTemplate_STATUS(source *UpstreamTemplate_STATUS) error { + + // Auth + if source.Auth != nil { + var auth UpstreamAuthSettings + err := auth.Initialize_From_UpstreamAuthSettings_STATUS(source.Auth) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_UpstreamAuthSettings_STATUS() to populate field Auth") + } + template.Auth = &auth + } else { + template.Auth = nil + } + + // CategoryPattern + template.CategoryPattern = genruntime.ClonePointerToString(source.CategoryPattern) + + // EventPattern + template.EventPattern = genruntime.ClonePointerToString(source.EventPattern) + + // HubPattern + template.HubPattern = genruntime.ClonePointerToString(source.HubPattern) + + // UrlTemplate + template.UrlTemplate = genruntime.ClonePointerToString(source.UrlTemplate) + + // No error + return nil +} + +// Upstream template item settings. It defines the Upstream URL of the incoming requests. +// The template defines the pattern +// of the event, the hub or the category of the incoming request that matches current URL template. +type UpstreamTemplate_STATUS struct { + // Auth: Upstream auth settings. If not set, no auth is used for upstream messages. + Auth *UpstreamAuthSettings_STATUS `json:"auth,omitempty"` + + // CategoryPattern: Gets or sets the matching pattern for category names. If not set, it matches any category. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any category name. + // 2. Combine multiple categories with ",", for example "connections,messages", it matches category "connections" and + // "messages". + // 3. The single category name, for example, "connections", it matches the category "connections". + CategoryPattern *string `json:"categoryPattern,omitempty"` + + // EventPattern: Gets or sets the matching pattern for event names. If not set, it matches any event. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any event name. + // 2. Combine multiple events with ",", for example "connect,disconnect", it matches event "connect" and "disconnect". + // 3. The single event name, for example, "connect", it matches "connect". + EventPattern *string `json:"eventPattern,omitempty"` + + // HubPattern: Gets or sets the matching pattern for hub names. If not set, it matches any hub. + // There are 3 kind of patterns supported: + // 1. "*", it to matches any hub name. + // 2. Combine multiple hubs with ",", for example "hub1,hub2", it matches "hub1" and "hub2". + // 3. The single hub name, for example, "hub1", it matches "hub1". + HubPattern *string `json:"hubPattern,omitempty"` + + // UrlTemplate: Gets or sets the Upstream URL template. You can use 3 predefined parameters {hub}, {category} {event} + // inside the template, the value of the Upstream URL is dynamically calculated when the client request comes in. + // For example, if the urlTemplate is `http://example.com/{hub}/api/{event}`, with a client request from hub `chat` + // connects, it will first POST to this URL: `http://example.com/chat/api/connect`. + UrlTemplate *string `json:"urlTemplate,omitempty"` +} + +var _ genruntime.FromARMConverter = &UpstreamTemplate_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (template *UpstreamTemplate_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UpstreamTemplate_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (template *UpstreamTemplate_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UpstreamTemplate_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UpstreamTemplate_STATUS, got %T", armInput) + } + + // Set property "Auth": + if typedInput.Auth != nil { + var auth1 UpstreamAuthSettings_STATUS + err := auth1.PopulateFromARM(owner, *typedInput.Auth) + if err != nil { + return err + } + auth := auth1 + template.Auth = &auth + } + + // Set property "CategoryPattern": + if typedInput.CategoryPattern != nil { + categoryPattern := *typedInput.CategoryPattern + template.CategoryPattern = &categoryPattern + } + + // Set property "EventPattern": + if typedInput.EventPattern != nil { + eventPattern := *typedInput.EventPattern + template.EventPattern = &eventPattern + } + + // Set property "HubPattern": + if typedInput.HubPattern != nil { + hubPattern := *typedInput.HubPattern + template.HubPattern = &hubPattern + } + + // Set property "UrlTemplate": + if typedInput.UrlTemplate != nil { + urlTemplate := *typedInput.UrlTemplate + template.UrlTemplate = &urlTemplate + } + + // No error + return nil +} + +// AssignProperties_From_UpstreamTemplate_STATUS populates our UpstreamTemplate_STATUS from the provided source UpstreamTemplate_STATUS +func (template *UpstreamTemplate_STATUS) AssignProperties_From_UpstreamTemplate_STATUS(source *storage.UpstreamTemplate_STATUS) error { + + // Auth + if source.Auth != nil { + var auth UpstreamAuthSettings_STATUS + err := auth.AssignProperties_From_UpstreamAuthSettings_STATUS(source.Auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UpstreamAuthSettings_STATUS() to populate field Auth") + } + template.Auth = &auth + } else { + template.Auth = nil + } + + // CategoryPattern + template.CategoryPattern = genruntime.ClonePointerToString(source.CategoryPattern) + + // EventPattern + template.EventPattern = genruntime.ClonePointerToString(source.EventPattern) + + // HubPattern + template.HubPattern = genruntime.ClonePointerToString(source.HubPattern) + + // UrlTemplate + template.UrlTemplate = genruntime.ClonePointerToString(source.UrlTemplate) + + // No error + return nil +} + +// AssignProperties_To_UpstreamTemplate_STATUS populates the provided destination UpstreamTemplate_STATUS from our UpstreamTemplate_STATUS +func (template *UpstreamTemplate_STATUS) AssignProperties_To_UpstreamTemplate_STATUS(destination *storage.UpstreamTemplate_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Auth + if template.Auth != nil { + var auth storage.UpstreamAuthSettings_STATUS + err := template.Auth.AssignProperties_To_UpstreamAuthSettings_STATUS(&auth) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UpstreamAuthSettings_STATUS() to populate field Auth") + } + destination.Auth = &auth + } else { + destination.Auth = nil + } + + // CategoryPattern + destination.CategoryPattern = genruntime.ClonePointerToString(template.CategoryPattern) + + // EventPattern + destination.EventPattern = genruntime.ClonePointerToString(template.EventPattern) + + // HubPattern + destination.HubPattern = genruntime.ClonePointerToString(template.HubPattern) + + // UrlTemplate + destination.UrlTemplate = genruntime.ClonePointerToString(template.UrlTemplate) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { + Reference genruntime.ResourceReference `armReference:"Reference" json:"reference,omitempty"` +} + +// AssignProperties_From_UserAssignedIdentityDetails populates our UserAssignedIdentityDetails from the provided source UserAssignedIdentityDetails +func (details *UserAssignedIdentityDetails) AssignProperties_From_UserAssignedIdentityDetails(source *storage.UserAssignedIdentityDetails) error { + + // Reference + details.Reference = source.Reference.Copy() + + // No error + return nil +} + +// AssignProperties_To_UserAssignedIdentityDetails populates the provided destination UserAssignedIdentityDetails from our UserAssignedIdentityDetails +func (details *UserAssignedIdentityDetails) AssignProperties_To_UserAssignedIdentityDetails(destination *storage.UserAssignedIdentityDetails) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Reference + destination.Reference = details.Reference.Copy() + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Properties of user assigned identity. +type UserAssignedIdentityProperty_STATUS struct { + // ClientId: Get the client id for the user assigned identity + ClientId *string `json:"clientId,omitempty"` + + // PrincipalId: Get the principal id for the user assigned identity + PrincipalId *string `json:"principalId,omitempty"` +} + +var _ genruntime.FromARMConverter = &UserAssignedIdentityProperty_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (property *UserAssignedIdentityProperty_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UserAssignedIdentityProperty_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (property *UserAssignedIdentityProperty_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UserAssignedIdentityProperty_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UserAssignedIdentityProperty_STATUS, got %T", armInput) + } + + // Set property "ClientId": + if typedInput.ClientId != nil { + clientId := *typedInput.ClientId + property.ClientId = &clientId + } + + // Set property "PrincipalId": + if typedInput.PrincipalId != nil { + principalId := *typedInput.PrincipalId + property.PrincipalId = &principalId + } + + // No error + return nil +} + +// AssignProperties_From_UserAssignedIdentityProperty_STATUS populates our UserAssignedIdentityProperty_STATUS from the provided source UserAssignedIdentityProperty_STATUS +func (property *UserAssignedIdentityProperty_STATUS) AssignProperties_From_UserAssignedIdentityProperty_STATUS(source *storage.UserAssignedIdentityProperty_STATUS) error { + + // ClientId + property.ClientId = genruntime.ClonePointerToString(source.ClientId) + + // PrincipalId + property.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // No error + return nil +} + +// AssignProperties_To_UserAssignedIdentityProperty_STATUS populates the provided destination UserAssignedIdentityProperty_STATUS from our UserAssignedIdentityProperty_STATUS +func (property *UserAssignedIdentityProperty_STATUS) AssignProperties_To_UserAssignedIdentityProperty_STATUS(destination *storage.UserAssignedIdentityProperty_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ClientId + destination.ClientId = genruntime.ClonePointerToString(property.ClientId) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(property.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The incoming request type to the service +// +kubebuilder:validation:Enum={"ClientConnection","RESTAPI","ServerConnection","Trace"} +type SignalRRequestType string + +const ( + SignalRRequestType_ClientConnection = SignalRRequestType("ClientConnection") + SignalRRequestType_RESTAPI = SignalRRequestType("RESTAPI") + SignalRRequestType_ServerConnection = SignalRRequestType("ServerConnection") + SignalRRequestType_Trace = SignalRRequestType("Trace") +) + +// Mapping from string to SignalRRequestType +var signalRRequestType_Values = map[string]SignalRRequestType{ + "clientconnection": SignalRRequestType_ClientConnection, + "restapi": SignalRRequestType_RESTAPI, + "serverconnection": SignalRRequestType_ServerConnection, + "trace": SignalRRequestType_Trace, +} + +// The incoming request type to the service +type SignalRRequestType_STATUS string + +const ( + SignalRRequestType_STATUS_ClientConnection = SignalRRequestType_STATUS("ClientConnection") + SignalRRequestType_STATUS_RESTAPI = SignalRRequestType_STATUS("RESTAPI") + SignalRRequestType_STATUS_ServerConnection = SignalRRequestType_STATUS("ServerConnection") + SignalRRequestType_STATUS_Trace = SignalRRequestType_STATUS("Trace") +) + +// Mapping from string to SignalRRequestType_STATUS +var signalRRequestType_STATUS_Values = map[string]SignalRRequestType_STATUS{ + "clientconnection": SignalRRequestType_STATUS_ClientConnection, + "restapi": SignalRRequestType_STATUS_RESTAPI, + "serverconnection": SignalRRequestType_STATUS_ServerConnection, + "trace": SignalRRequestType_STATUS_Trace, +} + +// Upstream auth settings. If not set, no auth is used for upstream messages. +type UpstreamAuthSettings struct { + // ManagedIdentity: Managed identity settings for upstream. + ManagedIdentity *ManagedIdentitySettings `json:"managedIdentity,omitempty"` + + // Type: Upstream auth type enum. + Type *UpstreamAuthType `json:"type,omitempty"` +} + +var _ genruntime.ARMTransformer = &UpstreamAuthSettings{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (settings *UpstreamAuthSettings) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if settings == nil { + return nil, nil + } + result := &arm.UpstreamAuthSettings{} + + // Set property "ManagedIdentity": + if settings.ManagedIdentity != nil { + managedIdentity_ARM, err := (*settings.ManagedIdentity).ConvertToARM(resolved) + if err != nil { + return nil, err + } + managedIdentity := *managedIdentity_ARM.(*arm.ManagedIdentitySettings) + result.ManagedIdentity = &managedIdentity + } + + // Set property "Type": + if settings.Type != nil { + var temp string + temp = string(*settings.Type) + typeVar := arm.UpstreamAuthType(temp) + result.Type = &typeVar + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *UpstreamAuthSettings) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UpstreamAuthSettings{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *UpstreamAuthSettings) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UpstreamAuthSettings) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UpstreamAuthSettings, got %T", armInput) + } + + // Set property "ManagedIdentity": + if typedInput.ManagedIdentity != nil { + var managedIdentity1 ManagedIdentitySettings + err := managedIdentity1.PopulateFromARM(owner, *typedInput.ManagedIdentity) + if err != nil { + return err + } + managedIdentity := managedIdentity1 + settings.ManagedIdentity = &managedIdentity + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := UpstreamAuthType(temp) + settings.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_UpstreamAuthSettings populates our UpstreamAuthSettings from the provided source UpstreamAuthSettings +func (settings *UpstreamAuthSettings) AssignProperties_From_UpstreamAuthSettings(source *storage.UpstreamAuthSettings) error { + + // ManagedIdentity + if source.ManagedIdentity != nil { + var managedIdentity ManagedIdentitySettings + err := managedIdentity.AssignProperties_From_ManagedIdentitySettings(source.ManagedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentitySettings() to populate field ManagedIdentity") + } + settings.ManagedIdentity = &managedIdentity + } else { + settings.ManagedIdentity = nil + } + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, upstreamAuthType_Values) + settings.Type = &typeTemp + } else { + settings.Type = nil + } + + // No error + return nil +} + +// AssignProperties_To_UpstreamAuthSettings populates the provided destination UpstreamAuthSettings from our UpstreamAuthSettings +func (settings *UpstreamAuthSettings) AssignProperties_To_UpstreamAuthSettings(destination *storage.UpstreamAuthSettings) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ManagedIdentity + if settings.ManagedIdentity != nil { + var managedIdentity storage.ManagedIdentitySettings + err := settings.ManagedIdentity.AssignProperties_To_ManagedIdentitySettings(&managedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentitySettings() to populate field ManagedIdentity") + } + destination.ManagedIdentity = &managedIdentity + } else { + destination.ManagedIdentity = nil + } + + // Type + if settings.Type != nil { + typeVar := string(*settings.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_UpstreamAuthSettings_STATUS populates our UpstreamAuthSettings from the provided source UpstreamAuthSettings_STATUS +func (settings *UpstreamAuthSettings) Initialize_From_UpstreamAuthSettings_STATUS(source *UpstreamAuthSettings_STATUS) error { + + // ManagedIdentity + if source.ManagedIdentity != nil { + var managedIdentity ManagedIdentitySettings + err := managedIdentity.Initialize_From_ManagedIdentitySettings_STATUS(source.ManagedIdentity) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ManagedIdentitySettings_STATUS() to populate field ManagedIdentity") + } + settings.ManagedIdentity = &managedIdentity + } else { + settings.ManagedIdentity = nil + } + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), upstreamAuthType_Values) + settings.Type = &typeVar + } else { + settings.Type = nil + } + + // No error + return nil +} + +// Upstream auth settings. If not set, no auth is used for upstream messages. +type UpstreamAuthSettings_STATUS struct { + // ManagedIdentity: Managed identity settings for upstream. + ManagedIdentity *ManagedIdentitySettings_STATUS `json:"managedIdentity,omitempty"` + + // Type: Upstream auth type enum. + Type *UpstreamAuthType_STATUS `json:"type,omitempty"` +} + +var _ genruntime.FromARMConverter = &UpstreamAuthSettings_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *UpstreamAuthSettings_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UpstreamAuthSettings_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *UpstreamAuthSettings_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UpstreamAuthSettings_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UpstreamAuthSettings_STATUS, got %T", armInput) + } + + // Set property "ManagedIdentity": + if typedInput.ManagedIdentity != nil { + var managedIdentity1 ManagedIdentitySettings_STATUS + err := managedIdentity1.PopulateFromARM(owner, *typedInput.ManagedIdentity) + if err != nil { + return err + } + managedIdentity := managedIdentity1 + settings.ManagedIdentity = &managedIdentity + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := UpstreamAuthType_STATUS(temp) + settings.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_UpstreamAuthSettings_STATUS populates our UpstreamAuthSettings_STATUS from the provided source UpstreamAuthSettings_STATUS +func (settings *UpstreamAuthSettings_STATUS) AssignProperties_From_UpstreamAuthSettings_STATUS(source *storage.UpstreamAuthSettings_STATUS) error { + + // ManagedIdentity + if source.ManagedIdentity != nil { + var managedIdentity ManagedIdentitySettings_STATUS + err := managedIdentity.AssignProperties_From_ManagedIdentitySettings_STATUS(source.ManagedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ManagedIdentitySettings_STATUS() to populate field ManagedIdentity") + } + settings.ManagedIdentity = &managedIdentity + } else { + settings.ManagedIdentity = nil + } + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, upstreamAuthType_STATUS_Values) + settings.Type = &typeTemp + } else { + settings.Type = nil + } + + // No error + return nil +} + +// AssignProperties_To_UpstreamAuthSettings_STATUS populates the provided destination UpstreamAuthSettings_STATUS from our UpstreamAuthSettings_STATUS +func (settings *UpstreamAuthSettings_STATUS) AssignProperties_To_UpstreamAuthSettings_STATUS(destination *storage.UpstreamAuthSettings_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ManagedIdentity + if settings.ManagedIdentity != nil { + var managedIdentity storage.ManagedIdentitySettings_STATUS + err := settings.ManagedIdentity.AssignProperties_To_ManagedIdentitySettings_STATUS(&managedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ManagedIdentitySettings_STATUS() to populate field ManagedIdentity") + } + destination.ManagedIdentity = &managedIdentity + } else { + destination.ManagedIdentity = nil + } + + // Type + if settings.Type != nil { + typeVar := string(*settings.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Managed identity settings for upstream. +type ManagedIdentitySettings struct { + // Resource: The Resource indicating the App ID URI of the target resource. + // It also appears in the aud (audience) claim of the issued token. + Resource *string `json:"resource,omitempty"` +} + +var _ genruntime.ARMTransformer = &ManagedIdentitySettings{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (settings *ManagedIdentitySettings) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if settings == nil { + return nil, nil + } + result := &arm.ManagedIdentitySettings{} + + // Set property "Resource": + if settings.Resource != nil { + resource := *settings.Resource + result.Resource = &resource + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *ManagedIdentitySettings) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ManagedIdentitySettings{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *ManagedIdentitySettings) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ManagedIdentitySettings) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ManagedIdentitySettings, got %T", armInput) + } + + // Set property "Resource": + if typedInput.Resource != nil { + resource := *typedInput.Resource + settings.Resource = &resource + } + + // No error + return nil +} + +// AssignProperties_From_ManagedIdentitySettings populates our ManagedIdentitySettings from the provided source ManagedIdentitySettings +func (settings *ManagedIdentitySettings) AssignProperties_From_ManagedIdentitySettings(source *storage.ManagedIdentitySettings) error { + + // Resource + settings.Resource = genruntime.ClonePointerToString(source.Resource) + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentitySettings populates the provided destination ManagedIdentitySettings from our ManagedIdentitySettings +func (settings *ManagedIdentitySettings) AssignProperties_To_ManagedIdentitySettings(destination *storage.ManagedIdentitySettings) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Resource + destination.Resource = genruntime.ClonePointerToString(settings.Resource) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ManagedIdentitySettings_STATUS populates our ManagedIdentitySettings from the provided source ManagedIdentitySettings_STATUS +func (settings *ManagedIdentitySettings) Initialize_From_ManagedIdentitySettings_STATUS(source *ManagedIdentitySettings_STATUS) error { + + // Resource + settings.Resource = genruntime.ClonePointerToString(source.Resource) + + // No error + return nil +} + +// Managed identity settings for upstream. +type ManagedIdentitySettings_STATUS struct { + // Resource: The Resource indicating the App ID URI of the target resource. + // It also appears in the aud (audience) claim of the issued token. + Resource *string `json:"resource,omitempty"` +} + +var _ genruntime.FromARMConverter = &ManagedIdentitySettings_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (settings *ManagedIdentitySettings_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ManagedIdentitySettings_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (settings *ManagedIdentitySettings_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ManagedIdentitySettings_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ManagedIdentitySettings_STATUS, got %T", armInput) + } + + // Set property "Resource": + if typedInput.Resource != nil { + resource := *typedInput.Resource + settings.Resource = &resource + } + + // No error + return nil +} + +// AssignProperties_From_ManagedIdentitySettings_STATUS populates our ManagedIdentitySettings_STATUS from the provided source ManagedIdentitySettings_STATUS +func (settings *ManagedIdentitySettings_STATUS) AssignProperties_From_ManagedIdentitySettings_STATUS(source *storage.ManagedIdentitySettings_STATUS) error { + + // Resource + settings.Resource = genruntime.ClonePointerToString(source.Resource) + + // No error + return nil +} + +// AssignProperties_To_ManagedIdentitySettings_STATUS populates the provided destination ManagedIdentitySettings_STATUS from our ManagedIdentitySettings_STATUS +func (settings *ManagedIdentitySettings_STATUS) AssignProperties_To_ManagedIdentitySettings_STATUS(destination *storage.ManagedIdentitySettings_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Resource + destination.Resource = genruntime.ClonePointerToString(settings.Resource) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Upstream auth type enum. +// +kubebuilder:validation:Enum={"ManagedIdentity","None"} +type UpstreamAuthType string + +const ( + UpstreamAuthType_ManagedIdentity = UpstreamAuthType("ManagedIdentity") + UpstreamAuthType_None = UpstreamAuthType("None") +) + +// Mapping from string to UpstreamAuthType +var upstreamAuthType_Values = map[string]UpstreamAuthType{ + "managedidentity": UpstreamAuthType_ManagedIdentity, + "none": UpstreamAuthType_None, +} + +// Upstream auth type enum. +type UpstreamAuthType_STATUS string + +const ( + UpstreamAuthType_STATUS_ManagedIdentity = UpstreamAuthType_STATUS("ManagedIdentity") + UpstreamAuthType_STATUS_None = UpstreamAuthType_STATUS("None") +) + +// Mapping from string to UpstreamAuthType_STATUS +var upstreamAuthType_STATUS_Values = map[string]UpstreamAuthType_STATUS{ + "managedidentity": UpstreamAuthType_STATUS_ManagedIdentity, + "none": UpstreamAuthType_STATUS_None, +} + +func init() { + SchemeBuilder.Register(&SignalR{}, &SignalRList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/signal_r_types_gen_test.go b/v2/api/signalrservice/v1api20240301/signal_r_types_gen_test.go new file mode 100644 index 00000000000..17e2270406f --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/signal_r_types_gen_test.go @@ -0,0 +1,4768 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20240301 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_IPRule_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IPRule to IPRule via AssignProperties_To_IPRule & AssignProperties_From_IPRule returns original", + prop.ForAll(RunPropertyAssignmentTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIPRule tests if a specific instance of IPRule can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIPRule(subject IPRule) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.IPRule + err := copied.AssignProperties_To_IPRule(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IPRule + err = actual.AssignProperties_From_IPRule(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule runs a test to see if a specific instance of IPRule round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule(subject IPRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule instances for property testing - lazily instantiated by IPRuleGenerator() +var ipRuleGenerator gopter.Gen + +// IPRuleGenerator returns a generator of IPRule instances for property testing. +func IPRuleGenerator() gopter.Gen { + if ipRuleGenerator != nil { + return ipRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule(generators) + ipRuleGenerator = gen.Struct(reflect.TypeOf(IPRule{}), generators) + + return ipRuleGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(ACLAction_Allow, ACLAction_Deny)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IPRule_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IPRule_STATUS to IPRule_STATUS via AssignProperties_To_IPRule_STATUS & AssignProperties_From_IPRule_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIPRule_STATUS tests if a specific instance of IPRule_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.IPRule_STATUS + err := copied.AssignProperties_To_IPRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IPRule_STATUS + err = actual.AssignProperties_From_IPRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule_STATUS runs a test to see if a specific instance of IPRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule_STATUS instances for property testing - lazily instantiated by IPRule_STATUSGenerator() +var ipRule_STATUSGenerator gopter.Gen + +// IPRule_STATUSGenerator returns a generator of IPRule_STATUS instances for property testing. +func IPRule_STATUSGenerator() gopter.Gen { + if ipRule_STATUSGenerator != nil { + return ipRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule_STATUS(generators) + ipRule_STATUSGenerator = gen.Struct(reflect.TypeOf(IPRule_STATUS{}), generators) + + return ipRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(ACLAction_STATUS_Allow, ACLAction_STATUS_Deny)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceCategory_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from LiveTraceCategory to LiveTraceCategory via AssignProperties_To_LiveTraceCategory & AssignProperties_From_LiveTraceCategory returns original", + prop.ForAll(RunPropertyAssignmentTestForLiveTraceCategory, LiveTraceCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForLiveTraceCategory tests if a specific instance of LiveTraceCategory can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForLiveTraceCategory(subject LiveTraceCategory) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.LiveTraceCategory + err := copied.AssignProperties_To_LiveTraceCategory(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual LiveTraceCategory + err = actual.AssignProperties_From_LiveTraceCategory(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_LiveTraceCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceCategory, LiveTraceCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceCategory runs a test to see if a specific instance of LiveTraceCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceCategory(subject LiveTraceCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceCategory + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceCategory instances for property testing - lazily instantiated by LiveTraceCategoryGenerator() +var liveTraceCategoryGenerator gopter.Gen + +// LiveTraceCategoryGenerator returns a generator of LiveTraceCategory instances for property testing. +func LiveTraceCategoryGenerator() gopter.Gen { + if liveTraceCategoryGenerator != nil { + return liveTraceCategoryGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceCategory(generators) + liveTraceCategoryGenerator = gen.Struct(reflect.TypeOf(LiveTraceCategory{}), generators) + + return liveTraceCategoryGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceCategory is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceCategory(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceCategory_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from LiveTraceCategory_STATUS to LiveTraceCategory_STATUS via AssignProperties_To_LiveTraceCategory_STATUS & AssignProperties_From_LiveTraceCategory_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForLiveTraceCategory_STATUS, LiveTraceCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForLiveTraceCategory_STATUS tests if a specific instance of LiveTraceCategory_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForLiveTraceCategory_STATUS(subject LiveTraceCategory_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.LiveTraceCategory_STATUS + err := copied.AssignProperties_To_LiveTraceCategory_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual LiveTraceCategory_STATUS + err = actual.AssignProperties_From_LiveTraceCategory_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_LiveTraceCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceCategory_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceCategory_STATUS, LiveTraceCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceCategory_STATUS runs a test to see if a specific instance of LiveTraceCategory_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceCategory_STATUS(subject LiveTraceCategory_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceCategory_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceCategory_STATUS instances for property testing - lazily instantiated by +// LiveTraceCategory_STATUSGenerator() +var liveTraceCategory_STATUSGenerator gopter.Gen + +// LiveTraceCategory_STATUSGenerator returns a generator of LiveTraceCategory_STATUS instances for property testing. +func LiveTraceCategory_STATUSGenerator() gopter.Gen { + if liveTraceCategory_STATUSGenerator != nil { + return liveTraceCategory_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS(generators) + liveTraceCategory_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceCategory_STATUS{}), generators) + + return liveTraceCategory_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceConfiguration_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from LiveTraceConfiguration to LiveTraceConfiguration via AssignProperties_To_LiveTraceConfiguration & AssignProperties_From_LiveTraceConfiguration returns original", + prop.ForAll(RunPropertyAssignmentTestForLiveTraceConfiguration, LiveTraceConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForLiveTraceConfiguration tests if a specific instance of LiveTraceConfiguration can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForLiveTraceConfiguration(subject LiveTraceConfiguration) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.LiveTraceConfiguration + err := copied.AssignProperties_To_LiveTraceConfiguration(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual LiveTraceConfiguration + err = actual.AssignProperties_From_LiveTraceConfiguration(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_LiveTraceConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceConfiguration, LiveTraceConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceConfiguration runs a test to see if a specific instance of LiveTraceConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceConfiguration(subject LiveTraceConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceConfiguration + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceConfiguration instances for property testing - lazily instantiated by +// LiveTraceConfigurationGenerator() +var liveTraceConfigurationGenerator gopter.Gen + +// LiveTraceConfigurationGenerator returns a generator of LiveTraceConfiguration instances for property testing. +// We first initialize liveTraceConfigurationGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func LiveTraceConfigurationGenerator() gopter.Gen { + if liveTraceConfigurationGenerator != nil { + return liveTraceConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration(generators) + liveTraceConfigurationGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration(generators) + AddRelatedPropertyGeneratorsForLiveTraceConfiguration(generators) + liveTraceConfigurationGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration{}), generators) + + return liveTraceConfigurationGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceConfiguration is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceConfiguration(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForLiveTraceConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForLiveTraceConfiguration(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(LiveTraceCategoryGenerator()) +} + +func Test_LiveTraceConfiguration_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from LiveTraceConfiguration_STATUS to LiveTraceConfiguration_STATUS via AssignProperties_To_LiveTraceConfiguration_STATUS & AssignProperties_From_LiveTraceConfiguration_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForLiveTraceConfiguration_STATUS, LiveTraceConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForLiveTraceConfiguration_STATUS tests if a specific instance of LiveTraceConfiguration_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForLiveTraceConfiguration_STATUS(subject LiveTraceConfiguration_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.LiveTraceConfiguration_STATUS + err := copied.AssignProperties_To_LiveTraceConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual LiveTraceConfiguration_STATUS + err = actual.AssignProperties_From_LiveTraceConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_LiveTraceConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceConfiguration_STATUS, LiveTraceConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceConfiguration_STATUS runs a test to see if a specific instance of LiveTraceConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceConfiguration_STATUS(subject LiveTraceConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceConfiguration_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceConfiguration_STATUS instances for property testing - lazily instantiated by +// LiveTraceConfiguration_STATUSGenerator() +var liveTraceConfiguration_STATUSGenerator gopter.Gen + +// LiveTraceConfiguration_STATUSGenerator returns a generator of LiveTraceConfiguration_STATUS instances for property testing. +// We first initialize liveTraceConfiguration_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func LiveTraceConfiguration_STATUSGenerator() gopter.Gen { + if liveTraceConfiguration_STATUSGenerator != nil { + return liveTraceConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + liveTraceConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + liveTraceConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration_STATUS{}), generators) + + return liveTraceConfiguration_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(LiveTraceCategory_STATUSGenerator()) +} + +func Test_ManagedIdentity_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentity to ManagedIdentity via AssignProperties_To_ManagedIdentity & AssignProperties_From_ManagedIdentity returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentity, ManagedIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentity tests if a specific instance of ManagedIdentity can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentity(subject ManagedIdentity) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentity + err := copied.AssignProperties_To_ManagedIdentity(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentity + err = actual.AssignProperties_From_ManagedIdentity(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ManagedIdentity_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentity, ManagedIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentity runs a test to see if a specific instance of ManagedIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentity(subject ManagedIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentity + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentity instances for property testing - lazily instantiated by ManagedIdentityGenerator() +var managedIdentityGenerator gopter.Gen + +// ManagedIdentityGenerator returns a generator of ManagedIdentity instances for property testing. +// We first initialize managedIdentityGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func ManagedIdentityGenerator() gopter.Gen { + if managedIdentityGenerator != nil { + return managedIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity(generators) + managedIdentityGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity(generators) + AddRelatedPropertyGeneratorsForManagedIdentity(generators) + managedIdentityGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity{}), generators) + + return managedIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(ManagedIdentityType_None, ManagedIdentityType_SystemAssigned, ManagedIdentityType_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForManagedIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_ManagedIdentitySettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentitySettings to ManagedIdentitySettings via AssignProperties_To_ManagedIdentitySettings & AssignProperties_From_ManagedIdentitySettings returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentitySettings, ManagedIdentitySettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentitySettings tests if a specific instance of ManagedIdentitySettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentitySettings(subject ManagedIdentitySettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentitySettings + err := copied.AssignProperties_To_ManagedIdentitySettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentitySettings + err = actual.AssignProperties_From_ManagedIdentitySettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ManagedIdentitySettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentitySettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentitySettings, ManagedIdentitySettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentitySettings runs a test to see if a specific instance of ManagedIdentitySettings round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentitySettings(subject ManagedIdentitySettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentitySettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentitySettings instances for property testing - lazily instantiated by +// ManagedIdentitySettingsGenerator() +var managedIdentitySettingsGenerator gopter.Gen + +// ManagedIdentitySettingsGenerator returns a generator of ManagedIdentitySettings instances for property testing. +func ManagedIdentitySettingsGenerator() gopter.Gen { + if managedIdentitySettingsGenerator != nil { + return managedIdentitySettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentitySettings(generators) + managedIdentitySettingsGenerator = gen.Struct(reflect.TypeOf(ManagedIdentitySettings{}), generators) + + return managedIdentitySettingsGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentitySettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentitySettings(gens map[string]gopter.Gen) { + gens["Resource"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ManagedIdentitySettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentitySettings_STATUS to ManagedIdentitySettings_STATUS via AssignProperties_To_ManagedIdentitySettings_STATUS & AssignProperties_From_ManagedIdentitySettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentitySettings_STATUS, ManagedIdentitySettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentitySettings_STATUS tests if a specific instance of ManagedIdentitySettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentitySettings_STATUS(subject ManagedIdentitySettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentitySettings_STATUS + err := copied.AssignProperties_To_ManagedIdentitySettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentitySettings_STATUS + err = actual.AssignProperties_From_ManagedIdentitySettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ManagedIdentitySettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentitySettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentitySettings_STATUS, ManagedIdentitySettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentitySettings_STATUS runs a test to see if a specific instance of ManagedIdentitySettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentitySettings_STATUS(subject ManagedIdentitySettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentitySettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentitySettings_STATUS instances for property testing - lazily instantiated by +// ManagedIdentitySettings_STATUSGenerator() +var managedIdentitySettings_STATUSGenerator gopter.Gen + +// ManagedIdentitySettings_STATUSGenerator returns a generator of ManagedIdentitySettings_STATUS instances for property testing. +func ManagedIdentitySettings_STATUSGenerator() gopter.Gen { + if managedIdentitySettings_STATUSGenerator != nil { + return managedIdentitySettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(generators) + managedIdentitySettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentitySettings_STATUS{}), generators) + + return managedIdentitySettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(gens map[string]gopter.Gen) { + gens["Resource"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ManagedIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ManagedIdentity_STATUS to ManagedIdentity_STATUS via AssignProperties_To_ManagedIdentity_STATUS & AssignProperties_From_ManagedIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForManagedIdentity_STATUS, ManagedIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForManagedIdentity_STATUS tests if a specific instance of ManagedIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForManagedIdentity_STATUS(subject ManagedIdentity_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ManagedIdentity_STATUS + err := copied.AssignProperties_To_ManagedIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ManagedIdentity_STATUS + err = actual.AssignProperties_From_ManagedIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ManagedIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentity_STATUS, ManagedIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentity_STATUS runs a test to see if a specific instance of ManagedIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentity_STATUS(subject ManagedIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentity_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentity_STATUS instances for property testing - lazily instantiated by +// ManagedIdentity_STATUSGenerator() +var managedIdentity_STATUSGenerator gopter.Gen + +// ManagedIdentity_STATUSGenerator returns a generator of ManagedIdentity_STATUS instances for property testing. +// We first initialize managedIdentity_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func ManagedIdentity_STATUSGenerator() gopter.Gen { + if managedIdentity_STATUSGenerator != nil { + return managedIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(generators) + managedIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(generators) + AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(generators) + managedIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity_STATUS{}), generators) + + return managedIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(ManagedIdentityType_STATUS_None, ManagedIdentityType_STATUS_SystemAssigned, ManagedIdentityType_STATUS_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForManagedIdentity_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityProperty_STATUSGenerator()) +} + +func Test_NetworkACL_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkACL to NetworkACL via AssignProperties_To_NetworkACL & AssignProperties_From_NetworkACL returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkACL, NetworkACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkACL tests if a specific instance of NetworkACL can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkACL(subject NetworkACL) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.NetworkACL + err := copied.AssignProperties_To_NetworkACL(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkACL + err = actual.AssignProperties_From_NetworkACL(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_NetworkACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of NetworkACL via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkACL, NetworkACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkACL runs a test to see if a specific instance of NetworkACL round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkACL(subject NetworkACL) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkACL + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkACL instances for property testing - lazily instantiated by NetworkACLGenerator() +var networkACLGenerator gopter.Gen + +// NetworkACLGenerator returns a generator of NetworkACL instances for property testing. +func NetworkACLGenerator() gopter.Gen { + if networkACLGenerator != nil { + return networkACLGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkACL(generators) + networkACLGenerator = gen.Struct(reflect.TypeOf(NetworkACL{}), generators) + + return networkACLGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkACL is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkACL(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) +} + +func Test_NetworkACL_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkACL_STATUS to NetworkACL_STATUS via AssignProperties_To_NetworkACL_STATUS & AssignProperties_From_NetworkACL_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkACL_STATUS, NetworkACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkACL_STATUS tests if a specific instance of NetworkACL_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkACL_STATUS(subject NetworkACL_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.NetworkACL_STATUS + err := copied.AssignProperties_To_NetworkACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkACL_STATUS + err = actual.AssignProperties_From_NetworkACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_NetworkACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of NetworkACL_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkACL_STATUS, NetworkACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkACL_STATUS runs a test to see if a specific instance of NetworkACL_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkACL_STATUS(subject NetworkACL_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkACL_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkACL_STATUS instances for property testing - lazily instantiated by NetworkACL_STATUSGenerator() +var networkACL_STATUSGenerator gopter.Gen + +// NetworkACL_STATUSGenerator returns a generator of NetworkACL_STATUS instances for property testing. +func NetworkACL_STATUSGenerator() gopter.Gen { + if networkACL_STATUSGenerator != nil { + return networkACL_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkACL_STATUS(generators) + networkACL_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkACL_STATUS{}), generators) + + return networkACL_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkACL_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkACL_STATUS(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) +} + +func Test_PrivateEndpointACL_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointACL to PrivateEndpointACL via AssignProperties_To_PrivateEndpointACL & AssignProperties_From_PrivateEndpointACL returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointACL, PrivateEndpointACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointACL tests if a specific instance of PrivateEndpointACL can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointACL(subject PrivateEndpointACL) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointACL + err := copied.AssignProperties_To_PrivateEndpointACL(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointACL + err = actual.AssignProperties_From_PrivateEndpointACL(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_PrivateEndpointACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointACL via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointACL, PrivateEndpointACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointACL runs a test to see if a specific instance of PrivateEndpointACL round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointACL(subject PrivateEndpointACL) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointACL + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointACL instances for property testing - lazily instantiated by PrivateEndpointACLGenerator() +var privateEndpointACLGenerator gopter.Gen + +// PrivateEndpointACLGenerator returns a generator of PrivateEndpointACL instances for property testing. +func PrivateEndpointACLGenerator() gopter.Gen { + if privateEndpointACLGenerator != nil { + return privateEndpointACLGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointACL(generators) + privateEndpointACLGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointACL{}), generators) + + return privateEndpointACLGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointACL is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointACL(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_ClientConnection, + SignalRRequestType_RESTAPI, + SignalRRequestType_ServerConnection, + SignalRRequestType_Trace)) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointACL_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointACL_STATUS to PrivateEndpointACL_STATUS via AssignProperties_To_PrivateEndpointACL_STATUS & AssignProperties_From_PrivateEndpointACL_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointACL_STATUS, PrivateEndpointACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointACL_STATUS tests if a specific instance of PrivateEndpointACL_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointACL_STATUS(subject PrivateEndpointACL_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointACL_STATUS + err := copied.AssignProperties_To_PrivateEndpointACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointACL_STATUS + err = actual.AssignProperties_From_PrivateEndpointACL_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_PrivateEndpointACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointACL_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointACL_STATUS, PrivateEndpointACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointACL_STATUS runs a test to see if a specific instance of PrivateEndpointACL_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointACL_STATUS(subject PrivateEndpointACL_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointACL_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointACL_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointACL_STATUSGenerator() +var privateEndpointACL_STATUSGenerator gopter.Gen + +// PrivateEndpointACL_STATUSGenerator returns a generator of PrivateEndpointACL_STATUS instances for property testing. +func PrivateEndpointACL_STATUSGenerator() gopter.Gen { + if privateEndpointACL_STATUSGenerator != nil { + return privateEndpointACL_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(generators) + privateEndpointACL_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointACL_STATUS{}), generators) + + return privateEndpointACL_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) + gens["Deny"] = gen.SliceOf(gen.OneConstOf( + SignalRRequestType_STATUS_ClientConnection, + SignalRRequestType_STATUS_RESTAPI, + SignalRRequestType_STATUS_ServerConnection, + SignalRRequestType_STATUS_Trace)) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded to PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded via AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded & AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded tests if a specific instance of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(subject PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err = actual.AssignProperties_From_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded runs a test to see if a specific instance of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(subject PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded instances for property testing - lazily +// instantiated by PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator() +var privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator gopter.Gen + +// PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator returns a generator of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded instances for property testing. +func PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator() gopter.Gen { + if privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator != nil { + return privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(generators) + privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded{}), generators) + + return privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogCategory_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogCategory to ResourceLogCategory via AssignProperties_To_ResourceLogCategory & AssignProperties_From_ResourceLogCategory returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogCategory, ResourceLogCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogCategory tests if a specific instance of ResourceLogCategory can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogCategory(subject ResourceLogCategory) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogCategory + err := copied.AssignProperties_To_ResourceLogCategory(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogCategory + err = actual.AssignProperties_From_ResourceLogCategory(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceLogCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory, ResourceLogCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory runs a test to see if a specific instance of ResourceLogCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory(subject ResourceLogCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogCategory instances for property testing - lazily instantiated by +// ResourceLogCategoryGenerator() +var resourceLogCategoryGenerator gopter.Gen + +// ResourceLogCategoryGenerator returns a generator of ResourceLogCategory instances for property testing. +func ResourceLogCategoryGenerator() gopter.Gen { + if resourceLogCategoryGenerator != nil { + return resourceLogCategoryGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceLogCategory(generators) + resourceLogCategoryGenerator = gen.Struct(reflect.TypeOf(ResourceLogCategory{}), generators) + + return resourceLogCategoryGenerator +} + +// AddIndependentPropertyGeneratorsForResourceLogCategory is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceLogCategory(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogCategory_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogCategory_STATUS to ResourceLogCategory_STATUS via AssignProperties_To_ResourceLogCategory_STATUS & AssignProperties_From_ResourceLogCategory_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogCategory_STATUS, ResourceLogCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogCategory_STATUS tests if a specific instance of ResourceLogCategory_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogCategory_STATUS(subject ResourceLogCategory_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogCategory_STATUS + err := copied.AssignProperties_To_ResourceLogCategory_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogCategory_STATUS + err = actual.AssignProperties_From_ResourceLogCategory_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceLogCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory_STATUS, ResourceLogCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory_STATUS runs a test to see if a specific instance of ResourceLogCategory_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory_STATUS(subject ResourceLogCategory_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogCategory_STATUS instances for property testing - lazily instantiated by +// ResourceLogCategory_STATUSGenerator() +var resourceLogCategory_STATUSGenerator gopter.Gen + +// ResourceLogCategory_STATUSGenerator returns a generator of ResourceLogCategory_STATUS instances for property testing. +func ResourceLogCategory_STATUSGenerator() gopter.Gen { + if resourceLogCategory_STATUSGenerator != nil { + return resourceLogCategory_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(generators) + resourceLogCategory_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceLogCategory_STATUS{}), generators) + + return resourceLogCategory_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogConfiguration_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogConfiguration to ResourceLogConfiguration via AssignProperties_To_ResourceLogConfiguration & AssignProperties_From_ResourceLogConfiguration returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogConfiguration, ResourceLogConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogConfiguration tests if a specific instance of ResourceLogConfiguration can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogConfiguration(subject ResourceLogConfiguration) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogConfiguration + err := copied.AssignProperties_To_ResourceLogConfiguration(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogConfiguration + err = actual.AssignProperties_From_ResourceLogConfiguration(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceLogConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogConfiguration, ResourceLogConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogConfiguration runs a test to see if a specific instance of ResourceLogConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogConfiguration(subject ResourceLogConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogConfiguration + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogConfiguration instances for property testing - lazily instantiated by +// ResourceLogConfigurationGenerator() +var resourceLogConfigurationGenerator gopter.Gen + +// ResourceLogConfigurationGenerator returns a generator of ResourceLogConfiguration instances for property testing. +func ResourceLogConfigurationGenerator() gopter.Gen { + if resourceLogConfigurationGenerator != nil { + return resourceLogConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForResourceLogConfiguration(generators) + resourceLogConfigurationGenerator = gen.Struct(reflect.TypeOf(ResourceLogConfiguration{}), generators) + + return resourceLogConfigurationGenerator +} + +// AddRelatedPropertyGeneratorsForResourceLogConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceLogConfiguration(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(ResourceLogCategoryGenerator()) +} + +func Test_ResourceLogConfiguration_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceLogConfiguration_STATUS to ResourceLogConfiguration_STATUS via AssignProperties_To_ResourceLogConfiguration_STATUS & AssignProperties_From_ResourceLogConfiguration_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceLogConfiguration_STATUS, ResourceLogConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceLogConfiguration_STATUS tests if a specific instance of ResourceLogConfiguration_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceLogConfiguration_STATUS(subject ResourceLogConfiguration_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ResourceLogConfiguration_STATUS + err := copied.AssignProperties_To_ResourceLogConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceLogConfiguration_STATUS + err = actual.AssignProperties_From_ResourceLogConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ResourceLogConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogConfiguration_STATUS, ResourceLogConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogConfiguration_STATUS runs a test to see if a specific instance of ResourceLogConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogConfiguration_STATUS(subject ResourceLogConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogConfiguration_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogConfiguration_STATUS instances for property testing - lazily instantiated by +// ResourceLogConfiguration_STATUSGenerator() +var resourceLogConfiguration_STATUSGenerator gopter.Gen + +// ResourceLogConfiguration_STATUSGenerator returns a generator of ResourceLogConfiguration_STATUS instances for property testing. +func ResourceLogConfiguration_STATUSGenerator() gopter.Gen { + if resourceLogConfiguration_STATUSGenerator != nil { + return resourceLogConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(generators) + resourceLogConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceLogConfiguration_STATUS{}), generators) + + return resourceLogConfiguration_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(ResourceLogCategory_STATUSGenerator()) +} + +func Test_ServerlessSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ServerlessSettings to ServerlessSettings via AssignProperties_To_ServerlessSettings & AssignProperties_From_ServerlessSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForServerlessSettings, ServerlessSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForServerlessSettings tests if a specific instance of ServerlessSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForServerlessSettings(subject ServerlessSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ServerlessSettings + err := copied.AssignProperties_To_ServerlessSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ServerlessSettings + err = actual.AssignProperties_From_ServerlessSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ServerlessSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessSettings, ServerlessSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessSettings runs a test to see if a specific instance of ServerlessSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessSettings(subject ServerlessSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessSettings instances for property testing - lazily instantiated by ServerlessSettingsGenerator() +var serverlessSettingsGenerator gopter.Gen + +// ServerlessSettingsGenerator returns a generator of ServerlessSettings instances for property testing. +func ServerlessSettingsGenerator() gopter.Gen { + if serverlessSettingsGenerator != nil { + return serverlessSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerlessSettings(generators) + serverlessSettingsGenerator = gen.Struct(reflect.TypeOf(ServerlessSettings{}), generators) + + return serverlessSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForServerlessSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerlessSettings(gens map[string]gopter.Gen) { + gens["ConnectionTimeoutInSeconds"] = gen.PtrOf(gen.Int()) +} + +func Test_ServerlessSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ServerlessSettings_STATUS to ServerlessSettings_STATUS via AssignProperties_To_ServerlessSettings_STATUS & AssignProperties_From_ServerlessSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForServerlessSettings_STATUS, ServerlessSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForServerlessSettings_STATUS tests if a specific instance of ServerlessSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForServerlessSettings_STATUS(subject ServerlessSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ServerlessSettings_STATUS + err := copied.AssignProperties_To_ServerlessSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ServerlessSettings_STATUS + err = actual.AssignProperties_From_ServerlessSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ServerlessSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessSettings_STATUS, ServerlessSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessSettings_STATUS runs a test to see if a specific instance of ServerlessSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessSettings_STATUS(subject ServerlessSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessSettings_STATUS instances for property testing - lazily instantiated by +// ServerlessSettings_STATUSGenerator() +var serverlessSettings_STATUSGenerator gopter.Gen + +// ServerlessSettings_STATUSGenerator returns a generator of ServerlessSettings_STATUS instances for property testing. +func ServerlessSettings_STATUSGenerator() gopter.Gen { + if serverlessSettings_STATUSGenerator != nil { + return serverlessSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerlessSettings_STATUS(generators) + serverlessSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerlessSettings_STATUS{}), generators) + + return serverlessSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForServerlessSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerlessSettings_STATUS(gens map[string]gopter.Gen) { + gens["ConnectionTimeoutInSeconds"] = gen.PtrOf(gen.Int()) +} + +func Test_ServerlessUpstreamSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ServerlessUpstreamSettings to ServerlessUpstreamSettings via AssignProperties_To_ServerlessUpstreamSettings & AssignProperties_From_ServerlessUpstreamSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForServerlessUpstreamSettings, ServerlessUpstreamSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForServerlessUpstreamSettings tests if a specific instance of ServerlessUpstreamSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForServerlessUpstreamSettings(subject ServerlessUpstreamSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ServerlessUpstreamSettings + err := copied.AssignProperties_To_ServerlessUpstreamSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ServerlessUpstreamSettings + err = actual.AssignProperties_From_ServerlessUpstreamSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ServerlessUpstreamSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessUpstreamSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessUpstreamSettings, ServerlessUpstreamSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessUpstreamSettings runs a test to see if a specific instance of ServerlessUpstreamSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessUpstreamSettings(subject ServerlessUpstreamSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessUpstreamSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessUpstreamSettings instances for property testing - lazily instantiated by +// ServerlessUpstreamSettingsGenerator() +var serverlessUpstreamSettingsGenerator gopter.Gen + +// ServerlessUpstreamSettingsGenerator returns a generator of ServerlessUpstreamSettings instances for property testing. +func ServerlessUpstreamSettingsGenerator() gopter.Gen { + if serverlessUpstreamSettingsGenerator != nil { + return serverlessUpstreamSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(generators) + serverlessUpstreamSettingsGenerator = gen.Struct(reflect.TypeOf(ServerlessUpstreamSettings{}), generators) + + return serverlessUpstreamSettingsGenerator +} + +// AddRelatedPropertyGeneratorsForServerlessUpstreamSettings is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(gens map[string]gopter.Gen) { + gens["Templates"] = gen.SliceOf(UpstreamTemplateGenerator()) +} + +func Test_ServerlessUpstreamSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ServerlessUpstreamSettings_STATUS to ServerlessUpstreamSettings_STATUS via AssignProperties_To_ServerlessUpstreamSettings_STATUS & AssignProperties_From_ServerlessUpstreamSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS, ServerlessUpstreamSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS tests if a specific instance of ServerlessUpstreamSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForServerlessUpstreamSettings_STATUS(subject ServerlessUpstreamSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ServerlessUpstreamSettings_STATUS + err := copied.AssignProperties_To_ServerlessUpstreamSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ServerlessUpstreamSettings_STATUS + err = actual.AssignProperties_From_ServerlessUpstreamSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ServerlessUpstreamSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessUpstreamSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessUpstreamSettings_STATUS, ServerlessUpstreamSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessUpstreamSettings_STATUS runs a test to see if a specific instance of ServerlessUpstreamSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessUpstreamSettings_STATUS(subject ServerlessUpstreamSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessUpstreamSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessUpstreamSettings_STATUS instances for property testing - lazily instantiated by +// ServerlessUpstreamSettings_STATUSGenerator() +var serverlessUpstreamSettings_STATUSGenerator gopter.Gen + +// ServerlessUpstreamSettings_STATUSGenerator returns a generator of ServerlessUpstreamSettings_STATUS instances for property testing. +func ServerlessUpstreamSettings_STATUSGenerator() gopter.Gen { + if serverlessUpstreamSettings_STATUSGenerator != nil { + return serverlessUpstreamSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(generators) + serverlessUpstreamSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerlessUpstreamSettings_STATUS{}), generators) + + return serverlessUpstreamSettings_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(gens map[string]gopter.Gen) { + gens["Templates"] = gen.SliceOf(UpstreamTemplate_STATUSGenerator()) +} + +func Test_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded to SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded via AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded & AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded returns original", + prop.ForAll(RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded tests if a specific instance of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(subject SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err := copied.AssignProperties_To_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err = actual.AssignProperties_From_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded runs a test to see if a specific instance of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded round trips to JSON and back losslessly +func RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(subject SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded instances for property testing - lazily +// instantiated by SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator() +var sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator gopter.Gen + +// SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator returns a generator of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded instances for property testing. +func SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator() gopter.Gen { + if sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator != nil { + return sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(generators) + sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator = gen.Struct(reflect.TypeOf(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded{}), generators) + + return sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator +} + +// AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalR_WhenConvertedToHub_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + parameters.MinSuccessfulTests = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR to hub returns original", + prop.ForAll(RunResourceConversionTestForSignalR, SignalRGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForSignalR tests if a specific instance of SignalR round trips to the hub storage version and back losslessly +func RunResourceConversionTestForSignalR(subject SignalR) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.SignalR + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual SignalR + err = actual.ConvertFrom(&hub) + if err != nil { + return err.Error() + } + + // Compare actual with what we started with + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalR_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR to SignalR via AssignProperties_To_SignalR & AssignProperties_From_SignalR returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalR, SignalRGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalR tests if a specific instance of SignalR can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalR(subject SignalR) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalR + err := copied.AssignProperties_To_SignalR(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalR + err = actual.AssignProperties_From_SignalR(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalR_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR, SignalRGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR runs a test to see if a specific instance of SignalR round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR(subject SignalR) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR instances for property testing - lazily instantiated by SignalRGenerator() +var signalRGenerator gopter.Gen + +// SignalRGenerator returns a generator of SignalR instances for property testing. +func SignalRGenerator() gopter.Gen { + if signalRGenerator != nil { + return signalRGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSignalR(generators) + signalRGenerator = gen.Struct(reflect.TypeOf(SignalR{}), generators) + + return signalRGenerator +} + +// AddRelatedPropertyGeneratorsForSignalR is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR(gens map[string]gopter.Gen) { + gens["Spec"] = SignalR_SpecGenerator() + gens["Status"] = SignalR_STATUSGenerator() +} + +func Test_SignalRCorsSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRCorsSettings to SignalRCorsSettings via AssignProperties_To_SignalRCorsSettings & AssignProperties_From_SignalRCorsSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRCorsSettings, SignalRCorsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRCorsSettings tests if a specific instance of SignalRCorsSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRCorsSettings(subject SignalRCorsSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRCorsSettings + err := copied.AssignProperties_To_SignalRCorsSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRCorsSettings + err = actual.AssignProperties_From_SignalRCorsSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRCorsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRCorsSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRCorsSettings, SignalRCorsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRCorsSettings runs a test to see if a specific instance of SignalRCorsSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRCorsSettings(subject SignalRCorsSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRCorsSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRCorsSettings instances for property testing - lazily instantiated by +// SignalRCorsSettingsGenerator() +var signalRCorsSettingsGenerator gopter.Gen + +// SignalRCorsSettingsGenerator returns a generator of SignalRCorsSettings instances for property testing. +func SignalRCorsSettingsGenerator() gopter.Gen { + if signalRCorsSettingsGenerator != nil { + return signalRCorsSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRCorsSettings(generators) + signalRCorsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRCorsSettings{}), generators) + + return signalRCorsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRCorsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRCorsSettings(gens map[string]gopter.Gen) { + gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_SignalRCorsSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRCorsSettings_STATUS to SignalRCorsSettings_STATUS via AssignProperties_To_SignalRCorsSettings_STATUS & AssignProperties_From_SignalRCorsSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRCorsSettings_STATUS, SignalRCorsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRCorsSettings_STATUS tests if a specific instance of SignalRCorsSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRCorsSettings_STATUS(subject SignalRCorsSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRCorsSettings_STATUS + err := copied.AssignProperties_To_SignalRCorsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRCorsSettings_STATUS + err = actual.AssignProperties_From_SignalRCorsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRCorsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRCorsSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRCorsSettings_STATUS, SignalRCorsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRCorsSettings_STATUS runs a test to see if a specific instance of SignalRCorsSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRCorsSettings_STATUS(subject SignalRCorsSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRCorsSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRCorsSettings_STATUS instances for property testing - lazily instantiated by +// SignalRCorsSettings_STATUSGenerator() +var signalRCorsSettings_STATUSGenerator gopter.Gen + +// SignalRCorsSettings_STATUSGenerator returns a generator of SignalRCorsSettings_STATUS instances for property testing. +func SignalRCorsSettings_STATUSGenerator() gopter.Gen { + if signalRCorsSettings_STATUSGenerator != nil { + return signalRCorsSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(generators) + signalRCorsSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRCorsSettings_STATUS{}), generators) + + return signalRCorsSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(gens map[string]gopter.Gen) { + gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_SignalRFeature_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRFeature to SignalRFeature via AssignProperties_To_SignalRFeature & AssignProperties_From_SignalRFeature returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRFeature, SignalRFeatureGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRFeature tests if a specific instance of SignalRFeature can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRFeature(subject SignalRFeature) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRFeature + err := copied.AssignProperties_To_SignalRFeature(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRFeature + err = actual.AssignProperties_From_SignalRFeature(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRFeature_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRFeature via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRFeature, SignalRFeatureGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRFeature runs a test to see if a specific instance of SignalRFeature round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRFeature(subject SignalRFeature) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRFeature + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRFeature instances for property testing - lazily instantiated by SignalRFeatureGenerator() +var signalRFeatureGenerator gopter.Gen + +// SignalRFeatureGenerator returns a generator of SignalRFeature instances for property testing. +func SignalRFeatureGenerator() gopter.Gen { + if signalRFeatureGenerator != nil { + return signalRFeatureGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRFeature(generators) + signalRFeatureGenerator = gen.Struct(reflect.TypeOf(SignalRFeature{}), generators) + + return signalRFeatureGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRFeature is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRFeature(gens map[string]gopter.Gen) { + gens["Flag"] = gen.PtrOf(gen.OneConstOf( + FeatureFlags_EnableConnectivityLogs, + FeatureFlags_EnableLiveTrace, + FeatureFlags_EnableMessagingLogs, + FeatureFlags_ServiceMode)) + gens["Properties"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRFeature_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRFeature_STATUS to SignalRFeature_STATUS via AssignProperties_To_SignalRFeature_STATUS & AssignProperties_From_SignalRFeature_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRFeature_STATUS, SignalRFeature_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRFeature_STATUS tests if a specific instance of SignalRFeature_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRFeature_STATUS(subject SignalRFeature_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRFeature_STATUS + err := copied.AssignProperties_To_SignalRFeature_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRFeature_STATUS + err = actual.AssignProperties_From_SignalRFeature_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRFeature_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRFeature_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRFeature_STATUS, SignalRFeature_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRFeature_STATUS runs a test to see if a specific instance of SignalRFeature_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRFeature_STATUS(subject SignalRFeature_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRFeature_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRFeature_STATUS instances for property testing - lazily instantiated by +// SignalRFeature_STATUSGenerator() +var signalRFeature_STATUSGenerator gopter.Gen + +// SignalRFeature_STATUSGenerator returns a generator of SignalRFeature_STATUS instances for property testing. +func SignalRFeature_STATUSGenerator() gopter.Gen { + if signalRFeature_STATUSGenerator != nil { + return signalRFeature_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(generators) + signalRFeature_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRFeature_STATUS{}), generators) + + return signalRFeature_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRFeature_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(gens map[string]gopter.Gen) { + gens["Flag"] = gen.PtrOf(gen.OneConstOf( + FeatureFlags_STATUS_EnableConnectivityLogs, + FeatureFlags_STATUS_EnableLiveTrace, + FeatureFlags_STATUS_EnableMessagingLogs, + FeatureFlags_STATUS_ServiceMode)) + gens["Properties"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRNetworkACLs_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRNetworkACLs to SignalRNetworkACLs via AssignProperties_To_SignalRNetworkACLs & AssignProperties_From_SignalRNetworkACLs returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRNetworkACLs, SignalRNetworkACLsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRNetworkACLs tests if a specific instance of SignalRNetworkACLs can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRNetworkACLs(subject SignalRNetworkACLs) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRNetworkACLs + err := copied.AssignProperties_To_SignalRNetworkACLs(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRNetworkACLs + err = actual.AssignProperties_From_SignalRNetworkACLs(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRNetworkACLs_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRNetworkACLs via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRNetworkACLs, SignalRNetworkACLsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRNetworkACLs runs a test to see if a specific instance of SignalRNetworkACLs round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRNetworkACLs(subject SignalRNetworkACLs) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRNetworkACLs + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRNetworkACLs instances for property testing - lazily instantiated by SignalRNetworkACLsGenerator() +var signalRNetworkACLsGenerator gopter.Gen + +// SignalRNetworkACLsGenerator returns a generator of SignalRNetworkACLs instances for property testing. +// We first initialize signalRNetworkACLsGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRNetworkACLsGenerator() gopter.Gen { + if signalRNetworkACLsGenerator != nil { + return signalRNetworkACLsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs(generators) + signalRNetworkACLsGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs(generators) + AddRelatedPropertyGeneratorsForSignalRNetworkACLs(generators) + signalRNetworkACLsGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs{}), generators) + + return signalRNetworkACLsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRNetworkACLs is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(ACLAction_Allow, ACLAction_Deny)) +} + +// AddRelatedPropertyGeneratorsForSignalRNetworkACLs is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) + gens["PrivateEndpoints"] = gen.SliceOf(PrivateEndpointACLGenerator()) + gens["PublicNetwork"] = gen.PtrOf(NetworkACLGenerator()) +} + +func Test_SignalRNetworkACLs_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRNetworkACLs_STATUS to SignalRNetworkACLs_STATUS via AssignProperties_To_SignalRNetworkACLs_STATUS & AssignProperties_From_SignalRNetworkACLs_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS, SignalRNetworkACLs_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS tests if a specific instance of SignalRNetworkACLs_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRNetworkACLs_STATUS(subject SignalRNetworkACLs_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRNetworkACLs_STATUS + err := copied.AssignProperties_To_SignalRNetworkACLs_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRNetworkACLs_STATUS + err = actual.AssignProperties_From_SignalRNetworkACLs_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRNetworkACLs_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRNetworkACLs_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRNetworkACLs_STATUS, SignalRNetworkACLs_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRNetworkACLs_STATUS runs a test to see if a specific instance of SignalRNetworkACLs_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRNetworkACLs_STATUS(subject SignalRNetworkACLs_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRNetworkACLs_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRNetworkACLs_STATUS instances for property testing - lazily instantiated by +// SignalRNetworkACLs_STATUSGenerator() +var signalRNetworkACLs_STATUSGenerator gopter.Gen + +// SignalRNetworkACLs_STATUSGenerator returns a generator of SignalRNetworkACLs_STATUS instances for property testing. +// We first initialize signalRNetworkACLs_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRNetworkACLs_STATUSGenerator() gopter.Gen { + if signalRNetworkACLs_STATUSGenerator != nil { + return signalRNetworkACLs_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + signalRNetworkACLs_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + signalRNetworkACLs_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs_STATUS{}), generators) + + return signalRNetworkACLs_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(ACLAction_STATUS_Allow, ACLAction_STATUS_Deny)) +} + +// AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) + gens["PrivateEndpoints"] = gen.SliceOf(PrivateEndpointACL_STATUSGenerator()) + gens["PublicNetwork"] = gen.PtrOf(NetworkACL_STATUSGenerator()) +} + +func Test_SignalROperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalROperatorSecrets to SignalROperatorSecrets via AssignProperties_To_SignalROperatorSecrets & AssignProperties_From_SignalROperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalROperatorSecrets, SignalROperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalROperatorSecrets tests if a specific instance of SignalROperatorSecrets can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalROperatorSecrets(subject SignalROperatorSecrets) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalROperatorSecrets + err := copied.AssignProperties_To_SignalROperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalROperatorSecrets + err = actual.AssignProperties_From_SignalROperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalROperatorSecrets_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalROperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalROperatorSecrets, SignalROperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalROperatorSecrets runs a test to see if a specific instance of SignalROperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalROperatorSecrets(subject SignalROperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalROperatorSecrets + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalROperatorSecrets instances for property testing - lazily instantiated by +// SignalROperatorSecretsGenerator() +var signalROperatorSecretsGenerator gopter.Gen + +// SignalROperatorSecretsGenerator returns a generator of SignalROperatorSecrets instances for property testing. +func SignalROperatorSecretsGenerator() gopter.Gen { + if signalROperatorSecretsGenerator != nil { + return signalROperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + signalROperatorSecretsGenerator = gen.Struct(reflect.TypeOf(SignalROperatorSecrets{}), generators) + + return signalROperatorSecretsGenerator +} + +func Test_SignalROperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalROperatorSpec to SignalROperatorSpec via AssignProperties_To_SignalROperatorSpec & AssignProperties_From_SignalROperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalROperatorSpec, SignalROperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalROperatorSpec tests if a specific instance of SignalROperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalROperatorSpec(subject SignalROperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalROperatorSpec + err := copied.AssignProperties_To_SignalROperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalROperatorSpec + err = actual.AssignProperties_From_SignalROperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalROperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalROperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalROperatorSpec, SignalROperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalROperatorSpec runs a test to see if a specific instance of SignalROperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalROperatorSpec(subject SignalROperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalROperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalROperatorSpec instances for property testing - lazily instantiated by +// SignalROperatorSpecGenerator() +var signalROperatorSpecGenerator gopter.Gen + +// SignalROperatorSpecGenerator returns a generator of SignalROperatorSpec instances for property testing. +func SignalROperatorSpecGenerator() gopter.Gen { + if signalROperatorSpecGenerator != nil { + return signalROperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSignalROperatorSpec(generators) + signalROperatorSpecGenerator = gen.Struct(reflect.TypeOf(SignalROperatorSpec{}), generators) + + return signalROperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForSignalROperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalROperatorSpec(gens map[string]gopter.Gen) { + gens["Secrets"] = gen.PtrOf(SignalROperatorSecretsGenerator()) +} + +func Test_SignalRTlsSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRTlsSettings to SignalRTlsSettings via AssignProperties_To_SignalRTlsSettings & AssignProperties_From_SignalRTlsSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRTlsSettings, SignalRTlsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRTlsSettings tests if a specific instance of SignalRTlsSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRTlsSettings(subject SignalRTlsSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRTlsSettings + err := copied.AssignProperties_To_SignalRTlsSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRTlsSettings + err = actual.AssignProperties_From_SignalRTlsSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRTlsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRTlsSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRTlsSettings, SignalRTlsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRTlsSettings runs a test to see if a specific instance of SignalRTlsSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRTlsSettings(subject SignalRTlsSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRTlsSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRTlsSettings instances for property testing - lazily instantiated by SignalRTlsSettingsGenerator() +var signalRTlsSettingsGenerator gopter.Gen + +// SignalRTlsSettingsGenerator returns a generator of SignalRTlsSettings instances for property testing. +func SignalRTlsSettingsGenerator() gopter.Gen { + if signalRTlsSettingsGenerator != nil { + return signalRTlsSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRTlsSettings(generators) + signalRTlsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings{}), generators) + + return signalRTlsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalRTlsSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalRTlsSettings_STATUS to SignalRTlsSettings_STATUS via AssignProperties_To_SignalRTlsSettings_STATUS & AssignProperties_From_SignalRTlsSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalRTlsSettings_STATUS, SignalRTlsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalRTlsSettings_STATUS tests if a specific instance of SignalRTlsSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalRTlsSettings_STATUS(subject SignalRTlsSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalRTlsSettings_STATUS + err := copied.AssignProperties_To_SignalRTlsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalRTlsSettings_STATUS + err = actual.AssignProperties_From_SignalRTlsSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalRTlsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRTlsSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRTlsSettings_STATUS, SignalRTlsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRTlsSettings_STATUS runs a test to see if a specific instance of SignalRTlsSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRTlsSettings_STATUS(subject SignalRTlsSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRTlsSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRTlsSettings_STATUS instances for property testing - lazily instantiated by +// SignalRTlsSettings_STATUSGenerator() +var signalRTlsSettings_STATUSGenerator gopter.Gen + +// SignalRTlsSettings_STATUSGenerator returns a generator of SignalRTlsSettings_STATUS instances for property testing. +func SignalRTlsSettings_STATUSGenerator() gopter.Gen { + if signalRTlsSettings_STATUSGenerator != nil { + return signalRTlsSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(generators) + signalRTlsSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings_STATUS{}), generators) + + return signalRTlsSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalR_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR_STATUS to SignalR_STATUS via AssignProperties_To_SignalR_STATUS & AssignProperties_From_SignalR_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalR_STATUS, SignalR_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalR_STATUS tests if a specific instance of SignalR_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalR_STATUS(subject SignalR_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalR_STATUS + err := copied.AssignProperties_To_SignalR_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalR_STATUS + err = actual.AssignProperties_From_SignalR_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalR_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR_STATUS, SignalR_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR_STATUS runs a test to see if a specific instance of SignalR_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR_STATUS(subject SignalR_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR_STATUS instances for property testing - lazily instantiated by SignalR_STATUSGenerator() +var signalR_STATUSGenerator gopter.Gen + +// SignalR_STATUSGenerator returns a generator of SignalR_STATUS instances for property testing. +// We first initialize signalR_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalR_STATUSGenerator() gopter.Gen { + if signalR_STATUSGenerator != nil { + return signalR_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_STATUS(generators) + signalR_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalR_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalR_STATUS(generators) + signalR_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalR_STATUS{}), generators) + + return signalR_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalR_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { + gens["DisableAadAuth"] = gen.PtrOf(gen.Bool()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["ExternalIP"] = gen.PtrOf(gen.AlphaString()) + gens["HostName"] = gen.PtrOf(gen.AlphaString()) + gens["HostNamePrefix"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Kind"] = gen.PtrOf(gen.OneConstOf(SignalrServiceKind_STATUS_RawWebSockets, SignalrServiceKind_STATUS_SignalR)) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ProvisioningState_STATUS_Canceled, + ProvisioningState_STATUS_Creating, + ProvisioningState_STATUS_Deleting, + ProvisioningState_STATUS_Failed, + ProvisioningState_STATUS_Moving, + ProvisioningState_STATUS_Running, + ProvisioningState_STATUS_Succeeded, + ProvisioningState_STATUS_Unknown, + ProvisioningState_STATUS_Updating)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["PublicPort"] = gen.PtrOf(gen.Int()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["ServerPort"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalR_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { + gens["Cors"] = gen.PtrOf(SignalRCorsSettings_STATUSGenerator()) + gens["Features"] = gen.SliceOf(SignalRFeature_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(ManagedIdentity_STATUSGenerator()) + gens["LiveTraceConfiguration"] = gen.PtrOf(LiveTraceConfiguration_STATUSGenerator()) + gens["NetworkACLs"] = gen.PtrOf(SignalRNetworkACLs_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator()) + gens["ResourceLogConfiguration"] = gen.PtrOf(ResourceLogConfiguration_STATUSGenerator()) + gens["Serverless"] = gen.PtrOf(ServerlessSettings_STATUSGenerator()) + gens["SharedPrivateLinkResources"] = gen.SliceOf(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) + gens["Tls"] = gen.PtrOf(SignalRTlsSettings_STATUSGenerator()) + gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettings_STATUSGenerator()) +} + +func Test_SignalR_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SignalR_Spec to SignalR_Spec via AssignProperties_To_SignalR_Spec & AssignProperties_From_SignalR_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForSignalR_Spec, SignalR_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSignalR_Spec tests if a specific instance of SignalR_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSignalR_Spec(subject SignalR_Spec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.SignalR_Spec + err := copied.AssignProperties_To_SignalR_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SignalR_Spec + err = actual.AssignProperties_From_SignalR_Spec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SignalR_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR_Spec, SignalR_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR_Spec runs a test to see if a specific instance of SignalR_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR_Spec(subject SignalR_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR_Spec instances for property testing - lazily instantiated by SignalR_SpecGenerator() +var signalR_SpecGenerator gopter.Gen + +// SignalR_SpecGenerator returns a generator of SignalR_Spec instances for property testing. +// We first initialize signalR_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalR_SpecGenerator() gopter.Gen { + if signalR_SpecGenerator != nil { + return signalR_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_Spec(generators) + signalR_SpecGenerator = gen.Struct(reflect.TypeOf(SignalR_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_Spec(generators) + AddRelatedPropertyGeneratorsForSignalR_Spec(generators) + signalR_SpecGenerator = gen.Struct(reflect.TypeOf(SignalR_Spec{}), generators) + + return signalR_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForSignalR_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["DisableAadAuth"] = gen.PtrOf(gen.Bool()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["Kind"] = gen.PtrOf(gen.OneConstOf(SignalrServiceKind_RawWebSockets, SignalrServiceKind_SignalR)) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalR_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { + gens["Cors"] = gen.PtrOf(SignalRCorsSettingsGenerator()) + gens["Features"] = gen.SliceOf(SignalRFeatureGenerator()) + gens["Identity"] = gen.PtrOf(ManagedIdentityGenerator()) + gens["LiveTraceConfiguration"] = gen.PtrOf(LiveTraceConfigurationGenerator()) + gens["NetworkACLs"] = gen.PtrOf(SignalRNetworkACLsGenerator()) + gens["OperatorSpec"] = gen.PtrOf(SignalROperatorSpecGenerator()) + gens["ResourceLogConfiguration"] = gen.PtrOf(ResourceLogConfigurationGenerator()) + gens["Serverless"] = gen.PtrOf(ServerlessSettingsGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSkuGenerator()) + gens["Tls"] = gen.PtrOf(SignalRTlsSettingsGenerator()) + gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettingsGenerator()) +} + +func Test_UpstreamAuthSettings_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamAuthSettings to UpstreamAuthSettings via AssignProperties_To_UpstreamAuthSettings & AssignProperties_From_UpstreamAuthSettings returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamAuthSettings, UpstreamAuthSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamAuthSettings tests if a specific instance of UpstreamAuthSettings can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamAuthSettings(subject UpstreamAuthSettings) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamAuthSettings + err := copied.AssignProperties_To_UpstreamAuthSettings(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamAuthSettings + err = actual.AssignProperties_From_UpstreamAuthSettings(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_UpstreamAuthSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamAuthSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamAuthSettings, UpstreamAuthSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamAuthSettings runs a test to see if a specific instance of UpstreamAuthSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamAuthSettings(subject UpstreamAuthSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamAuthSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamAuthSettings instances for property testing - lazily instantiated by +// UpstreamAuthSettingsGenerator() +var upstreamAuthSettingsGenerator gopter.Gen + +// UpstreamAuthSettingsGenerator returns a generator of UpstreamAuthSettings instances for property testing. +// We first initialize upstreamAuthSettingsGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamAuthSettingsGenerator() gopter.Gen { + if upstreamAuthSettingsGenerator != nil { + return upstreamAuthSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings(generators) + upstreamAuthSettingsGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings(generators) + AddRelatedPropertyGeneratorsForUpstreamAuthSettings(generators) + upstreamAuthSettingsGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings{}), generators) + + return upstreamAuthSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamAuthSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(UpstreamAuthType_ManagedIdentity, UpstreamAuthType_None)) +} + +// AddRelatedPropertyGeneratorsForUpstreamAuthSettings is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter.Gen) { + gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettingsGenerator()) +} + +func Test_UpstreamAuthSettings_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamAuthSettings_STATUS to UpstreamAuthSettings_STATUS via AssignProperties_To_UpstreamAuthSettings_STATUS & AssignProperties_From_UpstreamAuthSettings_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS, UpstreamAuthSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS tests if a specific instance of UpstreamAuthSettings_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamAuthSettings_STATUS(subject UpstreamAuthSettings_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamAuthSettings_STATUS + err := copied.AssignProperties_To_UpstreamAuthSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamAuthSettings_STATUS + err = actual.AssignProperties_From_UpstreamAuthSettings_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_UpstreamAuthSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamAuthSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamAuthSettings_STATUS, UpstreamAuthSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamAuthSettings_STATUS runs a test to see if a specific instance of UpstreamAuthSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamAuthSettings_STATUS(subject UpstreamAuthSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamAuthSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamAuthSettings_STATUS instances for property testing - lazily instantiated by +// UpstreamAuthSettings_STATUSGenerator() +var upstreamAuthSettings_STATUSGenerator gopter.Gen + +// UpstreamAuthSettings_STATUSGenerator returns a generator of UpstreamAuthSettings_STATUS instances for property testing. +// We first initialize upstreamAuthSettings_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamAuthSettings_STATUSGenerator() gopter.Gen { + if upstreamAuthSettings_STATUSGenerator != nil { + return upstreamAuthSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + upstreamAuthSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + upstreamAuthSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings_STATUS{}), generators) + + return upstreamAuthSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(UpstreamAuthType_STATUS_ManagedIdentity, UpstreamAuthType_STATUS_None)) +} + +// AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string]gopter.Gen) { + gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettings_STATUSGenerator()) +} + +func Test_UpstreamTemplate_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamTemplate to UpstreamTemplate via AssignProperties_To_UpstreamTemplate & AssignProperties_From_UpstreamTemplate returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamTemplate, UpstreamTemplateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamTemplate tests if a specific instance of UpstreamTemplate can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamTemplate(subject UpstreamTemplate) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamTemplate + err := copied.AssignProperties_To_UpstreamTemplate(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamTemplate + err = actual.AssignProperties_From_UpstreamTemplate(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_UpstreamTemplate_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamTemplate via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamTemplate, UpstreamTemplateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamTemplate runs a test to see if a specific instance of UpstreamTemplate round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamTemplate(subject UpstreamTemplate) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamTemplate + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamTemplate instances for property testing - lazily instantiated by UpstreamTemplateGenerator() +var upstreamTemplateGenerator gopter.Gen + +// UpstreamTemplateGenerator returns a generator of UpstreamTemplate instances for property testing. +// We first initialize upstreamTemplateGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamTemplateGenerator() gopter.Gen { + if upstreamTemplateGenerator != nil { + return upstreamTemplateGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate(generators) + upstreamTemplateGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate(generators) + AddRelatedPropertyGeneratorsForUpstreamTemplate(generators) + upstreamTemplateGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate{}), generators) + + return upstreamTemplateGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamTemplate is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) { + gens["CategoryPattern"] = gen.PtrOf(gen.AlphaString()) + gens["EventPattern"] = gen.PtrOf(gen.AlphaString()) + gens["HubPattern"] = gen.PtrOf(gen.AlphaString()) + gens["UrlTemplate"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamTemplate is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) { + gens["Auth"] = gen.PtrOf(UpstreamAuthSettingsGenerator()) +} + +func Test_UpstreamTemplate_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UpstreamTemplate_STATUS to UpstreamTemplate_STATUS via AssignProperties_To_UpstreamTemplate_STATUS & AssignProperties_From_UpstreamTemplate_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUpstreamTemplate_STATUS, UpstreamTemplate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUpstreamTemplate_STATUS tests if a specific instance of UpstreamTemplate_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUpstreamTemplate_STATUS(subject UpstreamTemplate_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UpstreamTemplate_STATUS + err := copied.AssignProperties_To_UpstreamTemplate_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UpstreamTemplate_STATUS + err = actual.AssignProperties_From_UpstreamTemplate_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_UpstreamTemplate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamTemplate_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamTemplate_STATUS, UpstreamTemplate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamTemplate_STATUS runs a test to see if a specific instance of UpstreamTemplate_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamTemplate_STATUS(subject UpstreamTemplate_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamTemplate_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamTemplate_STATUS instances for property testing - lazily instantiated by +// UpstreamTemplate_STATUSGenerator() +var upstreamTemplate_STATUSGenerator gopter.Gen + +// UpstreamTemplate_STATUSGenerator returns a generator of UpstreamTemplate_STATUS instances for property testing. +// We first initialize upstreamTemplate_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamTemplate_STATUSGenerator() gopter.Gen { + if upstreamTemplate_STATUSGenerator != nil { + return upstreamTemplate_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + upstreamTemplate_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + upstreamTemplate_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate_STATUS{}), generators) + + return upstreamTemplate_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopter.Gen) { + gens["CategoryPattern"] = gen.PtrOf(gen.AlphaString()) + gens["EventPattern"] = gen.PtrOf(gen.AlphaString()) + gens["HubPattern"] = gen.PtrOf(gen.AlphaString()) + gens["UrlTemplate"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopter.Gen) { + gens["Auth"] = gen.PtrOf(UpstreamAuthSettings_STATUSGenerator()) +} + +func Test_UserAssignedIdentityDetails_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserAssignedIdentityDetails to UserAssignedIdentityDetails via AssignProperties_To_UserAssignedIdentityDetails & AssignProperties_From_UserAssignedIdentityDetails returns original", + prop.ForAll(RunPropertyAssignmentTestForUserAssignedIdentityDetails, UserAssignedIdentityDetailsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserAssignedIdentityDetails tests if a specific instance of UserAssignedIdentityDetails can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserAssignedIdentityDetails(subject UserAssignedIdentityDetails) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UserAssignedIdentityDetails + err := copied.AssignProperties_To_UserAssignedIdentityDetails(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserAssignedIdentityDetails + err = actual.AssignProperties_From_UserAssignedIdentityDetails(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_UserAssignedIdentityDetails_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UserAssignedIdentityDetails via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserAssignedIdentityDetails, UserAssignedIdentityDetailsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserAssignedIdentityDetails runs a test to see if a specific instance of UserAssignedIdentityDetails round trips to JSON and back losslessly +func RunJSONSerializationTestForUserAssignedIdentityDetails(subject UserAssignedIdentityDetails) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserAssignedIdentityDetails + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UserAssignedIdentityDetails instances for property testing - lazily instantiated by +// UserAssignedIdentityDetailsGenerator() +var userAssignedIdentityDetailsGenerator gopter.Gen + +// UserAssignedIdentityDetailsGenerator returns a generator of UserAssignedIdentityDetails instances for property testing. +func UserAssignedIdentityDetailsGenerator() gopter.Gen { + if userAssignedIdentityDetailsGenerator != nil { + return userAssignedIdentityDetailsGenerator + } + + generators := make(map[string]gopter.Gen) + userAssignedIdentityDetailsGenerator = gen.Struct(reflect.TypeOf(UserAssignedIdentityDetails{}), generators) + + return userAssignedIdentityDetailsGenerator +} + +func Test_UserAssignedIdentityProperty_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserAssignedIdentityProperty_STATUS to UserAssignedIdentityProperty_STATUS via AssignProperties_To_UserAssignedIdentityProperty_STATUS & AssignProperties_From_UserAssignedIdentityProperty_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS, UserAssignedIdentityProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS tests if a specific instance of UserAssignedIdentityProperty_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserAssignedIdentityProperty_STATUS(subject UserAssignedIdentityProperty_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.UserAssignedIdentityProperty_STATUS + err := copied.AssignProperties_To_UserAssignedIdentityProperty_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserAssignedIdentityProperty_STATUS + err = actual.AssignProperties_From_UserAssignedIdentityProperty_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_UserAssignedIdentityProperty_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UserAssignedIdentityProperty_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS, UserAssignedIdentityProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS runs a test to see if a specific instance of UserAssignedIdentityProperty_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS(subject UserAssignedIdentityProperty_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserAssignedIdentityProperty_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UserAssignedIdentityProperty_STATUS instances for property testing - lazily instantiated by +// UserAssignedIdentityProperty_STATUSGenerator() +var userAssignedIdentityProperty_STATUSGenerator gopter.Gen + +// UserAssignedIdentityProperty_STATUSGenerator returns a generator of UserAssignedIdentityProperty_STATUS instances for property testing. +func UserAssignedIdentityProperty_STATUSGenerator() gopter.Gen { + if userAssignedIdentityProperty_STATUSGenerator != nil { + return userAssignedIdentityProperty_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS(generators) + userAssignedIdentityProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(UserAssignedIdentityProperty_STATUS{}), generators) + + return userAssignedIdentityProperty_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen.go b/v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen.go new file mode 100644 index 00000000000..0710a0feae8 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen.go @@ -0,0 +1,270 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources=customcertificates,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources={customcertificates/status,customcertificates/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Storage version of v1api20240301.CustomCertificate +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customCertificates/{certificateName} +type CustomCertificate struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec CustomCertificate_Spec `json:"spec,omitempty"` + Status CustomCertificate_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &CustomCertificate{} + +// GetConditions returns the conditions of the resource +func (certificate *CustomCertificate) GetConditions() conditions.Conditions { + return certificate.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (certificate *CustomCertificate) SetConditions(conditions conditions.Conditions) { + certificate.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &CustomCertificate{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (certificate *CustomCertificate) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if certificate.Spec.OperatorSpec == nil { + return nil + } + return certificate.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &CustomCertificate{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (certificate *CustomCertificate) SecretDestinationExpressions() []*core.DestinationExpression { + if certificate.Spec.OperatorSpec == nil { + return nil + } + return certificate.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &CustomCertificate{} + +// AzureName returns the Azure name of the resource +func (certificate *CustomCertificate) AzureName() string { + return certificate.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (certificate CustomCertificate) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (certificate *CustomCertificate) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (certificate *CustomCertificate) GetSpec() genruntime.ConvertibleSpec { + return &certificate.Spec +} + +// GetStatus returns the status of this resource +func (certificate *CustomCertificate) GetStatus() genruntime.ConvertibleStatus { + return &certificate.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (certificate *CustomCertificate) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/customCertificates" +func (certificate *CustomCertificate) GetType() string { + return "Microsoft.SignalRService/signalR/customCertificates" +} + +// NewEmptyStatus returns a new empty (blank) status +func (certificate *CustomCertificate) NewEmptyStatus() genruntime.ConvertibleStatus { + return &CustomCertificate_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (certificate *CustomCertificate) Owner() *genruntime.ResourceReference { + if certificate.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(certificate.Spec) + return certificate.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (certificate *CustomCertificate) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*CustomCertificate_STATUS); ok { + certificate.Status = *st + return nil + } + + // Convert status to required version + var st CustomCertificate_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + certificate.Status = st + return nil +} + +// Hub marks that this CustomCertificate is the hub type for conversion +func (certificate *CustomCertificate) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (certificate *CustomCertificate) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: certificate.Spec.OriginalVersion, + Kind: "CustomCertificate", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20240301.CustomCertificate +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customCertificates/{certificateName} +type CustomCertificateList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CustomCertificate `json:"items"` +} + +// Storage version of v1api20240301.APIVersion +// +kubebuilder:validation:Enum={"2024-03-01"} +type APIVersion string + +const APIVersion_Value = APIVersion("2024-03-01") + +// Storage version of v1api20240301.CustomCertificate_Spec +type CustomCertificate_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + KeyVaultBaseUri *string `json:"keyVaultBaseUri,omitempty" optionalConfigMapPair:"KeyVaultBaseUri"` + KeyVaultBaseUriFromConfig *genruntime.ConfigMapReference `json:"keyVaultBaseUriFromConfig,omitempty" optionalConfigMapPair:"KeyVaultBaseUri"` + KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"` + KeyVaultSecretVersion *string `json:"keyVaultSecretVersion,omitempty"` + OperatorSpec *CustomCertificateOperatorSpec `json:"operatorSpec,omitempty"` + OriginalVersion string `json:"originalVersion,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a signalrservice.azure.com/SignalR resource + Owner *genruntime.KnownResourceReference `group:"signalrservice.azure.com" json:"owner,omitempty" kind:"SignalR"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &CustomCertificate_Spec{} + +// ConvertSpecFrom populates our CustomCertificate_Spec from the provided source +func (certificate *CustomCertificate_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == certificate { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(certificate) +} + +// ConvertSpecTo populates the provided destination from our CustomCertificate_Spec +func (certificate *CustomCertificate_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == certificate { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(certificate) +} + +// Storage version of v1api20240301.CustomCertificate_STATUS +type CustomCertificate_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + Id *string `json:"id,omitempty"` + KeyVaultBaseUri *string `json:"keyVaultBaseUri,omitempty"` + KeyVaultSecretName *string `json:"keyVaultSecretName,omitempty"` + KeyVaultSecretVersion *string `json:"keyVaultSecretVersion,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &CustomCertificate_STATUS{} + +// ConvertStatusFrom populates our CustomCertificate_STATUS from the provided source +func (certificate *CustomCertificate_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == certificate { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(certificate) +} + +// ConvertStatusTo populates the provided destination from our CustomCertificate_STATUS +func (certificate *CustomCertificate_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == certificate { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(certificate) +} + +// Storage version of v1api20240301.CustomCertificateOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type CustomCertificateOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// Storage version of v1api20240301.SystemData_STATUS +// Metadata pertaining to creation and last modification of the resource. +type SystemData_STATUS struct { + CreatedAt *string `json:"createdAt,omitempty"` + CreatedBy *string `json:"createdBy,omitempty"` + CreatedByType *string `json:"createdByType,omitempty"` + LastModifiedAt *string `json:"lastModifiedAt,omitempty"` + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + LastModifiedByType *string `json:"lastModifiedByType,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +func init() { + SchemeBuilder.Register(&CustomCertificate{}, &CustomCertificateList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen_test.go b/v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen_test.go new file mode 100644 index 00000000000..af346c6d0b3 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/custom_certificate_types_gen_test.go @@ -0,0 +1,359 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomCertificate_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate, CustomCertificateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate runs a test to see if a specific instance of CustomCertificate round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate(subject CustomCertificate) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate instances for property testing - lazily instantiated by CustomCertificateGenerator() +var customCertificateGenerator gopter.Gen + +// CustomCertificateGenerator returns a generator of CustomCertificate instances for property testing. +func CustomCertificateGenerator() gopter.Gen { + if customCertificateGenerator != nil { + return customCertificateGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForCustomCertificate(generators) + customCertificateGenerator = gen.Struct(reflect.TypeOf(CustomCertificate{}), generators) + + return customCertificateGenerator +} + +// AddRelatedPropertyGeneratorsForCustomCertificate is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate(gens map[string]gopter.Gen) { + gens["Spec"] = CustomCertificate_SpecGenerator() + gens["Status"] = CustomCertificate_STATUSGenerator() +} + +func Test_CustomCertificateOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificateOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificateOperatorSpec, CustomCertificateOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificateOperatorSpec runs a test to see if a specific instance of CustomCertificateOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificateOperatorSpec(subject CustomCertificateOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificateOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificateOperatorSpec instances for property testing - lazily instantiated by +// CustomCertificateOperatorSpecGenerator() +var customCertificateOperatorSpecGenerator gopter.Gen + +// CustomCertificateOperatorSpecGenerator returns a generator of CustomCertificateOperatorSpec instances for property testing. +func CustomCertificateOperatorSpecGenerator() gopter.Gen { + if customCertificateOperatorSpecGenerator != nil { + return customCertificateOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + customCertificateOperatorSpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificateOperatorSpec{}), generators) + + return customCertificateOperatorSpecGenerator +} + +func Test_CustomCertificate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate_STATUS, CustomCertificate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate_STATUS runs a test to see if a specific instance of CustomCertificate_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate_STATUS(subject CustomCertificate_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate_STATUS instances for property testing - lazily instantiated by +// CustomCertificate_STATUSGenerator() +var customCertificate_STATUSGenerator gopter.Gen + +// CustomCertificate_STATUSGenerator returns a generator of CustomCertificate_STATUS instances for property testing. +// We first initialize customCertificate_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomCertificate_STATUSGenerator() gopter.Gen { + if customCertificate_STATUSGenerator != nil { + return customCertificate_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(generators) + customCertificate_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomCertificate_STATUS(generators) + customCertificate_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_STATUS{}), generators) + + return customCertificate_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificate_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificate_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultBaseUri"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretName"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretVersion"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomCertificate_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_CustomCertificate_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomCertificate_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomCertificate_Spec, CustomCertificate_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomCertificate_Spec runs a test to see if a specific instance of CustomCertificate_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomCertificate_Spec(subject CustomCertificate_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomCertificate_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomCertificate_Spec instances for property testing - lazily instantiated by +// CustomCertificate_SpecGenerator() +var customCertificate_SpecGenerator gopter.Gen + +// CustomCertificate_SpecGenerator returns a generator of CustomCertificate_Spec instances for property testing. +// We first initialize customCertificate_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomCertificate_SpecGenerator() gopter.Gen { + if customCertificate_SpecGenerator != nil { + return customCertificate_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_Spec(generators) + customCertificate_SpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomCertificate_Spec(generators) + AddRelatedPropertyGeneratorsForCustomCertificate_Spec(generators) + customCertificate_SpecGenerator = gen.Struct(reflect.TypeOf(CustomCertificate_Spec{}), generators) + + return customCertificate_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForCustomCertificate_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomCertificate_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["KeyVaultBaseUri"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretName"] = gen.PtrOf(gen.AlphaString()) + gens["KeyVaultSecretVersion"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForCustomCertificate_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomCertificate_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(CustomCertificateOperatorSpecGenerator()) +} + +func Test_SystemData_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SystemData_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSystemData_STATUS, SystemData_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSystemData_STATUS runs a test to see if a specific instance of SystemData_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSystemData_STATUS(subject SystemData_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SystemData_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SystemData_STATUS instances for property testing - lazily instantiated by SystemData_STATUSGenerator() +var systemData_STATUSGenerator gopter.Gen + +// SystemData_STATUSGenerator returns a generator of SystemData_STATUS instances for property testing. +func SystemData_STATUSGenerator() gopter.Gen { + if systemData_STATUSGenerator != nil { + return systemData_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSystemData_STATUS(generators) + systemData_STATUSGenerator = gen.Struct(reflect.TypeOf(SystemData_STATUS{}), generators) + + return systemData_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSystemData_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter.Gen) { + gens["CreatedAt"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedBy"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedByType"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedAt"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedBy"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedByType"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen.go b/v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen.go new file mode 100644 index 00000000000..ffcc5ecbb9c --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen.go @@ -0,0 +1,265 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources=customdomains,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources={customdomains/status,customdomains/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Storage version of v1api20240301.CustomDomain +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customDomains/{name} +type CustomDomain struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec CustomDomain_Spec `json:"spec,omitempty"` + Status CustomDomain_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &CustomDomain{} + +// GetConditions returns the conditions of the resource +func (domain *CustomDomain) GetConditions() conditions.Conditions { + return domain.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (domain *CustomDomain) SetConditions(conditions conditions.Conditions) { + domain.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &CustomDomain{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (domain *CustomDomain) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if domain.Spec.OperatorSpec == nil { + return nil + } + return domain.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &CustomDomain{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (domain *CustomDomain) SecretDestinationExpressions() []*core.DestinationExpression { + if domain.Spec.OperatorSpec == nil { + return nil + } + return domain.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &CustomDomain{} + +// AzureName returns the Azure name of the resource +func (domain *CustomDomain) AzureName() string { + return domain.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (domain CustomDomain) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (domain *CustomDomain) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (domain *CustomDomain) GetSpec() genruntime.ConvertibleSpec { + return &domain.Spec +} + +// GetStatus returns the status of this resource +func (domain *CustomDomain) GetStatus() genruntime.ConvertibleStatus { + return &domain.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (domain *CustomDomain) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/customDomains" +func (domain *CustomDomain) GetType() string { + return "Microsoft.SignalRService/signalR/customDomains" +} + +// NewEmptyStatus returns a new empty (blank) status +func (domain *CustomDomain) NewEmptyStatus() genruntime.ConvertibleStatus { + return &CustomDomain_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (domain *CustomDomain) Owner() *genruntime.ResourceReference { + if domain.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(domain.Spec) + return domain.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (domain *CustomDomain) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*CustomDomain_STATUS); ok { + domain.Status = *st + return nil + } + + // Convert status to required version + var st CustomDomain_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + domain.Status = st + return nil +} + +// Hub marks that this CustomDomain is the hub type for conversion +func (domain *CustomDomain) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (domain *CustomDomain) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: domain.Spec.OriginalVersion, + Kind: "CustomDomain", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20240301.CustomDomain +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/customDomains/{name} +type CustomDomainList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []CustomDomain `json:"items"` +} + +// Storage version of v1api20240301.CustomDomain_Spec +type CustomDomain_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + CustomCertificate *ResourceReference `json:"customCertificate,omitempty"` + DomainName *string `json:"domainName,omitempty"` + OperatorSpec *CustomDomainOperatorSpec `json:"operatorSpec,omitempty"` + OriginalVersion string `json:"originalVersion,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a signalrservice.azure.com/SignalR resource + Owner *genruntime.KnownResourceReference `group:"signalrservice.azure.com" json:"owner,omitempty" kind:"SignalR"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &CustomDomain_Spec{} + +// ConvertSpecFrom populates our CustomDomain_Spec from the provided source +func (domain *CustomDomain_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == domain { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(domain) +} + +// ConvertSpecTo populates the provided destination from our CustomDomain_Spec +func (domain *CustomDomain_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == domain { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(domain) +} + +// Storage version of v1api20240301.CustomDomain_STATUS +type CustomDomain_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + CustomCertificate *ResourceReference_STATUS `json:"customCertificate,omitempty"` + DomainName *string `json:"domainName,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &CustomDomain_STATUS{} + +// ConvertStatusFrom populates our CustomDomain_STATUS from the provided source +func (domain *CustomDomain_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == domain { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(domain) +} + +// ConvertStatusTo populates the provided destination from our CustomDomain_STATUS +func (domain *CustomDomain_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == domain { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(domain) +} + +// Storage version of v1api20240301.CustomDomainOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type CustomDomainOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// Storage version of v1api20240301.ResourceReference +// Reference to a resource. +type ResourceReference struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + + // Reference: Resource ID. + Reference *genruntime.ResourceReference `armReference:"Id" json:"reference,omitempty"` +} + +// Storage version of v1api20240301.ResourceReference_STATUS +// Reference to a resource. +type ResourceReference_STATUS struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +func init() { + SchemeBuilder.Register(&CustomDomain{}, &CustomDomainList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen_test.go b/v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen_test.go new file mode 100644 index 00000000000..26e0812b4c6 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/custom_domain_types_gen_test.go @@ -0,0 +1,406 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_CustomDomain_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain, CustomDomainGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain runs a test to see if a specific instance of CustomDomain round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain(subject CustomDomain) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain instances for property testing - lazily instantiated by CustomDomainGenerator() +var customDomainGenerator gopter.Gen + +// CustomDomainGenerator returns a generator of CustomDomain instances for property testing. +func CustomDomainGenerator() gopter.Gen { + if customDomainGenerator != nil { + return customDomainGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForCustomDomain(generators) + customDomainGenerator = gen.Struct(reflect.TypeOf(CustomDomain{}), generators) + + return customDomainGenerator +} + +// AddRelatedPropertyGeneratorsForCustomDomain is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain(gens map[string]gopter.Gen) { + gens["Spec"] = CustomDomain_SpecGenerator() + gens["Status"] = CustomDomain_STATUSGenerator() +} + +func Test_CustomDomainOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomainOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomainOperatorSpec, CustomDomainOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomainOperatorSpec runs a test to see if a specific instance of CustomDomainOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomainOperatorSpec(subject CustomDomainOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomainOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomainOperatorSpec instances for property testing - lazily instantiated by +// CustomDomainOperatorSpecGenerator() +var customDomainOperatorSpecGenerator gopter.Gen + +// CustomDomainOperatorSpecGenerator returns a generator of CustomDomainOperatorSpec instances for property testing. +func CustomDomainOperatorSpecGenerator() gopter.Gen { + if customDomainOperatorSpecGenerator != nil { + return customDomainOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + customDomainOperatorSpecGenerator = gen.Struct(reflect.TypeOf(CustomDomainOperatorSpec{}), generators) + + return customDomainOperatorSpecGenerator +} + +func Test_CustomDomain_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain_STATUS, CustomDomain_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain_STATUS runs a test to see if a specific instance of CustomDomain_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain_STATUS(subject CustomDomain_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain_STATUS instances for property testing - lazily instantiated by +// CustomDomain_STATUSGenerator() +var customDomain_STATUSGenerator gopter.Gen + +// CustomDomain_STATUSGenerator returns a generator of CustomDomain_STATUS instances for property testing. +// We first initialize customDomain_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomain_STATUSGenerator() gopter.Gen { + if customDomain_STATUSGenerator != nil { + return customDomain_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_STATUS(generators) + customDomain_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomain_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_STATUS(generators) + AddRelatedPropertyGeneratorsForCustomDomain_STATUS(generators) + customDomain_STATUSGenerator = gen.Struct(reflect.TypeOf(CustomDomain_STATUS{}), generators) + + return customDomain_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomain_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomain_STATUS(gens map[string]gopter.Gen) { + gens["DomainName"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForCustomDomain_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain_STATUS(gens map[string]gopter.Gen) { + gens["CustomCertificate"] = gen.PtrOf(ResourceReference_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_CustomDomain_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of CustomDomain_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForCustomDomain_Spec, CustomDomain_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForCustomDomain_Spec runs a test to see if a specific instance of CustomDomain_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForCustomDomain_Spec(subject CustomDomain_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual CustomDomain_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of CustomDomain_Spec instances for property testing - lazily instantiated by CustomDomain_SpecGenerator() +var customDomain_SpecGenerator gopter.Gen + +// CustomDomain_SpecGenerator returns a generator of CustomDomain_Spec instances for property testing. +// We first initialize customDomain_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func CustomDomain_SpecGenerator() gopter.Gen { + if customDomain_SpecGenerator != nil { + return customDomain_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_Spec(generators) + customDomain_SpecGenerator = gen.Struct(reflect.TypeOf(CustomDomain_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForCustomDomain_Spec(generators) + AddRelatedPropertyGeneratorsForCustomDomain_Spec(generators) + customDomain_SpecGenerator = gen.Struct(reflect.TypeOf(CustomDomain_Spec{}), generators) + + return customDomain_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForCustomDomain_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForCustomDomain_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["DomainName"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForCustomDomain_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForCustomDomain_Spec(gens map[string]gopter.Gen) { + gens["CustomCertificate"] = gen.PtrOf(ResourceReferenceGenerator()) + gens["OperatorSpec"] = gen.PtrOf(CustomDomainOperatorSpecGenerator()) +} + +func Test_ResourceReference_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceReference via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceReference, ResourceReferenceGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceReference runs a test to see if a specific instance of ResourceReference round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceReference(subject ResourceReference) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceReference + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceReference instances for property testing - lazily instantiated by ResourceReferenceGenerator() +var resourceReferenceGenerator gopter.Gen + +// ResourceReferenceGenerator returns a generator of ResourceReference instances for property testing. +func ResourceReferenceGenerator() gopter.Gen { + if resourceReferenceGenerator != nil { + return resourceReferenceGenerator + } + + generators := make(map[string]gopter.Gen) + resourceReferenceGenerator = gen.Struct(reflect.TypeOf(ResourceReference{}), generators) + + return resourceReferenceGenerator +} + +func Test_ResourceReference_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceReference_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceReference_STATUS, ResourceReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceReference_STATUS runs a test to see if a specific instance of ResourceReference_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceReference_STATUS(subject ResourceReference_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceReference_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceReference_STATUS instances for property testing - lazily instantiated by +// ResourceReference_STATUSGenerator() +var resourceReference_STATUSGenerator gopter.Gen + +// ResourceReference_STATUSGenerator returns a generator of ResourceReference_STATUS instances for property testing. +func ResourceReference_STATUSGenerator() gopter.Gen { + if resourceReference_STATUSGenerator != nil { + return resourceReference_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceReference_STATUS(generators) + resourceReference_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceReference_STATUS{}), generators) + + return resourceReference_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceReference_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceReference_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/groupversion_info_gen.go b/v2/api/signalrservice/v1api20240301/storage/groupversion_info_gen.go new file mode 100644 index 00000000000..bd6b4836dc7 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/groupversion_info_gen.go @@ -0,0 +1,32 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by azure-service-operator-codegen. DO NOT EDIT. + +// Package storage contains API Schema definitions for the signalrservice storage API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=signalrservice.azure.com +// +versionName=v1api20240301storage +package storage + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "signalrservice.azure.com", Version: "v1api20240301storage"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme + + localSchemeBuilder = SchemeBuilder.SchemeBuilder +) diff --git a/v2/api/signalrservice/v1api20240301/storage/replica_types_gen.go b/v2/api/signalrservice/v1api20240301/storage/replica_types_gen.go new file mode 100644 index 00000000000..71a627b1abb --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/replica_types_gen.go @@ -0,0 +1,275 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources=replicas,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources={replicas/status,replicas/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Storage version of v1api20240301.Replica +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/replicas/{replicaName} +type Replica struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Replica_Spec `json:"spec,omitempty"` + Status Replica_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Replica{} + +// GetConditions returns the conditions of the resource +func (replica *Replica) GetConditions() conditions.Conditions { + return replica.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (replica *Replica) SetConditions(conditions conditions.Conditions) { + replica.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &Replica{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (replica *Replica) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Replica{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (replica *Replica) SecretDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &Replica{} + +// AzureName returns the Azure name of the resource +func (replica *Replica) AzureName() string { + return replica.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (replica Replica) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (replica *Replica) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (replica *Replica) GetSpec() genruntime.ConvertibleSpec { + return &replica.Spec +} + +// GetStatus returns the status of this resource +func (replica *Replica) GetStatus() genruntime.ConvertibleStatus { + return &replica.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (replica *Replica) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR/replicas" +func (replica *Replica) GetType() string { + return "Microsoft.SignalRService/signalR/replicas" +} + +// NewEmptyStatus returns a new empty (blank) status +func (replica *Replica) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Replica_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (replica *Replica) Owner() *genruntime.ResourceReference { + if replica.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(replica.Spec) + return replica.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (replica *Replica) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Replica_STATUS); ok { + replica.Status = *st + return nil + } + + // Convert status to required version + var st Replica_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + replica.Status = st + return nil +} + +// Hub marks that this Replica is the hub type for conversion +func (replica *Replica) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (replica *Replica) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: replica.Spec.OriginalVersion, + Kind: "Replica", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20240301.Replica +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName}/replicas/{replicaName} +type ReplicaList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Replica `json:"items"` +} + +// Storage version of v1api20240301.Replica_Spec +type Replica_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + Location *string `json:"location,omitempty"` + OperatorSpec *ReplicaOperatorSpec `json:"operatorSpec,omitempty"` + OriginalVersion string `json:"originalVersion,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a signalrservice.azure.com/SignalR resource + Owner *genruntime.KnownResourceReference `group:"signalrservice.azure.com" json:"owner,omitempty" kind:"SignalR"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + ResourceStopped *string `json:"resourceStopped,omitempty"` + Sku *ResourceSku `json:"sku,omitempty"` + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &Replica_Spec{} + +// ConvertSpecFrom populates our Replica_Spec from the provided source +func (replica *Replica_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(replica) +} + +// ConvertSpecTo populates the provided destination from our Replica_Spec +func (replica *Replica_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(replica) +} + +// Storage version of v1api20240301.Replica_STATUS +type Replica_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + ResourceStopped *string `json:"resourceStopped,omitempty"` + Sku *ResourceSku_STATUS `json:"sku,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Replica_STATUS{} + +// ConvertStatusFrom populates our Replica_STATUS from the provided source +func (replica *Replica_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(replica) +} + +// ConvertStatusTo populates the provided destination from our Replica_STATUS +func (replica *Replica_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(replica) +} + +// Storage version of v1api20240301.ReplicaOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type ReplicaOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// Storage version of v1api20240301.ResourceSku +// The billing information of the resource. +type ResourceSku struct { + Capacity *int `json:"capacity,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +// Storage version of v1api20240301.ResourceSku_STATUS +// The billing information of the resource. +type ResourceSku_STATUS struct { + Capacity *int `json:"capacity,omitempty"` + Family *string `json:"family,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Size *string `json:"size,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +func init() { + SchemeBuilder.Register(&Replica{}, &ReplicaList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/replica_types_gen_test.go b/v2/api/signalrservice/v1api20240301/storage/replica_types_gen_test.go new file mode 100644 index 00000000000..f9fa8761977 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/replica_types_gen_test.go @@ -0,0 +1,426 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_Replica_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica runs a test to see if a specific instance of Replica round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica(subject Replica) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica instances for property testing - lazily instantiated by ReplicaGenerator() +var replicaGenerator gopter.Gen + +// ReplicaGenerator returns a generator of Replica instances for property testing. +func ReplicaGenerator() gopter.Gen { + if replicaGenerator != nil { + return replicaGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForReplica(generators) + replicaGenerator = gen.Struct(reflect.TypeOf(Replica{}), generators) + + return replicaGenerator +} + +// AddRelatedPropertyGeneratorsForReplica is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica(gens map[string]gopter.Gen) { + gens["Spec"] = Replica_SpecGenerator() + gens["Status"] = Replica_STATUSGenerator() +} + +func Test_ReplicaOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaOperatorSpec, ReplicaOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaOperatorSpec runs a test to see if a specific instance of ReplicaOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaOperatorSpec(subject ReplicaOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaOperatorSpec instances for property testing - lazily instantiated by +// ReplicaOperatorSpecGenerator() +var replicaOperatorSpecGenerator gopter.Gen + +// ReplicaOperatorSpecGenerator returns a generator of ReplicaOperatorSpec instances for property testing. +func ReplicaOperatorSpecGenerator() gopter.Gen { + if replicaOperatorSpecGenerator != nil { + return replicaOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + replicaOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ReplicaOperatorSpec{}), generators) + + return replicaOperatorSpecGenerator +} + +func Test_Replica_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_STATUS runs a test to see if a specific instance of Replica_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_STATUS(subject Replica_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_STATUS instances for property testing - lazily instantiated by Replica_STATUSGenerator() +var replica_STATUSGenerator gopter.Gen + +// Replica_STATUSGenerator returns a generator of Replica_STATUS instances for property testing. +// We first initialize replica_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_STATUSGenerator() gopter.Gen { + if replica_STATUSGenerator != nil { + return replica_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + AddRelatedPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + return replica_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Sku"] = gen.PtrOf(ResourceSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_Replica_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_Spec runs a test to see if a specific instance of Replica_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_Spec(subject Replica_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_Spec instances for property testing - lazily instantiated by Replica_SpecGenerator() +var replica_SpecGenerator gopter.Gen + +// Replica_SpecGenerator returns a generator of Replica_Spec instances for property testing. +// We first initialize replica_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_SpecGenerator() gopter.Gen { + if replica_SpecGenerator != nil { + return replica_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + AddRelatedPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + return replica_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(ReplicaOperatorSpecGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSkuGenerator()) +} + +func Test_ResourceSku_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceSku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceSku, ResourceSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceSku runs a test to see if a specific instance of ResourceSku round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceSku(subject ResourceSku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceSku + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceSku instances for property testing - lazily instantiated by ResourceSkuGenerator() +var resourceSkuGenerator gopter.Gen + +// ResourceSkuGenerator returns a generator of ResourceSku instances for property testing. +func ResourceSkuGenerator() gopter.Gen { + if resourceSkuGenerator != nil { + return resourceSkuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceSku(generators) + resourceSkuGenerator = gen.Struct(reflect.TypeOf(ResourceSku{}), generators) + + return resourceSkuGenerator +} + +// AddIndependentPropertyGeneratorsForResourceSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceSku(gens map[string]gopter.Gen) { + gens["Capacity"] = gen.PtrOf(gen.Int()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceSku_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceSku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceSku_STATUS, ResourceSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceSku_STATUS runs a test to see if a specific instance of ResourceSku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceSku_STATUS(subject ResourceSku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceSku_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceSku_STATUS instances for property testing - lazily instantiated by ResourceSku_STATUSGenerator() +var resourceSku_STATUSGenerator gopter.Gen + +// ResourceSku_STATUSGenerator returns a generator of ResourceSku_STATUS instances for property testing. +func ResourceSku_STATUSGenerator() gopter.Gen { + if resourceSku_STATUSGenerator != nil { + return resourceSku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceSku_STATUS(generators) + resourceSku_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceSku_STATUS{}), generators) + + return resourceSku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceSku_STATUS(gens map[string]gopter.Gen) { + gens["Capacity"] = gen.PtrOf(gen.Int()) + gens["Family"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Size"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen.go b/v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen.go new file mode 100644 index 00000000000..27f71c10b39 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen.go @@ -0,0 +1,608 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources=signalrs,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=signalrservice.azure.com,resources={signalrs/status,signalrs/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Storage version of v1api20240301.SignalR +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName} +type SignalR struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec SignalR_Spec `json:"spec,omitempty"` + Status SignalR_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &SignalR{} + +// GetConditions returns the conditions of the resource +func (signalR *SignalR) GetConditions() conditions.Conditions { + return signalR.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (signalR *SignalR) SetConditions(conditions conditions.Conditions) { + signalR.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &SignalR{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (signalR *SignalR) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if signalR.Spec.OperatorSpec == nil { + return nil + } + return signalR.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &SignalR{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (signalR *SignalR) SecretDestinationExpressions() []*core.DestinationExpression { + if signalR.Spec.OperatorSpec == nil { + return nil + } + return signalR.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &SignalR{} + +// AzureName returns the Azure name of the resource +func (signalR *SignalR) AzureName() string { + return signalR.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-03-01" +func (signalR SignalR) GetAPIVersion() string { + return "2024-03-01" +} + +// GetResourceScope returns the scope of the resource +func (signalR *SignalR) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (signalR *SignalR) GetSpec() genruntime.ConvertibleSpec { + return &signalR.Spec +} + +// GetStatus returns the status of this resource +func (signalR *SignalR) GetStatus() genruntime.ConvertibleStatus { + return &signalR.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (signalR *SignalR) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.SignalRService/signalR" +func (signalR *SignalR) GetType() string { + return "Microsoft.SignalRService/signalR" +} + +// NewEmptyStatus returns a new empty (blank) status +func (signalR *SignalR) NewEmptyStatus() genruntime.ConvertibleStatus { + return &SignalR_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (signalR *SignalR) Owner() *genruntime.ResourceReference { + if signalR.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(signalR.Spec) + return signalR.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (signalR *SignalR) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*SignalR_STATUS); ok { + signalR.Status = *st + return nil + } + + // Convert status to required version + var st SignalR_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + signalR.Status = st + return nil +} + +// Hub marks that this SignalR is the hub type for conversion +func (signalR *SignalR) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (signalR *SignalR) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: signalR.Spec.OriginalVersion, + Kind: "SignalR", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20240301.SignalR +// Generator information: +// - Generated from: /signalr/resource-manager/Microsoft.SignalRService/stable/2024-03-01/signalr.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.SignalRService/signalR/{resourceName} +type SignalRList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []SignalR `json:"items"` +} + +// Storage version of v1api20240301.SignalR_Spec +type SignalR_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + Cors *SignalRCorsSettings `json:"cors,omitempty"` + DisableAadAuth *bool `json:"disableAadAuth,omitempty"` + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + Features []SignalRFeature `json:"features,omitempty"` + Identity *ManagedIdentity `json:"identity,omitempty"` + Kind *string `json:"kind,omitempty"` + LiveTraceConfiguration *LiveTraceConfiguration `json:"liveTraceConfiguration,omitempty"` + Location *string `json:"location,omitempty"` + NetworkACLs *SignalRNetworkACLs `json:"networkACLs,omitempty"` + OperatorSpec *SignalROperatorSpec `json:"operatorSpec,omitempty"` + OriginalVersion string `json:"originalVersion,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a resources.azure.com/ResourceGroup resource + Owner *genruntime.KnownResourceReference `group:"resources.azure.com" json:"owner,omitempty" kind:"ResourceGroup"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + ResourceLogConfiguration *ResourceLogConfiguration `json:"resourceLogConfiguration,omitempty"` + ResourceStopped *string `json:"resourceStopped,omitempty"` + Serverless *ServerlessSettings `json:"serverless,omitempty"` + Sku *ResourceSku `json:"sku,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Tls *SignalRTlsSettings `json:"tls,omitempty"` + Upstream *ServerlessUpstreamSettings `json:"upstream,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &SignalR_Spec{} + +// ConvertSpecFrom populates our SignalR_Spec from the provided source +func (signalR *SignalR_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == signalR { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(signalR) +} + +// ConvertSpecTo populates the provided destination from our SignalR_Spec +func (signalR *SignalR_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == signalR { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(signalR) +} + +// Storage version of v1api20240301.SignalR_STATUS +type SignalR_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + Cors *SignalRCorsSettings_STATUS `json:"cors,omitempty"` + DisableAadAuth *bool `json:"disableAadAuth,omitempty"` + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + ExternalIP *string `json:"externalIP,omitempty"` + Features []SignalRFeature_STATUS `json:"features,omitempty"` + HostName *string `json:"hostName,omitempty"` + HostNamePrefix *string `json:"hostNamePrefix,omitempty"` + Id *string `json:"id,omitempty"` + Identity *ManagedIdentity_STATUS `json:"identity,omitempty"` + Kind *string `json:"kind,omitempty"` + LiveTraceConfiguration *LiveTraceConfiguration_STATUS `json:"liveTraceConfiguration,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + NetworkACLs *SignalRNetworkACLs_STATUS `json:"networkACLs,omitempty"` + PrivateEndpointConnections []PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded `json:"privateEndpointConnections,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + PublicPort *int `json:"publicPort,omitempty"` + RegionEndpointEnabled *string `json:"regionEndpointEnabled,omitempty"` + ResourceLogConfiguration *ResourceLogConfiguration_STATUS `json:"resourceLogConfiguration,omitempty"` + ResourceStopped *string `json:"resourceStopped,omitempty"` + ServerPort *int `json:"serverPort,omitempty"` + Serverless *ServerlessSettings_STATUS `json:"serverless,omitempty"` + SharedPrivateLinkResources []SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded `json:"sharedPrivateLinkResources,omitempty"` + Sku *ResourceSku_STATUS `json:"sku,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Tls *SignalRTlsSettings_STATUS `json:"tls,omitempty"` + Type *string `json:"type,omitempty"` + Upstream *ServerlessUpstreamSettings_STATUS `json:"upstream,omitempty"` + Version *string `json:"version,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &SignalR_STATUS{} + +// ConvertStatusFrom populates our SignalR_STATUS from the provided source +func (signalR *SignalR_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == signalR { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(signalR) +} + +// ConvertStatusTo populates the provided destination from our SignalR_STATUS +func (signalR *SignalR_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == signalR { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(signalR) +} + +// Storage version of v1api20240301.LiveTraceConfiguration +// Live trace configuration of a Microsoft.SignalRService resource. +type LiveTraceConfiguration struct { + Categories []LiveTraceCategory `json:"categories,omitempty"` + Enabled *string `json:"enabled,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.LiveTraceConfiguration_STATUS +// Live trace configuration of a Microsoft.SignalRService resource. +type LiveTraceConfiguration_STATUS struct { + Categories []LiveTraceCategory_STATUS `json:"categories,omitempty"` + Enabled *string `json:"enabled,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ManagedIdentity +// A class represent managed identities used for request and response +type ManagedIdentity struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v1api20240301.ManagedIdentity_STATUS +// A class represent managed identities used for request and response +type ManagedIdentity_STATUS struct { + PrincipalId *string `json:"principalId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + TenantId *string `json:"tenantId,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities map[string]UserAssignedIdentityProperty_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v1api20240301.PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded +// A private endpoint connection to an azure resource +type PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ResourceLogConfiguration +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration struct { + Categories []ResourceLogCategory `json:"categories,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ResourceLogConfiguration_STATUS +// Resource log configuration of a Microsoft.SignalRService resource. +type ResourceLogConfiguration_STATUS struct { + Categories []ResourceLogCategory_STATUS `json:"categories,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ServerlessSettings +// Serverless settings. +type ServerlessSettings struct { + ConnectionTimeoutInSeconds *int `json:"connectionTimeoutInSeconds,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ServerlessSettings_STATUS +// Serverless settings. +type ServerlessSettings_STATUS struct { + ConnectionTimeoutInSeconds *int `json:"connectionTimeoutInSeconds,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ServerlessUpstreamSettings +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Templates []UpstreamTemplate `json:"templates,omitempty"` +} + +// Storage version of v1api20240301.ServerlessUpstreamSettings_STATUS +// The settings for the Upstream when the service is in server-less mode. +type ServerlessUpstreamSettings_STATUS struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Templates []UpstreamTemplate_STATUS `json:"templates,omitempty"` +} + +// Storage version of v1api20240301.SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded +// Describes a Shared Private Link Resource +type SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.SignalRCorsSettings +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings struct { + AllowedOrigins []string `json:"allowedOrigins,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.SignalRCorsSettings_STATUS +// Cross-Origin Resource Sharing (CORS) settings. +type SignalRCorsSettings_STATUS struct { + AllowedOrigins []string `json:"allowedOrigins,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.SignalRFeature +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature struct { + Flag *string `json:"flag,omitempty"` + Properties map[string]string `json:"properties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// Storage version of v1api20240301.SignalRFeature_STATUS +// Feature of a resource, which controls the runtime behavior. +type SignalRFeature_STATUS struct { + Flag *string `json:"flag,omitempty"` + Properties map[string]string `json:"properties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// Storage version of v1api20240301.SignalRNetworkACLs +// Network ACLs for the resource +type SignalRNetworkACLs struct { + DefaultAction *string `json:"defaultAction,omitempty"` + IpRules []IPRule `json:"ipRules,omitempty"` + PrivateEndpoints []PrivateEndpointACL `json:"privateEndpoints,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetwork *NetworkACL `json:"publicNetwork,omitempty"` +} + +// Storage version of v1api20240301.SignalRNetworkACLs_STATUS +// Network ACLs for the resource +type SignalRNetworkACLs_STATUS struct { + DefaultAction *string `json:"defaultAction,omitempty"` + IpRules []IPRule_STATUS `json:"ipRules,omitempty"` + PrivateEndpoints []PrivateEndpointACL_STATUS `json:"privateEndpoints,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetwork *NetworkACL_STATUS `json:"publicNetwork,omitempty"` +} + +// Storage version of v1api20240301.SignalROperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type SignalROperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` + Secrets *SignalROperatorSecrets `json:"secrets,omitempty"` +} + +// Storage version of v1api20240301.SignalRTlsSettings +// TLS settings for the resource +type SignalRTlsSettings struct { + ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.SignalRTlsSettings_STATUS +// TLS settings for the resource +type SignalRTlsSettings_STATUS struct { + ClientCertEnabled *bool `json:"clientCertEnabled,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.IPRule +// An IP rule +type IPRule struct { + Action *string `json:"action,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// Storage version of v1api20240301.IPRule_STATUS +// An IP rule +type IPRule_STATUS struct { + Action *string `json:"action,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// Storage version of v1api20240301.LiveTraceCategory +// Live trace category configuration of a Microsoft.SignalRService resource. +type LiveTraceCategory struct { + Enabled *string `json:"enabled,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.LiveTraceCategory_STATUS +// Live trace category configuration of a Microsoft.SignalRService resource. +type LiveTraceCategory_STATUS struct { + Enabled *string `json:"enabled,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.NetworkACL +// Network ACL +type NetworkACL struct { + Allow []string `json:"allow,omitempty"` + Deny []string `json:"deny,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.NetworkACL_STATUS +// Network ACL +type NetworkACL_STATUS struct { + Allow []string `json:"allow,omitempty"` + Deny []string `json:"deny,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.PrivateEndpointACL +// ACL for a private endpoint +type PrivateEndpointACL struct { + Allow []string `json:"allow,omitempty"` + Deny []string `json:"deny,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.PrivateEndpointACL_STATUS +// ACL for a private endpoint +type PrivateEndpointACL_STATUS struct { + Allow []string `json:"allow,omitempty"` + Deny []string `json:"deny,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ResourceLogCategory +// Resource log category configuration of a Microsoft.SignalRService resource. +type ResourceLogCategory struct { + Enabled *string `json:"enabled,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.ResourceLogCategory_STATUS +// Resource log category configuration of a Microsoft.SignalRService resource. +type ResourceLogCategory_STATUS struct { + Enabled *string `json:"enabled,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.SignalROperatorSecrets +type SignalROperatorSecrets struct { + PrimaryConnectionString *genruntime.SecretDestination `json:"primaryConnectionString,omitempty"` + PrimaryKey *genruntime.SecretDestination `json:"primaryKey,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecondaryConnectionString *genruntime.SecretDestination `json:"secondaryConnectionString,omitempty"` + SecondaryKey *genruntime.SecretDestination `json:"secondaryKey,omitempty"` +} + +// Storage version of v1api20240301.UpstreamTemplate +// Upstream template item settings. It defines the Upstream URL of the incoming requests. +// The template defines the pattern +// of the event, the hub or the category of the incoming request that matches current URL template. +type UpstreamTemplate struct { + Auth *UpstreamAuthSettings `json:"auth,omitempty"` + CategoryPattern *string `json:"categoryPattern,omitempty"` + EventPattern *string `json:"eventPattern,omitempty"` + HubPattern *string `json:"hubPattern,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + UrlTemplate *string `json:"urlTemplate,omitempty"` +} + +// Storage version of v1api20240301.UpstreamTemplate_STATUS +// Upstream template item settings. It defines the Upstream URL of the incoming requests. +// The template defines the pattern +// of the event, the hub or the category of the incoming request that matches current URL template. +type UpstreamTemplate_STATUS struct { + Auth *UpstreamAuthSettings_STATUS `json:"auth,omitempty"` + CategoryPattern *string `json:"categoryPattern,omitempty"` + EventPattern *string `json:"eventPattern,omitempty"` + HubPattern *string `json:"hubPattern,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + UrlTemplate *string `json:"urlTemplate,omitempty"` +} + +// Storage version of v1api20240301.UserAssignedIdentityDetails +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Reference genruntime.ResourceReference `armReference:"Reference" json:"reference,omitempty"` +} + +// Storage version of v1api20240301.UserAssignedIdentityProperty_STATUS +// Properties of user assigned identity. +type UserAssignedIdentityProperty_STATUS struct { + ClientId *string `json:"clientId,omitempty"` + PrincipalId *string `json:"principalId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20240301.UpstreamAuthSettings +// Upstream auth settings. If not set, no auth is used for upstream messages. +type UpstreamAuthSettings struct { + ManagedIdentity *ManagedIdentitySettings `json:"managedIdentity,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v1api20240301.UpstreamAuthSettings_STATUS +// Upstream auth settings. If not set, no auth is used for upstream messages. +type UpstreamAuthSettings_STATUS struct { + ManagedIdentity *ManagedIdentitySettings_STATUS `json:"managedIdentity,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v1api20240301.ManagedIdentitySettings +// Managed identity settings for upstream. +type ManagedIdentitySettings struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Resource *string `json:"resource,omitempty"` +} + +// Storage version of v1api20240301.ManagedIdentitySettings_STATUS +// Managed identity settings for upstream. +type ManagedIdentitySettings_STATUS struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Resource *string `json:"resource,omitempty"` +} + +func init() { + SchemeBuilder.Register(&SignalR{}, &SignalRList{}) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen_test.go b/v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen_test.go new file mode 100644 index 00000000000..2f7fa7d45f9 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/signal_r_types_gen_test.go @@ -0,0 +1,2870 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule runs a test to see if a specific instance of IPRule round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule(subject IPRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule instances for property testing - lazily instantiated by IPRuleGenerator() +var ipRuleGenerator gopter.Gen + +// IPRuleGenerator returns a generator of IPRule instances for property testing. +func IPRuleGenerator() gopter.Gen { + if ipRuleGenerator != nil { + return ipRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule(generators) + ipRuleGenerator = gen.Struct(reflect.TypeOf(IPRule{}), generators) + + return ipRuleGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule_STATUS runs a test to see if a specific instance of IPRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule_STATUS instances for property testing - lazily instantiated by IPRule_STATUSGenerator() +var ipRule_STATUSGenerator gopter.Gen + +// IPRule_STATUSGenerator returns a generator of IPRule_STATUS instances for property testing. +func IPRule_STATUSGenerator() gopter.Gen { + if ipRule_STATUSGenerator != nil { + return ipRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule_STATUS(generators) + ipRule_STATUSGenerator = gen.Struct(reflect.TypeOf(IPRule_STATUS{}), generators) + + return ipRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceCategory, LiveTraceCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceCategory runs a test to see if a specific instance of LiveTraceCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceCategory(subject LiveTraceCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceCategory + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceCategory instances for property testing - lazily instantiated by LiveTraceCategoryGenerator() +var liveTraceCategoryGenerator gopter.Gen + +// LiveTraceCategoryGenerator returns a generator of LiveTraceCategory instances for property testing. +func LiveTraceCategoryGenerator() gopter.Gen { + if liveTraceCategoryGenerator != nil { + return liveTraceCategoryGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceCategory(generators) + liveTraceCategoryGenerator = gen.Struct(reflect.TypeOf(LiveTraceCategory{}), generators) + + return liveTraceCategoryGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceCategory is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceCategory(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceCategory_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceCategory_STATUS, LiveTraceCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceCategory_STATUS runs a test to see if a specific instance of LiveTraceCategory_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceCategory_STATUS(subject LiveTraceCategory_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceCategory_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceCategory_STATUS instances for property testing - lazily instantiated by +// LiveTraceCategory_STATUSGenerator() +var liveTraceCategory_STATUSGenerator gopter.Gen + +// LiveTraceCategory_STATUSGenerator returns a generator of LiveTraceCategory_STATUS instances for property testing. +func LiveTraceCategory_STATUSGenerator() gopter.Gen { + if liveTraceCategory_STATUSGenerator != nil { + return liveTraceCategory_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS(generators) + liveTraceCategory_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceCategory_STATUS{}), generators) + + return liveTraceCategory_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceCategory_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_LiveTraceConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceConfiguration, LiveTraceConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceConfiguration runs a test to see if a specific instance of LiveTraceConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceConfiguration(subject LiveTraceConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceConfiguration + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceConfiguration instances for property testing - lazily instantiated by +// LiveTraceConfigurationGenerator() +var liveTraceConfigurationGenerator gopter.Gen + +// LiveTraceConfigurationGenerator returns a generator of LiveTraceConfiguration instances for property testing. +// We first initialize liveTraceConfigurationGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func LiveTraceConfigurationGenerator() gopter.Gen { + if liveTraceConfigurationGenerator != nil { + return liveTraceConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration(generators) + liveTraceConfigurationGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration(generators) + AddRelatedPropertyGeneratorsForLiveTraceConfiguration(generators) + liveTraceConfigurationGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration{}), generators) + + return liveTraceConfigurationGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceConfiguration is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceConfiguration(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForLiveTraceConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForLiveTraceConfiguration(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(LiveTraceCategoryGenerator()) +} + +func Test_LiveTraceConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of LiveTraceConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForLiveTraceConfiguration_STATUS, LiveTraceConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForLiveTraceConfiguration_STATUS runs a test to see if a specific instance of LiveTraceConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForLiveTraceConfiguration_STATUS(subject LiveTraceConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual LiveTraceConfiguration_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of LiveTraceConfiguration_STATUS instances for property testing - lazily instantiated by +// LiveTraceConfiguration_STATUSGenerator() +var liveTraceConfiguration_STATUSGenerator gopter.Gen + +// LiveTraceConfiguration_STATUSGenerator returns a generator of LiveTraceConfiguration_STATUS instances for property testing. +// We first initialize liveTraceConfiguration_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func LiveTraceConfiguration_STATUSGenerator() gopter.Gen { + if liveTraceConfiguration_STATUSGenerator != nil { + return liveTraceConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + liveTraceConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS(generators) + liveTraceConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(LiveTraceConfiguration_STATUS{}), generators) + + return liveTraceConfiguration_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForLiveTraceConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForLiveTraceConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(LiveTraceCategory_STATUSGenerator()) +} + +func Test_ManagedIdentity_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentity, ManagedIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentity runs a test to see if a specific instance of ManagedIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentity(subject ManagedIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentity + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentity instances for property testing - lazily instantiated by ManagedIdentityGenerator() +var managedIdentityGenerator gopter.Gen + +// ManagedIdentityGenerator returns a generator of ManagedIdentity instances for property testing. +// We first initialize managedIdentityGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func ManagedIdentityGenerator() gopter.Gen { + if managedIdentityGenerator != nil { + return managedIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity(generators) + managedIdentityGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity(generators) + AddRelatedPropertyGeneratorsForManagedIdentity(generators) + managedIdentityGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity{}), generators) + + return managedIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForManagedIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForManagedIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_ManagedIdentitySettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentitySettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentitySettings, ManagedIdentitySettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentitySettings runs a test to see if a specific instance of ManagedIdentitySettings round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentitySettings(subject ManagedIdentitySettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentitySettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentitySettings instances for property testing - lazily instantiated by +// ManagedIdentitySettingsGenerator() +var managedIdentitySettingsGenerator gopter.Gen + +// ManagedIdentitySettingsGenerator returns a generator of ManagedIdentitySettings instances for property testing. +func ManagedIdentitySettingsGenerator() gopter.Gen { + if managedIdentitySettingsGenerator != nil { + return managedIdentitySettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentitySettings(generators) + managedIdentitySettingsGenerator = gen.Struct(reflect.TypeOf(ManagedIdentitySettings{}), generators) + + return managedIdentitySettingsGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentitySettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentitySettings(gens map[string]gopter.Gen) { + gens["Resource"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ManagedIdentitySettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentitySettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentitySettings_STATUS, ManagedIdentitySettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentitySettings_STATUS runs a test to see if a specific instance of ManagedIdentitySettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentitySettings_STATUS(subject ManagedIdentitySettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentitySettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentitySettings_STATUS instances for property testing - lazily instantiated by +// ManagedIdentitySettings_STATUSGenerator() +var managedIdentitySettings_STATUSGenerator gopter.Gen + +// ManagedIdentitySettings_STATUSGenerator returns a generator of ManagedIdentitySettings_STATUS instances for property testing. +func ManagedIdentitySettings_STATUSGenerator() gopter.Gen { + if managedIdentitySettings_STATUSGenerator != nil { + return managedIdentitySettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(generators) + managedIdentitySettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentitySettings_STATUS{}), generators) + + return managedIdentitySettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentitySettings_STATUS(gens map[string]gopter.Gen) { + gens["Resource"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ManagedIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ManagedIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForManagedIdentity_STATUS, ManagedIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForManagedIdentity_STATUS runs a test to see if a specific instance of ManagedIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForManagedIdentity_STATUS(subject ManagedIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ManagedIdentity_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ManagedIdentity_STATUS instances for property testing - lazily instantiated by +// ManagedIdentity_STATUSGenerator() +var managedIdentity_STATUSGenerator gopter.Gen + +// ManagedIdentity_STATUSGenerator returns a generator of ManagedIdentity_STATUS instances for property testing. +// We first initialize managedIdentity_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func ManagedIdentity_STATUSGenerator() gopter.Gen { + if managedIdentity_STATUSGenerator != nil { + return managedIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(generators) + managedIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(generators) + AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(generators) + managedIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ManagedIdentity_STATUS{}), generators) + + return managedIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForManagedIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForManagedIdentity_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForManagedIdentity_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityProperty_STATUSGenerator()) +} + +func Test_NetworkACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of NetworkACL via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkACL, NetworkACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkACL runs a test to see if a specific instance of NetworkACL round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkACL(subject NetworkACL) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkACL + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkACL instances for property testing - lazily instantiated by NetworkACLGenerator() +var networkACLGenerator gopter.Gen + +// NetworkACLGenerator returns a generator of NetworkACL instances for property testing. +func NetworkACLGenerator() gopter.Gen { + if networkACLGenerator != nil { + return networkACLGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkACL(generators) + networkACLGenerator = gen.Struct(reflect.TypeOf(NetworkACL{}), generators) + + return networkACLGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkACL is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkACL(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.AlphaString()) + gens["Deny"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_NetworkACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of NetworkACL_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkACL_STATUS, NetworkACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkACL_STATUS runs a test to see if a specific instance of NetworkACL_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkACL_STATUS(subject NetworkACL_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkACL_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkACL_STATUS instances for property testing - lazily instantiated by NetworkACL_STATUSGenerator() +var networkACL_STATUSGenerator gopter.Gen + +// NetworkACL_STATUSGenerator returns a generator of NetworkACL_STATUS instances for property testing. +func NetworkACL_STATUSGenerator() gopter.Gen { + if networkACL_STATUSGenerator != nil { + return networkACL_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkACL_STATUS(generators) + networkACL_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkACL_STATUS{}), generators) + + return networkACL_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkACL_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkACL_STATUS(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.AlphaString()) + gens["Deny"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_PrivateEndpointACL_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointACL via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointACL, PrivateEndpointACLGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointACL runs a test to see if a specific instance of PrivateEndpointACL round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointACL(subject PrivateEndpointACL) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointACL + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointACL instances for property testing - lazily instantiated by PrivateEndpointACLGenerator() +var privateEndpointACLGenerator gopter.Gen + +// PrivateEndpointACLGenerator returns a generator of PrivateEndpointACL instances for property testing. +func PrivateEndpointACLGenerator() gopter.Gen { + if privateEndpointACLGenerator != nil { + return privateEndpointACLGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointACL(generators) + privateEndpointACLGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointACL{}), generators) + + return privateEndpointACLGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointACL is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointACL(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.AlphaString()) + gens["Deny"] = gen.SliceOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointACL_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointACL_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointACL_STATUS, PrivateEndpointACL_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointACL_STATUS runs a test to see if a specific instance of PrivateEndpointACL_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointACL_STATUS(subject PrivateEndpointACL_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointACL_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointACL_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointACL_STATUSGenerator() +var privateEndpointACL_STATUSGenerator gopter.Gen + +// PrivateEndpointACL_STATUSGenerator returns a generator of PrivateEndpointACL_STATUS instances for property testing. +func PrivateEndpointACL_STATUSGenerator() gopter.Gen { + if privateEndpointACL_STATUSGenerator != nil { + return privateEndpointACL_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(generators) + privateEndpointACL_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointACL_STATUS{}), generators) + + return privateEndpointACL_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointACL_STATUS(gens map[string]gopter.Gen) { + gens["Allow"] = gen.SliceOf(gen.AlphaString()) + gens["Deny"] = gen.SliceOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded runs a test to see if a specific instance of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(subject PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded instances for property testing - lazily +// instantiated by PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator() +var privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator gopter.Gen + +// PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator returns a generator of PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded instances for property testing. +func PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator() gopter.Gen { + if privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator != nil { + return privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(generators) + privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded{}), generators) + + return privateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogCategory_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory, ResourceLogCategoryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory runs a test to see if a specific instance of ResourceLogCategory round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory(subject ResourceLogCategory) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogCategory instances for property testing - lazily instantiated by +// ResourceLogCategoryGenerator() +var resourceLogCategoryGenerator gopter.Gen + +// ResourceLogCategoryGenerator returns a generator of ResourceLogCategory instances for property testing. +func ResourceLogCategoryGenerator() gopter.Gen { + if resourceLogCategoryGenerator != nil { + return resourceLogCategoryGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceLogCategory(generators) + resourceLogCategoryGenerator = gen.Struct(reflect.TypeOf(ResourceLogCategory{}), generators) + + return resourceLogCategoryGenerator +} + +// AddIndependentPropertyGeneratorsForResourceLogCategory is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceLogCategory(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogCategory_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogCategory_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogCategory_STATUS, ResourceLogCategory_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogCategory_STATUS runs a test to see if a specific instance of ResourceLogCategory_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogCategory_STATUS(subject ResourceLogCategory_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogCategory_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogCategory_STATUS instances for property testing - lazily instantiated by +// ResourceLogCategory_STATUSGenerator() +var resourceLogCategory_STATUSGenerator gopter.Gen + +// ResourceLogCategory_STATUSGenerator returns a generator of ResourceLogCategory_STATUS instances for property testing. +func ResourceLogCategory_STATUSGenerator() gopter.Gen { + if resourceLogCategory_STATUSGenerator != nil { + return resourceLogCategory_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(generators) + resourceLogCategory_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceLogCategory_STATUS{}), generators) + + return resourceLogCategory_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceLogCategory_STATUS(gens map[string]gopter.Gen) { + gens["Enabled"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceLogConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogConfiguration, ResourceLogConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogConfiguration runs a test to see if a specific instance of ResourceLogConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogConfiguration(subject ResourceLogConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogConfiguration + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogConfiguration instances for property testing - lazily instantiated by +// ResourceLogConfigurationGenerator() +var resourceLogConfigurationGenerator gopter.Gen + +// ResourceLogConfigurationGenerator returns a generator of ResourceLogConfiguration instances for property testing. +func ResourceLogConfigurationGenerator() gopter.Gen { + if resourceLogConfigurationGenerator != nil { + return resourceLogConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForResourceLogConfiguration(generators) + resourceLogConfigurationGenerator = gen.Struct(reflect.TypeOf(ResourceLogConfiguration{}), generators) + + return resourceLogConfigurationGenerator +} + +// AddRelatedPropertyGeneratorsForResourceLogConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceLogConfiguration(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(ResourceLogCategoryGenerator()) +} + +func Test_ResourceLogConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ResourceLogConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceLogConfiguration_STATUS, ResourceLogConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceLogConfiguration_STATUS runs a test to see if a specific instance of ResourceLogConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceLogConfiguration_STATUS(subject ResourceLogConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceLogConfiguration_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceLogConfiguration_STATUS instances for property testing - lazily instantiated by +// ResourceLogConfiguration_STATUSGenerator() +var resourceLogConfiguration_STATUSGenerator gopter.Gen + +// ResourceLogConfiguration_STATUSGenerator returns a generator of ResourceLogConfiguration_STATUS instances for property testing. +func ResourceLogConfiguration_STATUSGenerator() gopter.Gen { + if resourceLogConfiguration_STATUSGenerator != nil { + return resourceLogConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(generators) + resourceLogConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceLogConfiguration_STATUS{}), generators) + + return resourceLogConfiguration_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceLogConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Categories"] = gen.SliceOf(ResourceLogCategory_STATUSGenerator()) +} + +func Test_ServerlessSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessSettings, ServerlessSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessSettings runs a test to see if a specific instance of ServerlessSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessSettings(subject ServerlessSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessSettings instances for property testing - lazily instantiated by ServerlessSettingsGenerator() +var serverlessSettingsGenerator gopter.Gen + +// ServerlessSettingsGenerator returns a generator of ServerlessSettings instances for property testing. +func ServerlessSettingsGenerator() gopter.Gen { + if serverlessSettingsGenerator != nil { + return serverlessSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerlessSettings(generators) + serverlessSettingsGenerator = gen.Struct(reflect.TypeOf(ServerlessSettings{}), generators) + + return serverlessSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForServerlessSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerlessSettings(gens map[string]gopter.Gen) { + gens["ConnectionTimeoutInSeconds"] = gen.PtrOf(gen.Int()) +} + +func Test_ServerlessSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessSettings_STATUS, ServerlessSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessSettings_STATUS runs a test to see if a specific instance of ServerlessSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessSettings_STATUS(subject ServerlessSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessSettings_STATUS instances for property testing - lazily instantiated by +// ServerlessSettings_STATUSGenerator() +var serverlessSettings_STATUSGenerator gopter.Gen + +// ServerlessSettings_STATUSGenerator returns a generator of ServerlessSettings_STATUS instances for property testing. +func ServerlessSettings_STATUSGenerator() gopter.Gen { + if serverlessSettings_STATUSGenerator != nil { + return serverlessSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerlessSettings_STATUS(generators) + serverlessSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerlessSettings_STATUS{}), generators) + + return serverlessSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForServerlessSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerlessSettings_STATUS(gens map[string]gopter.Gen) { + gens["ConnectionTimeoutInSeconds"] = gen.PtrOf(gen.Int()) +} + +func Test_ServerlessUpstreamSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessUpstreamSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessUpstreamSettings, ServerlessUpstreamSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessUpstreamSettings runs a test to see if a specific instance of ServerlessUpstreamSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessUpstreamSettings(subject ServerlessUpstreamSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessUpstreamSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessUpstreamSettings instances for property testing - lazily instantiated by +// ServerlessUpstreamSettingsGenerator() +var serverlessUpstreamSettingsGenerator gopter.Gen + +// ServerlessUpstreamSettingsGenerator returns a generator of ServerlessUpstreamSettings instances for property testing. +func ServerlessUpstreamSettingsGenerator() gopter.Gen { + if serverlessUpstreamSettingsGenerator != nil { + return serverlessUpstreamSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(generators) + serverlessUpstreamSettingsGenerator = gen.Struct(reflect.TypeOf(ServerlessUpstreamSettings{}), generators) + + return serverlessUpstreamSettingsGenerator +} + +// AddRelatedPropertyGeneratorsForServerlessUpstreamSettings is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings(gens map[string]gopter.Gen) { + gens["Templates"] = gen.SliceOf(UpstreamTemplateGenerator()) +} + +func Test_ServerlessUpstreamSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ServerlessUpstreamSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerlessUpstreamSettings_STATUS, ServerlessUpstreamSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerlessUpstreamSettings_STATUS runs a test to see if a specific instance of ServerlessUpstreamSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerlessUpstreamSettings_STATUS(subject ServerlessUpstreamSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerlessUpstreamSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ServerlessUpstreamSettings_STATUS instances for property testing - lazily instantiated by +// ServerlessUpstreamSettings_STATUSGenerator() +var serverlessUpstreamSettings_STATUSGenerator gopter.Gen + +// ServerlessUpstreamSettings_STATUSGenerator returns a generator of ServerlessUpstreamSettings_STATUS instances for property testing. +func ServerlessUpstreamSettings_STATUSGenerator() gopter.Gen { + if serverlessUpstreamSettings_STATUSGenerator != nil { + return serverlessUpstreamSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(generators) + serverlessUpstreamSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerlessUpstreamSettings_STATUS{}), generators) + + return serverlessUpstreamSettings_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerlessUpstreamSettings_STATUS(gens map[string]gopter.Gen) { + gens["Templates"] = gen.SliceOf(UpstreamTemplate_STATUSGenerator()) +} + +func Test_SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded runs a test to see if a specific instance of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded round trips to JSON and back losslessly +func RunJSONSerializationTestForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(subject SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded instances for property testing - lazily +// instantiated by SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator() +var sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator gopter.Gen + +// SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator returns a generator of SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded instances for property testing. +func SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator() gopter.Gen { + if sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator != nil { + return sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(generators) + sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator = gen.Struct(reflect.TypeOf(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded{}), generators) + + return sharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator +} + +// AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalR_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR, SignalRGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR runs a test to see if a specific instance of SignalR round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR(subject SignalR) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR instances for property testing - lazily instantiated by SignalRGenerator() +var signalRGenerator gopter.Gen + +// SignalRGenerator returns a generator of SignalR instances for property testing. +func SignalRGenerator() gopter.Gen { + if signalRGenerator != nil { + return signalRGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSignalR(generators) + signalRGenerator = gen.Struct(reflect.TypeOf(SignalR{}), generators) + + return signalRGenerator +} + +// AddRelatedPropertyGeneratorsForSignalR is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR(gens map[string]gopter.Gen) { + gens["Spec"] = SignalR_SpecGenerator() + gens["Status"] = SignalR_STATUSGenerator() +} + +func Test_SignalRCorsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRCorsSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRCorsSettings, SignalRCorsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRCorsSettings runs a test to see if a specific instance of SignalRCorsSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRCorsSettings(subject SignalRCorsSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRCorsSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRCorsSettings instances for property testing - lazily instantiated by +// SignalRCorsSettingsGenerator() +var signalRCorsSettingsGenerator gopter.Gen + +// SignalRCorsSettingsGenerator returns a generator of SignalRCorsSettings instances for property testing. +func SignalRCorsSettingsGenerator() gopter.Gen { + if signalRCorsSettingsGenerator != nil { + return signalRCorsSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRCorsSettings(generators) + signalRCorsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRCorsSettings{}), generators) + + return signalRCorsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRCorsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRCorsSettings(gens map[string]gopter.Gen) { + gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_SignalRCorsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRCorsSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRCorsSettings_STATUS, SignalRCorsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRCorsSettings_STATUS runs a test to see if a specific instance of SignalRCorsSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRCorsSettings_STATUS(subject SignalRCorsSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRCorsSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRCorsSettings_STATUS instances for property testing - lazily instantiated by +// SignalRCorsSettings_STATUSGenerator() +var signalRCorsSettings_STATUSGenerator gopter.Gen + +// SignalRCorsSettings_STATUSGenerator returns a generator of SignalRCorsSettings_STATUS instances for property testing. +func SignalRCorsSettings_STATUSGenerator() gopter.Gen { + if signalRCorsSettings_STATUSGenerator != nil { + return signalRCorsSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(generators) + signalRCorsSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRCorsSettings_STATUS{}), generators) + + return signalRCorsSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRCorsSettings_STATUS(gens map[string]gopter.Gen) { + gens["AllowedOrigins"] = gen.SliceOf(gen.AlphaString()) +} + +func Test_SignalRFeature_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRFeature via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRFeature, SignalRFeatureGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRFeature runs a test to see if a specific instance of SignalRFeature round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRFeature(subject SignalRFeature) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRFeature + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRFeature instances for property testing - lazily instantiated by SignalRFeatureGenerator() +var signalRFeatureGenerator gopter.Gen + +// SignalRFeatureGenerator returns a generator of SignalRFeature instances for property testing. +func SignalRFeatureGenerator() gopter.Gen { + if signalRFeatureGenerator != nil { + return signalRFeatureGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRFeature(generators) + signalRFeatureGenerator = gen.Struct(reflect.TypeOf(SignalRFeature{}), generators) + + return signalRFeatureGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRFeature is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRFeature(gens map[string]gopter.Gen) { + gens["Flag"] = gen.PtrOf(gen.AlphaString()) + gens["Properties"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRFeature_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRFeature_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRFeature_STATUS, SignalRFeature_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRFeature_STATUS runs a test to see if a specific instance of SignalRFeature_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRFeature_STATUS(subject SignalRFeature_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRFeature_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRFeature_STATUS instances for property testing - lazily instantiated by +// SignalRFeature_STATUSGenerator() +var signalRFeature_STATUSGenerator gopter.Gen + +// SignalRFeature_STATUSGenerator returns a generator of SignalRFeature_STATUS instances for property testing. +func SignalRFeature_STATUSGenerator() gopter.Gen { + if signalRFeature_STATUSGenerator != nil { + return signalRFeature_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(generators) + signalRFeature_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRFeature_STATUS{}), generators) + + return signalRFeature_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRFeature_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRFeature_STATUS(gens map[string]gopter.Gen) { + gens["Flag"] = gen.PtrOf(gen.AlphaString()) + gens["Properties"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SignalRNetworkACLs_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRNetworkACLs via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRNetworkACLs, SignalRNetworkACLsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRNetworkACLs runs a test to see if a specific instance of SignalRNetworkACLs round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRNetworkACLs(subject SignalRNetworkACLs) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRNetworkACLs + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRNetworkACLs instances for property testing - lazily instantiated by SignalRNetworkACLsGenerator() +var signalRNetworkACLsGenerator gopter.Gen + +// SignalRNetworkACLsGenerator returns a generator of SignalRNetworkACLs instances for property testing. +// We first initialize signalRNetworkACLsGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRNetworkACLsGenerator() gopter.Gen { + if signalRNetworkACLsGenerator != nil { + return signalRNetworkACLsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs(generators) + signalRNetworkACLsGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs(generators) + AddRelatedPropertyGeneratorsForSignalRNetworkACLs(generators) + signalRNetworkACLsGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs{}), generators) + + return signalRNetworkACLsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRNetworkACLs is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalRNetworkACLs is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRNetworkACLs(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) + gens["PrivateEndpoints"] = gen.SliceOf(PrivateEndpointACLGenerator()) + gens["PublicNetwork"] = gen.PtrOf(NetworkACLGenerator()) +} + +func Test_SignalRNetworkACLs_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRNetworkACLs_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRNetworkACLs_STATUS, SignalRNetworkACLs_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRNetworkACLs_STATUS runs a test to see if a specific instance of SignalRNetworkACLs_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRNetworkACLs_STATUS(subject SignalRNetworkACLs_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRNetworkACLs_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRNetworkACLs_STATUS instances for property testing - lazily instantiated by +// SignalRNetworkACLs_STATUSGenerator() +var signalRNetworkACLs_STATUSGenerator gopter.Gen + +// SignalRNetworkACLs_STATUSGenerator returns a generator of SignalRNetworkACLs_STATUS instances for property testing. +// We first initialize signalRNetworkACLs_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalRNetworkACLs_STATUSGenerator() gopter.Gen { + if signalRNetworkACLs_STATUSGenerator != nil { + return signalRNetworkACLs_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + signalRNetworkACLs_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(generators) + signalRNetworkACLs_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRNetworkACLs_STATUS{}), generators) + + return signalRNetworkACLs_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalRNetworkACLs_STATUS(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) + gens["PrivateEndpoints"] = gen.SliceOf(PrivateEndpointACL_STATUSGenerator()) + gens["PublicNetwork"] = gen.PtrOf(NetworkACL_STATUSGenerator()) +} + +func Test_SignalROperatorSecrets_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalROperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalROperatorSecrets, SignalROperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalROperatorSecrets runs a test to see if a specific instance of SignalROperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalROperatorSecrets(subject SignalROperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalROperatorSecrets + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalROperatorSecrets instances for property testing - lazily instantiated by +// SignalROperatorSecretsGenerator() +var signalROperatorSecretsGenerator gopter.Gen + +// SignalROperatorSecretsGenerator returns a generator of SignalROperatorSecrets instances for property testing. +func SignalROperatorSecretsGenerator() gopter.Gen { + if signalROperatorSecretsGenerator != nil { + return signalROperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + signalROperatorSecretsGenerator = gen.Struct(reflect.TypeOf(SignalROperatorSecrets{}), generators) + + return signalROperatorSecretsGenerator +} + +func Test_SignalROperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalROperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalROperatorSpec, SignalROperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalROperatorSpec runs a test to see if a specific instance of SignalROperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalROperatorSpec(subject SignalROperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalROperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalROperatorSpec instances for property testing - lazily instantiated by +// SignalROperatorSpecGenerator() +var signalROperatorSpecGenerator gopter.Gen + +// SignalROperatorSpecGenerator returns a generator of SignalROperatorSpec instances for property testing. +func SignalROperatorSpecGenerator() gopter.Gen { + if signalROperatorSpecGenerator != nil { + return signalROperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSignalROperatorSpec(generators) + signalROperatorSpecGenerator = gen.Struct(reflect.TypeOf(SignalROperatorSpec{}), generators) + + return signalROperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForSignalROperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalROperatorSpec(gens map[string]gopter.Gen) { + gens["Secrets"] = gen.PtrOf(SignalROperatorSecretsGenerator()) +} + +func Test_SignalRTlsSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRTlsSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRTlsSettings, SignalRTlsSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRTlsSettings runs a test to see if a specific instance of SignalRTlsSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRTlsSettings(subject SignalRTlsSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRTlsSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRTlsSettings instances for property testing - lazily instantiated by SignalRTlsSettingsGenerator() +var signalRTlsSettingsGenerator gopter.Gen + +// SignalRTlsSettingsGenerator returns a generator of SignalRTlsSettings instances for property testing. +func SignalRTlsSettingsGenerator() gopter.Gen { + if signalRTlsSettingsGenerator != nil { + return signalRTlsSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRTlsSettings(generators) + signalRTlsSettingsGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings{}), generators) + + return signalRTlsSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalRTlsSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalRTlsSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalRTlsSettings_STATUS, SignalRTlsSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalRTlsSettings_STATUS runs a test to see if a specific instance of SignalRTlsSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalRTlsSettings_STATUS(subject SignalRTlsSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalRTlsSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalRTlsSettings_STATUS instances for property testing - lazily instantiated by +// SignalRTlsSettings_STATUSGenerator() +var signalRTlsSettings_STATUSGenerator gopter.Gen + +// SignalRTlsSettings_STATUSGenerator returns a generator of SignalRTlsSettings_STATUS instances for property testing. +func SignalRTlsSettings_STATUSGenerator() gopter.Gen { + if signalRTlsSettings_STATUSGenerator != nil { + return signalRTlsSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(generators) + signalRTlsSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalRTlsSettings_STATUS{}), generators) + + return signalRTlsSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalRTlsSettings_STATUS(gens map[string]gopter.Gen) { + gens["ClientCertEnabled"] = gen.PtrOf(gen.Bool()) +} + +func Test_SignalR_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR_STATUS, SignalR_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR_STATUS runs a test to see if a specific instance of SignalR_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR_STATUS(subject SignalR_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR_STATUS instances for property testing - lazily instantiated by SignalR_STATUSGenerator() +var signalR_STATUSGenerator gopter.Gen + +// SignalR_STATUSGenerator returns a generator of SignalR_STATUS instances for property testing. +// We first initialize signalR_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalR_STATUSGenerator() gopter.Gen { + if signalR_STATUSGenerator != nil { + return signalR_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_STATUS(generators) + signalR_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalR_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_STATUS(generators) + AddRelatedPropertyGeneratorsForSignalR_STATUS(generators) + signalR_STATUSGenerator = gen.Struct(reflect.TypeOf(SignalR_STATUS{}), generators) + + return signalR_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSignalR_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { + gens["DisableAadAuth"] = gen.PtrOf(gen.Bool()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["ExternalIP"] = gen.PtrOf(gen.AlphaString()) + gens["HostName"] = gen.PtrOf(gen.AlphaString()) + gens["HostNamePrefix"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Kind"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["PublicPort"] = gen.PtrOf(gen.Int()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["ServerPort"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalR_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR_STATUS(gens map[string]gopter.Gen) { + gens["Cors"] = gen.PtrOf(SignalRCorsSettings_STATUSGenerator()) + gens["Features"] = gen.SliceOf(SignalRFeature_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(ManagedIdentity_STATUSGenerator()) + gens["LiveTraceConfiguration"] = gen.PtrOf(LiveTraceConfiguration_STATUSGenerator()) + gens["NetworkACLs"] = gen.PtrOf(SignalRNetworkACLs_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbeddedGenerator()) + gens["ResourceLogConfiguration"] = gen.PtrOf(ResourceLogConfiguration_STATUSGenerator()) + gens["Serverless"] = gen.PtrOf(ServerlessSettings_STATUSGenerator()) + gens["SharedPrivateLinkResources"] = gen.SliceOf(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbeddedGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) + gens["Tls"] = gen.PtrOf(SignalRTlsSettings_STATUSGenerator()) + gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettings_STATUSGenerator()) +} + +func Test_SignalR_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SignalR_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSignalR_Spec, SignalR_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSignalR_Spec runs a test to see if a specific instance of SignalR_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForSignalR_Spec(subject SignalR_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SignalR_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SignalR_Spec instances for property testing - lazily instantiated by SignalR_SpecGenerator() +var signalR_SpecGenerator gopter.Gen + +// SignalR_SpecGenerator returns a generator of SignalR_Spec instances for property testing. +// We first initialize signalR_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func SignalR_SpecGenerator() gopter.Gen { + if signalR_SpecGenerator != nil { + return signalR_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_Spec(generators) + signalR_SpecGenerator = gen.Struct(reflect.TypeOf(SignalR_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSignalR_Spec(generators) + AddRelatedPropertyGeneratorsForSignalR_Spec(generators) + signalR_SpecGenerator = gen.Struct(reflect.TypeOf(SignalR_Spec{}), generators) + + return signalR_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForSignalR_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["DisableAadAuth"] = gen.PtrOf(gen.Bool()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["Kind"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.AlphaString()) + gens["ResourceStopped"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSignalR_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSignalR_Spec(gens map[string]gopter.Gen) { + gens["Cors"] = gen.PtrOf(SignalRCorsSettingsGenerator()) + gens["Features"] = gen.SliceOf(SignalRFeatureGenerator()) + gens["Identity"] = gen.PtrOf(ManagedIdentityGenerator()) + gens["LiveTraceConfiguration"] = gen.PtrOf(LiveTraceConfigurationGenerator()) + gens["NetworkACLs"] = gen.PtrOf(SignalRNetworkACLsGenerator()) + gens["OperatorSpec"] = gen.PtrOf(SignalROperatorSpecGenerator()) + gens["ResourceLogConfiguration"] = gen.PtrOf(ResourceLogConfigurationGenerator()) + gens["Serverless"] = gen.PtrOf(ServerlessSettingsGenerator()) + gens["Sku"] = gen.PtrOf(ResourceSkuGenerator()) + gens["Tls"] = gen.PtrOf(SignalRTlsSettingsGenerator()) + gens["Upstream"] = gen.PtrOf(ServerlessUpstreamSettingsGenerator()) +} + +func Test_UpstreamAuthSettings_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamAuthSettings via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamAuthSettings, UpstreamAuthSettingsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamAuthSettings runs a test to see if a specific instance of UpstreamAuthSettings round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamAuthSettings(subject UpstreamAuthSettings) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamAuthSettings + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamAuthSettings instances for property testing - lazily instantiated by +// UpstreamAuthSettingsGenerator() +var upstreamAuthSettingsGenerator gopter.Gen + +// UpstreamAuthSettingsGenerator returns a generator of UpstreamAuthSettings instances for property testing. +// We first initialize upstreamAuthSettingsGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamAuthSettingsGenerator() gopter.Gen { + if upstreamAuthSettingsGenerator != nil { + return upstreamAuthSettingsGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings(generators) + upstreamAuthSettingsGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings(generators) + AddRelatedPropertyGeneratorsForUpstreamAuthSettings(generators) + upstreamAuthSettingsGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings{}), generators) + + return upstreamAuthSettingsGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamAuthSettings is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamAuthSettings is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamAuthSettings(gens map[string]gopter.Gen) { + gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettingsGenerator()) +} + +func Test_UpstreamAuthSettings_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamAuthSettings_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamAuthSettings_STATUS, UpstreamAuthSettings_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamAuthSettings_STATUS runs a test to see if a specific instance of UpstreamAuthSettings_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamAuthSettings_STATUS(subject UpstreamAuthSettings_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamAuthSettings_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamAuthSettings_STATUS instances for property testing - lazily instantiated by +// UpstreamAuthSettings_STATUSGenerator() +var upstreamAuthSettings_STATUSGenerator gopter.Gen + +// UpstreamAuthSettings_STATUSGenerator returns a generator of UpstreamAuthSettings_STATUS instances for property testing. +// We first initialize upstreamAuthSettings_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamAuthSettings_STATUSGenerator() gopter.Gen { + if upstreamAuthSettings_STATUSGenerator != nil { + return upstreamAuthSettings_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + upstreamAuthSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(generators) + upstreamAuthSettings_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamAuthSettings_STATUS{}), generators) + + return upstreamAuthSettings_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamAuthSettings_STATUS(gens map[string]gopter.Gen) { + gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentitySettings_STATUSGenerator()) +} + +func Test_UpstreamTemplate_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamTemplate via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamTemplate, UpstreamTemplateGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamTemplate runs a test to see if a specific instance of UpstreamTemplate round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamTemplate(subject UpstreamTemplate) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamTemplate + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamTemplate instances for property testing - lazily instantiated by UpstreamTemplateGenerator() +var upstreamTemplateGenerator gopter.Gen + +// UpstreamTemplateGenerator returns a generator of UpstreamTemplate instances for property testing. +// We first initialize upstreamTemplateGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamTemplateGenerator() gopter.Gen { + if upstreamTemplateGenerator != nil { + return upstreamTemplateGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate(generators) + upstreamTemplateGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate(generators) + AddRelatedPropertyGeneratorsForUpstreamTemplate(generators) + upstreamTemplateGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate{}), generators) + + return upstreamTemplateGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamTemplate is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) { + gens["CategoryPattern"] = gen.PtrOf(gen.AlphaString()) + gens["EventPattern"] = gen.PtrOf(gen.AlphaString()) + gens["HubPattern"] = gen.PtrOf(gen.AlphaString()) + gens["UrlTemplate"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamTemplate is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamTemplate(gens map[string]gopter.Gen) { + gens["Auth"] = gen.PtrOf(UpstreamAuthSettingsGenerator()) +} + +func Test_UpstreamTemplate_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UpstreamTemplate_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUpstreamTemplate_STATUS, UpstreamTemplate_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUpstreamTemplate_STATUS runs a test to see if a specific instance of UpstreamTemplate_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUpstreamTemplate_STATUS(subject UpstreamTemplate_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UpstreamTemplate_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UpstreamTemplate_STATUS instances for property testing - lazily instantiated by +// UpstreamTemplate_STATUSGenerator() +var upstreamTemplate_STATUSGenerator gopter.Gen + +// UpstreamTemplate_STATUSGenerator returns a generator of UpstreamTemplate_STATUS instances for property testing. +// We first initialize upstreamTemplate_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func UpstreamTemplate_STATUSGenerator() gopter.Gen { + if upstreamTemplate_STATUSGenerator != nil { + return upstreamTemplate_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + upstreamTemplate_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(generators) + upstreamTemplate_STATUSGenerator = gen.Struct(reflect.TypeOf(UpstreamTemplate_STATUS{}), generators) + + return upstreamTemplate_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopter.Gen) { + gens["CategoryPattern"] = gen.PtrOf(gen.AlphaString()) + gens["EventPattern"] = gen.PtrOf(gen.AlphaString()) + gens["HubPattern"] = gen.PtrOf(gen.AlphaString()) + gens["UrlTemplate"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForUpstreamTemplate_STATUS(gens map[string]gopter.Gen) { + gens["Auth"] = gen.PtrOf(UpstreamAuthSettings_STATUSGenerator()) +} + +func Test_UserAssignedIdentityDetails_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UserAssignedIdentityDetails via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserAssignedIdentityDetails, UserAssignedIdentityDetailsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserAssignedIdentityDetails runs a test to see if a specific instance of UserAssignedIdentityDetails round trips to JSON and back losslessly +func RunJSONSerializationTestForUserAssignedIdentityDetails(subject UserAssignedIdentityDetails) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserAssignedIdentityDetails + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UserAssignedIdentityDetails instances for property testing - lazily instantiated by +// UserAssignedIdentityDetailsGenerator() +var userAssignedIdentityDetailsGenerator gopter.Gen + +// UserAssignedIdentityDetailsGenerator returns a generator of UserAssignedIdentityDetails instances for property testing. +func UserAssignedIdentityDetailsGenerator() gopter.Gen { + if userAssignedIdentityDetailsGenerator != nil { + return userAssignedIdentityDetailsGenerator + } + + generators := make(map[string]gopter.Gen) + userAssignedIdentityDetailsGenerator = gen.Struct(reflect.TypeOf(UserAssignedIdentityDetails{}), generators) + + return userAssignedIdentityDetailsGenerator +} + +func Test_UserAssignedIdentityProperty_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of UserAssignedIdentityProperty_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS, UserAssignedIdentityProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS runs a test to see if a specific instance of UserAssignedIdentityProperty_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserAssignedIdentityProperty_STATUS(subject UserAssignedIdentityProperty_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserAssignedIdentityProperty_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of UserAssignedIdentityProperty_STATUS instances for property testing - lazily instantiated by +// UserAssignedIdentityProperty_STATUSGenerator() +var userAssignedIdentityProperty_STATUSGenerator gopter.Gen + +// UserAssignedIdentityProperty_STATUSGenerator returns a generator of UserAssignedIdentityProperty_STATUS instances for property testing. +func UserAssignedIdentityProperty_STATUSGenerator() gopter.Gen { + if userAssignedIdentityProperty_STATUSGenerator != nil { + return userAssignedIdentityProperty_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS(generators) + userAssignedIdentityProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(UserAssignedIdentityProperty_STATUS{}), generators) + + return userAssignedIdentityProperty_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserAssignedIdentityProperty_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/signalrservice/v1api20240301/storage/structure.txt b/v2/api/signalrservice/v1api20240301/storage/structure.txt new file mode 100644 index 00000000000..b7b10a67d6d --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/structure.txt @@ -0,0 +1,319 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage +----------------------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2024-03-01" +CustomCertificate: Resource +├── Owner: signalrservice/v1api20240301.SignalR +├── Spec: Object (9 properties) +│ ├── AzureName: string +│ ├── KeyVaultBaseUri: *string +│ ├── KeyVaultBaseUriFromConfig: *genruntime.ConfigMapReference +│ ├── KeyVaultSecretName: *string +│ ├── KeyVaultSecretVersion: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ └── PropertyBag: genruntime.PropertyBag +└── Status: Object (10 properties) + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── KeyVaultBaseUri: *string + ├── KeyVaultSecretName: *string + ├── KeyVaultSecretVersion: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + └── Type: *string +CustomDomain: Resource +├── Owner: signalrservice/v1api20240301.SignalR +├── Spec: Object (7 properties) +│ ├── AzureName: string +│ ├── CustomCertificate: *Object (2 properties) +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Reference: *genruntime.ResourceReference +│ ├── DomainName: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ └── PropertyBag: genruntime.PropertyBag +└── Status: Object (9 properties) + ├── Conditions: conditions.Condition[] + ├── CustomCertificate: *Object (2 properties) + │ ├── Id: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── DomainName: *string + ├── Id: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + └── Type: *string +Replica: Resource +├── Owner: signalrservice/v1api20240301.SignalR +├── Spec: Object (10 properties) +│ ├── AzureName: string +│ ├── Location: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── RegionEndpointEnabled: *string +│ ├── ResourceStopped: *string +│ ├── Sku: *Object (4 properties) +│ │ ├── Capacity: *int +│ │ ├── Name: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Tier: *string +│ └── Tags: map[string]string +└── Status: Object (12 properties) + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── Location: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── RegionEndpointEnabled: *string + ├── ResourceStopped: *string + ├── Sku: *Object (6 properties) + │ ├── Capacity: *int + │ ├── Family: *string + │ ├── Name: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── Size: *string + │ └── Tier: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Tags: map[string]string + └── Type: *string +SignalR: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (23 properties) +│ ├── AzureName: string +│ ├── Cors: *Object (2 properties) +│ │ ├── AllowedOrigins: string[] +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── DisableAadAuth: *bool +│ ├── DisableLocalAuth: *bool +│ ├── Features: Object (4 properties)[] +│ │ ├── Flag: *string +│ │ ├── Properties: map[string]string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Value: *string +│ ├── Identity: *Object (3 properties) +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── Type: *string +│ │ └── UserAssignedIdentities: Object (2 properties)[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Reference: genruntime.ResourceReference +│ ├── Kind: *string +│ ├── LiveTraceConfiguration: *Object (3 properties) +│ │ ├── Categories: Object (3 properties)[] +│ │ │ ├── Enabled: *string +│ │ │ ├── Name: *string +│ │ │ └── PropertyBag: genruntime.PropertyBag +│ │ ├── Enabled: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── Location: *string +│ ├── NetworkACLs: *Object (5 properties) +│ │ ├── DefaultAction: *string +│ │ ├── IpRules: Object (3 properties)[] +│ │ │ ├── Action: *string +│ │ │ ├── PropertyBag: genruntime.PropertyBag +│ │ │ └── Value: *string +│ │ ├── PrivateEndpoints: Object (4 properties)[] +│ │ │ ├── Allow: string[] +│ │ │ ├── Deny: string[] +│ │ │ ├── Name: *string +│ │ │ └── PropertyBag: genruntime.PropertyBag +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── PublicNetwork: *Object (3 properties) +│ │ ├── Allow: string[] +│ │ ├── Deny: string[] +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── OperatorSpec: *Object (4 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── SecretExpressions: *core.DestinationExpression[] +│ │ └── Secrets: *Object (5 properties) +│ │ ├── PrimaryConnectionString: *genruntime.SecretDestination +│ │ ├── PrimaryKey: *genruntime.SecretDestination +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── SecondaryConnectionString: *genruntime.SecretDestination +│ │ └── SecondaryKey: *genruntime.SecretDestination +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── PublicNetworkAccess: *string +│ ├── RegionEndpointEnabled: *string +│ ├── ResourceLogConfiguration: *Object (2 properties) +│ │ ├── Categories: Object (3 properties)[] +│ │ │ ├── Enabled: *string +│ │ │ ├── Name: *string +│ │ │ └── PropertyBag: genruntime.PropertyBag +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── ResourceStopped: *string +│ ├── Serverless: *Object (2 properties) +│ │ ├── ConnectionTimeoutInSeconds: *int +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── Sku: *Object (4 properties) +│ │ ├── Capacity: *int +│ │ ├── Name: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Tier: *string +│ ├── Tags: map[string]string +│ ├── Tls: *Object (2 properties) +│ │ ├── ClientCertEnabled: *bool +│ │ └── PropertyBag: genruntime.PropertyBag +│ └── Upstream: *Object (2 properties) +│ ├── PropertyBag: genruntime.PropertyBag +│ └── Templates: Object (6 properties)[] +│ ├── Auth: *Object (3 properties) +│ │ ├── ManagedIdentity: *Object (2 properties) +│ │ │ ├── PropertyBag: genruntime.PropertyBag +│ │ │ └── Resource: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Type: *string +│ ├── CategoryPattern: *string +│ ├── EventPattern: *string +│ ├── HubPattern: *string +│ ├── PropertyBag: genruntime.PropertyBag +│ └── UrlTemplate: *string +└── Status: Object (33 properties) + ├── Conditions: conditions.Condition[] + ├── Cors: *Object (2 properties) + │ ├── AllowedOrigins: string[] + │ └── PropertyBag: genruntime.PropertyBag + ├── DisableAadAuth: *bool + ├── DisableLocalAuth: *bool + ├── ExternalIP: *string + ├── Features: Object (4 properties)[] + │ ├── Flag: *string + │ ├── Properties: map[string]string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Value: *string + ├── HostName: *string + ├── HostNamePrefix: *string + ├── Id: *string + ├── Identity: *Object (5 properties) + │ ├── PrincipalId: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── TenantId: *string + │ ├── Type: *string + │ └── UserAssignedIdentities: map[string]Object (3 properties) + │ ├── ClientId: *string + │ ├── PrincipalId: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Kind: *string + ├── LiveTraceConfiguration: *Object (3 properties) + │ ├── Categories: Object (3 properties)[] + │ │ ├── Enabled: *string + │ │ ├── Name: *string + │ │ └── PropertyBag: genruntime.PropertyBag + │ ├── Enabled: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Location: *string + ├── Name: *string + ├── NetworkACLs: *Object (5 properties) + │ ├── DefaultAction: *string + │ ├── IpRules: Object (3 properties)[] + │ │ ├── Action: *string + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Value: *string + │ ├── PrivateEndpoints: Object (4 properties)[] + │ │ ├── Allow: string[] + │ │ ├── Deny: string[] + │ │ ├── Name: *string + │ │ └── PropertyBag: genruntime.PropertyBag + │ ├── PropertyBag: genruntime.PropertyBag + │ └── PublicNetwork: *Object (3 properties) + │ ├── Allow: string[] + │ ├── Deny: string[] + │ └── PropertyBag: genruntime.PropertyBag + ├── PrivateEndpointConnections: Object (2 properties)[] + │ ├── Id: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── PublicNetworkAccess: *string + ├── PublicPort: *int + ├── RegionEndpointEnabled: *string + ├── ResourceLogConfiguration: *Object (2 properties) + │ ├── Categories: Object (3 properties)[] + │ │ ├── Enabled: *string + │ │ ├── Name: *string + │ │ └── PropertyBag: genruntime.PropertyBag + │ └── PropertyBag: genruntime.PropertyBag + ├── ResourceStopped: *string + ├── ServerPort: *int + ├── Serverless: *Object (2 properties) + │ ├── ConnectionTimeoutInSeconds: *int + │ └── PropertyBag: genruntime.PropertyBag + ├── SharedPrivateLinkResources: Object (2 properties)[] + │ ├── Id: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Sku: *Object (6 properties) + │ ├── Capacity: *int + │ ├── Family: *string + │ ├── Name: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── Size: *string + │ └── Tier: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Tags: map[string]string + ├── Tls: *Object (2 properties) + │ ├── ClientCertEnabled: *bool + │ └── PropertyBag: genruntime.PropertyBag + ├── Type: *string + ├── Upstream: *Object (2 properties) + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Templates: Object (6 properties)[] + │ ├── Auth: *Object (3 properties) + │ │ ├── ManagedIdentity: *Object (2 properties) + │ │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ │ └── Resource: *string + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Type: *string + │ ├── CategoryPattern: *string + │ ├── EventPattern: *string + │ ├── HubPattern: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── UrlTemplate: *string + └── Version: *string diff --git a/v2/api/signalrservice/v1api20240301/storage/zz_generated.deepcopy.go b/v2/api/signalrservice/v1api20240301/storage/zz_generated.deepcopy.go new file mode 100644 index 00000000000..5cda5173c80 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/storage/zz_generated.deepcopy.go @@ -0,0 +1,2596 @@ +//go:build !ignore_autogenerated + +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package storage + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificate) DeepCopyInto(out *CustomCertificate) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate. +func (in *CustomCertificate) DeepCopy() *CustomCertificate { + if in == nil { + return nil + } + out := new(CustomCertificate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomCertificate) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificateList) DeepCopyInto(out *CustomCertificateList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomCertificate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificateList. +func (in *CustomCertificateList) DeepCopy() *CustomCertificateList { + if in == nil { + return nil + } + out := new(CustomCertificateList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomCertificateList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificateOperatorSpec) DeepCopyInto(out *CustomCertificateOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificateOperatorSpec. +func (in *CustomCertificateOperatorSpec) DeepCopy() *CustomCertificateOperatorSpec { + if in == nil { + return nil + } + out := new(CustomCertificateOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificate_STATUS) DeepCopyInto(out *CustomCertificate_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.KeyVaultBaseUri != nil { + in, out := &in.KeyVaultBaseUri, &out.KeyVaultBaseUri + *out = new(string) + **out = **in + } + if in.KeyVaultSecretName != nil { + in, out := &in.KeyVaultSecretName, &out.KeyVaultSecretName + *out = new(string) + **out = **in + } + if in.KeyVaultSecretVersion != nil { + in, out := &in.KeyVaultSecretVersion, &out.KeyVaultSecretVersion + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate_STATUS. +func (in *CustomCertificate_STATUS) DeepCopy() *CustomCertificate_STATUS { + if in == nil { + return nil + } + out := new(CustomCertificate_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificate_Spec) DeepCopyInto(out *CustomCertificate_Spec) { + *out = *in + if in.KeyVaultBaseUri != nil { + in, out := &in.KeyVaultBaseUri, &out.KeyVaultBaseUri + *out = new(string) + **out = **in + } + if in.KeyVaultBaseUriFromConfig != nil { + in, out := &in.KeyVaultBaseUriFromConfig, &out.KeyVaultBaseUriFromConfig + *out = new(genruntime.ConfigMapReference) + **out = **in + } + if in.KeyVaultSecretName != nil { + in, out := &in.KeyVaultSecretName, &out.KeyVaultSecretName + *out = new(string) + **out = **in + } + if in.KeyVaultSecretVersion != nil { + in, out := &in.KeyVaultSecretVersion, &out.KeyVaultSecretVersion + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(CustomCertificateOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate_Spec. +func (in *CustomCertificate_Spec) DeepCopy() *CustomCertificate_Spec { + if in == nil { + return nil + } + out := new(CustomCertificate_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomain) DeepCopyInto(out *CustomDomain) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomain. +func (in *CustomDomain) DeepCopy() *CustomDomain { + if in == nil { + return nil + } + out := new(CustomDomain) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomDomain) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomainList) DeepCopyInto(out *CustomDomainList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomDomain, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomainList. +func (in *CustomDomainList) DeepCopy() *CustomDomainList { + if in == nil { + return nil + } + out := new(CustomDomainList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomDomainList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomainOperatorSpec) DeepCopyInto(out *CustomDomainOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomainOperatorSpec. +func (in *CustomDomainOperatorSpec) DeepCopy() *CustomDomainOperatorSpec { + if in == nil { + return nil + } + out := new(CustomDomainOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomain_STATUS) DeepCopyInto(out *CustomDomain_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CustomCertificate != nil { + in, out := &in.CustomCertificate, &out.CustomCertificate + *out = new(ResourceReference_STATUS) + (*in).DeepCopyInto(*out) + } + if in.DomainName != nil { + in, out := &in.DomainName, &out.DomainName + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomain_STATUS. +func (in *CustomDomain_STATUS) DeepCopy() *CustomDomain_STATUS { + if in == nil { + return nil + } + out := new(CustomDomain_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomain_Spec) DeepCopyInto(out *CustomDomain_Spec) { + *out = *in + if in.CustomCertificate != nil { + in, out := &in.CustomCertificate, &out.CustomCertificate + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.DomainName != nil { + in, out := &in.DomainName, &out.DomainName + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(CustomDomainOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomain_Spec. +func (in *CustomDomain_Spec) DeepCopy() *CustomDomain_Spec { + if in == nil { + return nil + } + out := new(CustomDomain_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPRule) DeepCopyInto(out *IPRule) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule. +func (in *IPRule) DeepCopy() *IPRule { + if in == nil { + return nil + } + out := new(IPRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPRule_STATUS) DeepCopyInto(out *IPRule_STATUS) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule_STATUS. +func (in *IPRule_STATUS) DeepCopy() *IPRule_STATUS { + if in == nil { + return nil + } + out := new(IPRule_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceCategory) DeepCopyInto(out *LiveTraceCategory) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceCategory. +func (in *LiveTraceCategory) DeepCopy() *LiveTraceCategory { + if in == nil { + return nil + } + out := new(LiveTraceCategory) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceCategory_STATUS) DeepCopyInto(out *LiveTraceCategory_STATUS) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceCategory_STATUS. +func (in *LiveTraceCategory_STATUS) DeepCopy() *LiveTraceCategory_STATUS { + if in == nil { + return nil + } + out := new(LiveTraceCategory_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceConfiguration) DeepCopyInto(out *LiveTraceConfiguration) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]LiveTraceCategory, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceConfiguration. +func (in *LiveTraceConfiguration) DeepCopy() *LiveTraceConfiguration { + if in == nil { + return nil + } + out := new(LiveTraceConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceConfiguration_STATUS) DeepCopyInto(out *LiveTraceConfiguration_STATUS) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]LiveTraceCategory_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceConfiguration_STATUS. +func (in *LiveTraceConfiguration_STATUS) DeepCopy() *LiveTraceConfiguration_STATUS { + if in == nil { + return nil + } + out := new(LiveTraceConfiguration_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentity) DeepCopyInto(out *ManagedIdentity) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make([]UserAssignedIdentityDetails, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentity. +func (in *ManagedIdentity) DeepCopy() *ManagedIdentity { + if in == nil { + return nil + } + out := new(ManagedIdentity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentitySettings) DeepCopyInto(out *ManagedIdentitySettings) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentitySettings. +func (in *ManagedIdentitySettings) DeepCopy() *ManagedIdentitySettings { + if in == nil { + return nil + } + out := new(ManagedIdentitySettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentitySettings_STATUS) DeepCopyInto(out *ManagedIdentitySettings_STATUS) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentitySettings_STATUS. +func (in *ManagedIdentitySettings_STATUS) DeepCopy() *ManagedIdentitySettings_STATUS { + if in == nil { + return nil + } + out := new(ManagedIdentitySettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentity_STATUS) DeepCopyInto(out *ManagedIdentity_STATUS) { + *out = *in + if in.PrincipalId != nil { + in, out := &in.PrincipalId, &out.PrincipalId + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.TenantId != nil { + in, out := &in.TenantId, &out.TenantId + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make(map[string]UserAssignedIdentityProperty_STATUS, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentity_STATUS. +func (in *ManagedIdentity_STATUS) DeepCopy() *ManagedIdentity_STATUS { + if in == nil { + return nil + } + out := new(ManagedIdentity_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkACL) DeepCopyInto(out *NetworkACL) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkACL. +func (in *NetworkACL) DeepCopy() *NetworkACL { + if in == nil { + return nil + } + out := new(NetworkACL) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkACL_STATUS) DeepCopyInto(out *NetworkACL_STATUS) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkACL_STATUS. +func (in *NetworkACL_STATUS) DeepCopy() *NetworkACL_STATUS { + if in == nil { + return nil + } + out := new(NetworkACL_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointACL) DeepCopyInto(out *PrivateEndpointACL) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointACL. +func (in *PrivateEndpointACL) DeepCopy() *PrivateEndpointACL { + if in == nil { + return nil + } + out := new(PrivateEndpointACL) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointACL_STATUS) DeepCopyInto(out *PrivateEndpointACL_STATUS) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointACL_STATUS. +func (in *PrivateEndpointACL_STATUS) DeepCopy() *PrivateEndpointACL_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointACL_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) DeepCopyInto(out *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded. +func (in *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) DeepCopy() *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded { + if in == nil { + return nil + } + out := new(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica) DeepCopyInto(out *Replica) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica. +func (in *Replica) DeepCopy() *Replica { + if in == nil { + return nil + } + out := new(Replica) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Replica) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaList) DeepCopyInto(out *ReplicaList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Replica, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaList. +func (in *ReplicaList) DeepCopy() *ReplicaList { + if in == nil { + return nil + } + out := new(ReplicaList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaOperatorSpec) DeepCopyInto(out *ReplicaOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaOperatorSpec. +func (in *ReplicaOperatorSpec) DeepCopy() *ReplicaOperatorSpec { + if in == nil { + return nil + } + out := new(ReplicaOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_STATUS) DeepCopyInto(out *Replica_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_STATUS. +func (in *Replica_STATUS) DeepCopy() *Replica_STATUS { + if in == nil { + return nil + } + out := new(Replica_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_Spec) DeepCopyInto(out *Replica_Spec) { + *out = *in + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(ReplicaOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_Spec. +func (in *Replica_Spec) DeepCopy() *Replica_Spec { + if in == nil { + return nil + } + out := new(Replica_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogCategory) DeepCopyInto(out *ResourceLogCategory) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogCategory. +func (in *ResourceLogCategory) DeepCopy() *ResourceLogCategory { + if in == nil { + return nil + } + out := new(ResourceLogCategory) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogCategory_STATUS) DeepCopyInto(out *ResourceLogCategory_STATUS) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogCategory_STATUS. +func (in *ResourceLogCategory_STATUS) DeepCopy() *ResourceLogCategory_STATUS { + if in == nil { + return nil + } + out := new(ResourceLogCategory_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogConfiguration) DeepCopyInto(out *ResourceLogConfiguration) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]ResourceLogCategory, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogConfiguration. +func (in *ResourceLogConfiguration) DeepCopy() *ResourceLogConfiguration { + if in == nil { + return nil + } + out := new(ResourceLogConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogConfiguration_STATUS) DeepCopyInto(out *ResourceLogConfiguration_STATUS) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]ResourceLogCategory_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogConfiguration_STATUS. +func (in *ResourceLogConfiguration_STATUS) DeepCopy() *ResourceLogConfiguration_STATUS { + if in == nil { + return nil + } + out := new(ResourceLogConfiguration_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceReference) DeepCopyInto(out *ResourceReference) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Reference != nil { + in, out := &in.Reference, &out.Reference + *out = new(genruntime.ResourceReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceReference. +func (in *ResourceReference) DeepCopy() *ResourceReference { + if in == nil { + return nil + } + out := new(ResourceReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceReference_STATUS) DeepCopyInto(out *ResourceReference_STATUS) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceReference_STATUS. +func (in *ResourceReference_STATUS) DeepCopy() *ResourceReference_STATUS { + if in == nil { + return nil + } + out := new(ResourceReference_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceSku) DeepCopyInto(out *ResourceSku) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = new(int) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Tier != nil { + in, out := &in.Tier, &out.Tier + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSku. +func (in *ResourceSku) DeepCopy() *ResourceSku { + if in == nil { + return nil + } + out := new(ResourceSku) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceSku_STATUS) DeepCopyInto(out *ResourceSku_STATUS) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = new(int) + **out = **in + } + if in.Family != nil { + in, out := &in.Family, &out.Family + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Size != nil { + in, out := &in.Size, &out.Size + *out = new(string) + **out = **in + } + if in.Tier != nil { + in, out := &in.Tier, &out.Tier + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSku_STATUS. +func (in *ResourceSku_STATUS) DeepCopy() *ResourceSku_STATUS { + if in == nil { + return nil + } + out := new(ResourceSku_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessSettings) DeepCopyInto(out *ServerlessSettings) { + *out = *in + if in.ConnectionTimeoutInSeconds != nil { + in, out := &in.ConnectionTimeoutInSeconds, &out.ConnectionTimeoutInSeconds + *out = new(int) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessSettings. +func (in *ServerlessSettings) DeepCopy() *ServerlessSettings { + if in == nil { + return nil + } + out := new(ServerlessSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessSettings_STATUS) DeepCopyInto(out *ServerlessSettings_STATUS) { + *out = *in + if in.ConnectionTimeoutInSeconds != nil { + in, out := &in.ConnectionTimeoutInSeconds, &out.ConnectionTimeoutInSeconds + *out = new(int) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessSettings_STATUS. +func (in *ServerlessSettings_STATUS) DeepCopy() *ServerlessSettings_STATUS { + if in == nil { + return nil + } + out := new(ServerlessSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessUpstreamSettings) DeepCopyInto(out *ServerlessUpstreamSettings) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Templates != nil { + in, out := &in.Templates, &out.Templates + *out = make([]UpstreamTemplate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessUpstreamSettings. +func (in *ServerlessUpstreamSettings) DeepCopy() *ServerlessUpstreamSettings { + if in == nil { + return nil + } + out := new(ServerlessUpstreamSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessUpstreamSettings_STATUS) DeepCopyInto(out *ServerlessUpstreamSettings_STATUS) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Templates != nil { + in, out := &in.Templates, &out.Templates + *out = make([]UpstreamTemplate_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessUpstreamSettings_STATUS. +func (in *ServerlessUpstreamSettings_STATUS) DeepCopy() *ServerlessUpstreamSettings_STATUS { + if in == nil { + return nil + } + out := new(ServerlessUpstreamSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) DeepCopyInto(out *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded. +func (in *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) DeepCopy() *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded { + if in == nil { + return nil + } + out := new(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalR) DeepCopyInto(out *SignalR) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalR. +func (in *SignalR) DeepCopy() *SignalR { + if in == nil { + return nil + } + out := new(SignalR) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SignalR) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRCorsSettings) DeepCopyInto(out *SignalRCorsSettings) { + *out = *in + if in.AllowedOrigins != nil { + in, out := &in.AllowedOrigins, &out.AllowedOrigins + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRCorsSettings. +func (in *SignalRCorsSettings) DeepCopy() *SignalRCorsSettings { + if in == nil { + return nil + } + out := new(SignalRCorsSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRCorsSettings_STATUS) DeepCopyInto(out *SignalRCorsSettings_STATUS) { + *out = *in + if in.AllowedOrigins != nil { + in, out := &in.AllowedOrigins, &out.AllowedOrigins + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRCorsSettings_STATUS. +func (in *SignalRCorsSettings_STATUS) DeepCopy() *SignalRCorsSettings_STATUS { + if in == nil { + return nil + } + out := new(SignalRCorsSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRFeature) DeepCopyInto(out *SignalRFeature) { + *out = *in + if in.Flag != nil { + in, out := &in.Flag, &out.Flag + *out = new(string) + **out = **in + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRFeature. +func (in *SignalRFeature) DeepCopy() *SignalRFeature { + if in == nil { + return nil + } + out := new(SignalRFeature) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRFeature_STATUS) DeepCopyInto(out *SignalRFeature_STATUS) { + *out = *in + if in.Flag != nil { + in, out := &in.Flag, &out.Flag + *out = new(string) + **out = **in + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRFeature_STATUS. +func (in *SignalRFeature_STATUS) DeepCopy() *SignalRFeature_STATUS { + if in == nil { + return nil + } + out := new(SignalRFeature_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRList) DeepCopyInto(out *SignalRList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SignalR, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRList. +func (in *SignalRList) DeepCopy() *SignalRList { + if in == nil { + return nil + } + out := new(SignalRList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SignalRList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRNetworkACLs) DeepCopyInto(out *SignalRNetworkACLs) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(string) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PrivateEndpoints != nil { + in, out := &in.PrivateEndpoints, &out.PrivateEndpoints + *out = make([]PrivateEndpointACL, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.PublicNetwork != nil { + in, out := &in.PublicNetwork, &out.PublicNetwork + *out = new(NetworkACL) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRNetworkACLs. +func (in *SignalRNetworkACLs) DeepCopy() *SignalRNetworkACLs { + if in == nil { + return nil + } + out := new(SignalRNetworkACLs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRNetworkACLs_STATUS) DeepCopyInto(out *SignalRNetworkACLs_STATUS) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(string) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PrivateEndpoints != nil { + in, out := &in.PrivateEndpoints, &out.PrivateEndpoints + *out = make([]PrivateEndpointACL_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.PublicNetwork != nil { + in, out := &in.PublicNetwork, &out.PublicNetwork + *out = new(NetworkACL_STATUS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRNetworkACLs_STATUS. +func (in *SignalRNetworkACLs_STATUS) DeepCopy() *SignalRNetworkACLs_STATUS { + if in == nil { + return nil + } + out := new(SignalRNetworkACLs_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalROperatorSecrets) DeepCopyInto(out *SignalROperatorSecrets) { + *out = *in + if in.PrimaryConnectionString != nil { + in, out := &in.PrimaryConnectionString, &out.PrimaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryKey != nil { + in, out := &in.PrimaryKey, &out.PrimaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecondaryConnectionString != nil { + in, out := &in.SecondaryConnectionString, &out.SecondaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryKey != nil { + in, out := &in.SecondaryKey, &out.SecondaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalROperatorSecrets. +func (in *SignalROperatorSecrets) DeepCopy() *SignalROperatorSecrets { + if in == nil { + return nil + } + out := new(SignalROperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalROperatorSpec) DeepCopyInto(out *SignalROperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = new(SignalROperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalROperatorSpec. +func (in *SignalROperatorSpec) DeepCopy() *SignalROperatorSpec { + if in == nil { + return nil + } + out := new(SignalROperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRTlsSettings) DeepCopyInto(out *SignalRTlsSettings) { + *out = *in + if in.ClientCertEnabled != nil { + in, out := &in.ClientCertEnabled, &out.ClientCertEnabled + *out = new(bool) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRTlsSettings. +func (in *SignalRTlsSettings) DeepCopy() *SignalRTlsSettings { + if in == nil { + return nil + } + out := new(SignalRTlsSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRTlsSettings_STATUS) DeepCopyInto(out *SignalRTlsSettings_STATUS) { + *out = *in + if in.ClientCertEnabled != nil { + in, out := &in.ClientCertEnabled, &out.ClientCertEnabled + *out = new(bool) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRTlsSettings_STATUS. +func (in *SignalRTlsSettings_STATUS) DeepCopy() *SignalRTlsSettings_STATUS { + if in == nil { + return nil + } + out := new(SignalRTlsSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalR_STATUS) DeepCopyInto(out *SignalR_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Cors != nil { + in, out := &in.Cors, &out.Cors + *out = new(SignalRCorsSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.DisableAadAuth != nil { + in, out := &in.DisableAadAuth, &out.DisableAadAuth + *out = new(bool) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.ExternalIP != nil { + in, out := &in.ExternalIP, &out.ExternalIP + *out = new(string) + **out = **in + } + if in.Features != nil { + in, out := &in.Features, &out.Features + *out = make([]SignalRFeature_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HostName != nil { + in, out := &in.HostName, &out.HostName + *out = new(string) + **out = **in + } + if in.HostNamePrefix != nil { + in, out := &in.HostNamePrefix, &out.HostNamePrefix + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ManagedIdentity_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.LiveTraceConfiguration != nil { + in, out := &in.LiveTraceConfiguration, &out.LiveTraceConfiguration + *out = new(LiveTraceConfiguration_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NetworkACLs != nil { + in, out := &in.NetworkACLs, &out.NetworkACLs + *out = new(SignalRNetworkACLs_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } + if in.PublicPort != nil { + in, out := &in.PublicPort, &out.PublicPort + *out = new(int) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceLogConfiguration != nil { + in, out := &in.ResourceLogConfiguration, &out.ResourceLogConfiguration + *out = new(ResourceLogConfiguration_STATUS) + (*in).DeepCopyInto(*out) + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.ServerPort != nil { + in, out := &in.ServerPort, &out.ServerPort + *out = new(int) + **out = **in + } + if in.Serverless != nil { + in, out := &in.Serverless, &out.Serverless + *out = new(ServerlessSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SharedPrivateLinkResources != nil { + in, out := &in.SharedPrivateLinkResources, &out.SharedPrivateLinkResources + *out = make([]SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Tls != nil { + in, out := &in.Tls, &out.Tls + *out = new(SignalRTlsSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Upstream != nil { + in, out := &in.Upstream, &out.Upstream + *out = new(ServerlessUpstreamSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalR_STATUS. +func (in *SignalR_STATUS) DeepCopy() *SignalR_STATUS { + if in == nil { + return nil + } + out := new(SignalR_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalR_Spec) DeepCopyInto(out *SignalR_Spec) { + *out = *in + if in.Cors != nil { + in, out := &in.Cors, &out.Cors + *out = new(SignalRCorsSettings) + (*in).DeepCopyInto(*out) + } + if in.DisableAadAuth != nil { + in, out := &in.DisableAadAuth, &out.DisableAadAuth + *out = new(bool) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.Features != nil { + in, out := &in.Features, &out.Features + *out = make([]SignalRFeature, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ManagedIdentity) + (*in).DeepCopyInto(*out) + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(string) + **out = **in + } + if in.LiveTraceConfiguration != nil { + in, out := &in.LiveTraceConfiguration, &out.LiveTraceConfiguration + *out = new(LiveTraceConfiguration) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.NetworkACLs != nil { + in, out := &in.NetworkACLs, &out.NetworkACLs + *out = new(SignalRNetworkACLs) + (*in).DeepCopyInto(*out) + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(SignalROperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceLogConfiguration != nil { + in, out := &in.ResourceLogConfiguration, &out.ResourceLogConfiguration + *out = new(ResourceLogConfiguration) + (*in).DeepCopyInto(*out) + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.Serverless != nil { + in, out := &in.Serverless, &out.Serverless + *out = new(ServerlessSettings) + (*in).DeepCopyInto(*out) + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Tls != nil { + in, out := &in.Tls, &out.Tls + *out = new(SignalRTlsSettings) + (*in).DeepCopyInto(*out) + } + if in.Upstream != nil { + in, out := &in.Upstream, &out.Upstream + *out = new(ServerlessUpstreamSettings) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalR_Spec. +func (in *SignalR_Spec) DeepCopy() *SignalR_Spec { + if in == nil { + return nil + } + out := new(SignalR_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SystemData_STATUS) DeepCopyInto(out *SystemData_STATUS) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByType != nil { + in, out := &in.CreatedByType, &out.CreatedByType + *out = new(string) + **out = **in + } + if in.LastModifiedAt != nil { + in, out := &in.LastModifiedAt, &out.LastModifiedAt + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(string) + **out = **in + } + if in.LastModifiedByType != nil { + in, out := &in.LastModifiedByType, &out.LastModifiedByType + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData_STATUS. +func (in *SystemData_STATUS) DeepCopy() *SystemData_STATUS { + if in == nil { + return nil + } + out := new(SystemData_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamAuthSettings) DeepCopyInto(out *UpstreamAuthSettings) { + *out = *in + if in.ManagedIdentity != nil { + in, out := &in.ManagedIdentity, &out.ManagedIdentity + *out = new(ManagedIdentitySettings) + (*in).DeepCopyInto(*out) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamAuthSettings. +func (in *UpstreamAuthSettings) DeepCopy() *UpstreamAuthSettings { + if in == nil { + return nil + } + out := new(UpstreamAuthSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamAuthSettings_STATUS) DeepCopyInto(out *UpstreamAuthSettings_STATUS) { + *out = *in + if in.ManagedIdentity != nil { + in, out := &in.ManagedIdentity, &out.ManagedIdentity + *out = new(ManagedIdentitySettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamAuthSettings_STATUS. +func (in *UpstreamAuthSettings_STATUS) DeepCopy() *UpstreamAuthSettings_STATUS { + if in == nil { + return nil + } + out := new(UpstreamAuthSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamTemplate) DeepCopyInto(out *UpstreamTemplate) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(UpstreamAuthSettings) + (*in).DeepCopyInto(*out) + } + if in.CategoryPattern != nil { + in, out := &in.CategoryPattern, &out.CategoryPattern + *out = new(string) + **out = **in + } + if in.EventPattern != nil { + in, out := &in.EventPattern, &out.EventPattern + *out = new(string) + **out = **in + } + if in.HubPattern != nil { + in, out := &in.HubPattern, &out.HubPattern + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.UrlTemplate != nil { + in, out := &in.UrlTemplate, &out.UrlTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamTemplate. +func (in *UpstreamTemplate) DeepCopy() *UpstreamTemplate { + if in == nil { + return nil + } + out := new(UpstreamTemplate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamTemplate_STATUS) DeepCopyInto(out *UpstreamTemplate_STATUS) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(UpstreamAuthSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.CategoryPattern != nil { + in, out := &in.CategoryPattern, &out.CategoryPattern + *out = new(string) + **out = **in + } + if in.EventPattern != nil { + in, out := &in.EventPattern, &out.EventPattern + *out = new(string) + **out = **in + } + if in.HubPattern != nil { + in, out := &in.HubPattern, &out.HubPattern + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.UrlTemplate != nil { + in, out := &in.UrlTemplate, &out.UrlTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamTemplate_STATUS. +func (in *UpstreamTemplate_STATUS) DeepCopy() *UpstreamTemplate_STATUS { + if in == nil { + return nil + } + out := new(UpstreamTemplate_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAssignedIdentityDetails) DeepCopyInto(out *UserAssignedIdentityDetails) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + out.Reference = in.Reference +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAssignedIdentityDetails. +func (in *UserAssignedIdentityDetails) DeepCopy() *UserAssignedIdentityDetails { + if in == nil { + return nil + } + out := new(UserAssignedIdentityDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAssignedIdentityProperty_STATUS) DeepCopyInto(out *UserAssignedIdentityProperty_STATUS) { + *out = *in + if in.ClientId != nil { + in, out := &in.ClientId, &out.ClientId + *out = new(string) + **out = **in + } + if in.PrincipalId != nil { + in, out := &in.PrincipalId, &out.PrincipalId + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAssignedIdentityProperty_STATUS. +func (in *UserAssignedIdentityProperty_STATUS) DeepCopy() *UserAssignedIdentityProperty_STATUS { + if in == nil { + return nil + } + out := new(UserAssignedIdentityProperty_STATUS) + in.DeepCopyInto(out) + return out +} diff --git a/v2/api/signalrservice/v1api20240301/structure.txt b/v2/api/signalrservice/v1api20240301/structure.txt new file mode 100644 index 00000000000..e13a3332a5f --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/structure.txt @@ -0,0 +1,411 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301 +--------------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2024-03-01" +CustomCertificate: Resource +├── Owner: SignalR +├── Spec: Object (7 properties) +│ ├── AzureName: string +│ ├── KeyVaultBaseUri: *string +│ ├── KeyVaultBaseUriFromConfig: *genruntime.ConfigMapReference +│ ├── KeyVaultSecretName: *string +│ ├── KeyVaultSecretVersion: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ └── Owner: *genruntime.KnownResourceReference +└── Status: Object (9 properties) + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── KeyVaultBaseUri: *string + ├── KeyVaultSecretName: *string + ├── KeyVaultSecretVersion: *string + ├── Name: *string + ├── ProvisioningState: *Enum (9 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Moving" + │ ├── "Running" + │ ├── "Succeeded" + │ ├── "Unknown" + │ └── "Updating" + ├── SystemData: *Object (6 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *Enum (4 values) + │ │ ├── "Application" + │ │ ├── "Key" + │ │ ├── "ManagedIdentity" + │ │ └── "User" + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ └── LastModifiedByType: *Enum (4 values) + │ ├── "Application" + │ ├── "Key" + │ ├── "ManagedIdentity" + │ └── "User" + └── Type: *string +CustomDomain: Resource +├── Owner: SignalR +├── Spec: Object (5 properties) +│ ├── AzureName: string +│ ├── CustomCertificate: *Object (1 property) +│ │ └── Reference: *genruntime.ResourceReference +│ ├── DomainName: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ └── Owner: *genruntime.KnownResourceReference +└── Status: Object (8 properties) + ├── Conditions: conditions.Condition[] + ├── CustomCertificate: *Object (1 property) + │ └── Id: *string + ├── DomainName: *string + ├── Id: *string + ├── Name: *string + ├── ProvisioningState: *Enum (9 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Moving" + │ ├── "Running" + │ ├── "Succeeded" + │ ├── "Unknown" + │ └── "Updating" + ├── SystemData: *Object (6 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *Enum (4 values) + │ │ ├── "Application" + │ │ ├── "Key" + │ │ ├── "ManagedIdentity" + │ │ └── "User" + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ └── LastModifiedByType: *Enum (4 values) + │ ├── "Application" + │ ├── "Key" + │ ├── "ManagedIdentity" + │ └── "User" + └── Type: *string +Replica: Resource +├── Owner: SignalR +├── Spec: Object (8 properties) +│ ├── AzureName: Validated (3 rules) +│ │ ├── Rule 0: MaxLength: 63 +│ │ ├── Rule 1: MinLength: 3 +│ │ └── Rule 2: Pattern: "^[a-zA-Z][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]$" +│ ├── Location: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── RegionEndpointEnabled: *string +│ ├── ResourceStopped: *string +│ ├── Sku: *Object (3 properties) +│ │ ├── Capacity: *int +│ │ ├── Name: *string +│ │ └── Tier: *Enum (4 values) +│ │ ├── "Basic" +│ │ ├── "Free" +│ │ ├── "Premium" +│ │ └── "Standard" +│ └── Tags: map[string]string +└── Status: Object (11 properties) + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── Location: *string + ├── Name: *string + ├── ProvisioningState: *Enum (9 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Moving" + │ ├── "Running" + │ ├── "Succeeded" + │ ├── "Unknown" + │ └── "Updating" + ├── RegionEndpointEnabled: *string + ├── ResourceStopped: *string + ├── Sku: *Object (5 properties) + │ ├── Capacity: *int + │ ├── Family: *string + │ ├── Name: *string + │ ├── Size: *string + │ └── Tier: *Enum (4 values) + │ ├── "Basic" + │ ├── "Free" + │ ├── "Premium" + │ └── "Standard" + ├── SystemData: *Object (6 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *Enum (4 values) + │ │ ├── "Application" + │ │ ├── "Key" + │ │ ├── "ManagedIdentity" + │ │ └── "User" + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ └── LastModifiedByType: *Enum (4 values) + │ ├── "Application" + │ ├── "Key" + │ ├── "ManagedIdentity" + │ └── "User" + ├── Tags: map[string]string + └── Type: *string +SignalR: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (21 properties) +│ ├── AzureName: Validated (3 rules) +│ │ ├── Rule 0: MaxLength: 63 +│ │ ├── Rule 1: MinLength: 3 +│ │ └── Rule 2: Pattern: "^[a-zA-Z][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]$" +│ ├── Cors: *Object (1 property) +│ │ └── AllowedOrigins: string[] +│ ├── DisableAadAuth: *bool +│ ├── DisableLocalAuth: *bool +│ ├── Features: Object (3 properties)[] +│ │ ├── Flag: *Enum (4 values) +│ │ │ ├── "EnableConnectivityLogs" +│ │ │ ├── "EnableLiveTrace" +│ │ │ ├── "EnableMessagingLogs" +│ │ │ └── "ServiceMode" +│ │ ├── Properties: map[string]string +│ │ └── Value: Validated<*string> (2 rules) +│ │ ├── Rule 0: MaxLength: 128 +│ │ └── Rule 1: MinLength: 1 +│ ├── Identity: *Object (2 properties) +│ │ ├── Type: *Enum (3 values) +│ │ │ ├── "None" +│ │ │ ├── "SystemAssigned" +│ │ │ └── "UserAssigned" +│ │ └── UserAssignedIdentities: Object (1 property)[] +│ │ └── Reference: genruntime.ResourceReference +│ ├── Kind: *Enum (2 values) +│ │ ├── "RawWebSockets" +│ │ └── "SignalR" +│ ├── LiveTraceConfiguration: *Object (2 properties) +│ │ ├── Categories: Object (2 properties)[] +│ │ │ ├── Enabled: *string +│ │ │ └── Name: *string +│ │ └── Enabled: *string +│ ├── Location: *string +│ ├── NetworkACLs: *Object (4 properties) +│ │ ├── DefaultAction: *Enum (2 values) +│ │ │ ├── "Allow" +│ │ │ └── "Deny" +│ │ ├── IpRules: Validated (1 rule) +│ │ │ ├── Action: *Enum (2 values) +│ │ │ │ ├── "Allow" +│ │ │ │ └── "Deny" +│ │ │ ├── Value: *string +│ │ │ └── Rule 0: MaxItems: 30 +│ │ ├── PrivateEndpoints: Object (3 properties)[] +│ │ │ ├── Allow: Enum (4 values)[] +│ │ │ │ ├── "ClientConnection" +│ │ │ │ ├── "RESTAPI" +│ │ │ │ ├── "ServerConnection" +│ │ │ │ └── "Trace" +│ │ │ ├── Deny: Enum (4 values)[] +│ │ │ │ ├── "ClientConnection" +│ │ │ │ ├── "RESTAPI" +│ │ │ │ ├── "ServerConnection" +│ │ │ │ └── "Trace" +│ │ │ └── Name: *string +│ │ └── PublicNetwork: *Object (2 properties) +│ │ ├── Allow: Enum (4 values)[] +│ │ │ ├── "ClientConnection" +│ │ │ ├── "RESTAPI" +│ │ │ ├── "ServerConnection" +│ │ │ └── "Trace" +│ │ └── Deny: Enum (4 values)[] +│ │ ├── "ClientConnection" +│ │ ├── "RESTAPI" +│ │ ├── "ServerConnection" +│ │ └── "Trace" +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── SecretExpressions: *core.DestinationExpression[] +│ │ └── Secrets: *Object (4 properties) +│ │ ├── PrimaryConnectionString: *genruntime.SecretDestination +│ │ ├── PrimaryKey: *genruntime.SecretDestination +│ │ ├── SecondaryConnectionString: *genruntime.SecretDestination +│ │ └── SecondaryKey: *genruntime.SecretDestination +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PublicNetworkAccess: *string +│ ├── RegionEndpointEnabled: *string +│ ├── ResourceLogConfiguration: *Object (1 property) +│ │ └── Categories: Object (2 properties)[] +│ │ ├── Enabled: *string +│ │ └── Name: *string +│ ├── ResourceStopped: *string +│ ├── Serverless: *Object (1 property) +│ │ └── ConnectionTimeoutInSeconds: Validated<*int> (2 rules) +│ │ ├── Rule 0: Maximum: 120 +│ │ └── Rule 1: Minimum: 1 +│ ├── Sku: *Object (3 properties) +│ │ ├── Capacity: *int +│ │ ├── Name: *string +│ │ └── Tier: *Enum (4 values) +│ │ ├── "Basic" +│ │ ├── "Free" +│ │ ├── "Premium" +│ │ └── "Standard" +│ ├── Tags: map[string]string +│ ├── Tls: *Object (1 property) +│ │ └── ClientCertEnabled: *bool +│ └── Upstream: *Object (1 property) +│ └── Templates: Object (5 properties)[] +│ ├── Auth: *Object (2 properties) +│ │ ├── ManagedIdentity: *Object (1 property) +│ │ │ └── Resource: *string +│ │ └── Type: *Enum (2 values) +│ │ ├── "ManagedIdentity" +│ │ └── "None" +│ ├── CategoryPattern: *string +│ ├── EventPattern: *string +│ ├── HubPattern: *string +│ └── UrlTemplate: *string +└── Status: Object (32 properties) + ├── Conditions: conditions.Condition[] + ├── Cors: *Object (1 property) + │ └── AllowedOrigins: string[] + ├── DisableAadAuth: *bool + ├── DisableLocalAuth: *bool + ├── ExternalIP: *string + ├── Features: Object (3 properties)[] + │ ├── Flag: *Enum (4 values) + │ │ ├── "EnableConnectivityLogs" + │ │ ├── "EnableLiveTrace" + │ │ ├── "EnableMessagingLogs" + │ │ └── "ServiceMode" + │ ├── Properties: map[string]string + │ └── Value: *string + ├── HostName: *string + ├── HostNamePrefix: *string + ├── Id: *string + ├── Identity: *Object (4 properties) + │ ├── PrincipalId: *string + │ ├── TenantId: *string + │ ├── Type: *Enum (3 values) + │ │ ├── "None" + │ │ ├── "SystemAssigned" + │ │ └── "UserAssigned" + │ └── UserAssignedIdentities: map[string]Object (2 properties) + │ ├── ClientId: *string + │ └── PrincipalId: *string + ├── Kind: *Enum (2 values) + │ ├── "RawWebSockets" + │ └── "SignalR" + ├── LiveTraceConfiguration: *Object (2 properties) + │ ├── Categories: Object (2 properties)[] + │ │ ├── Enabled: *string + │ │ └── Name: *string + │ └── Enabled: *string + ├── Location: *string + ├── Name: *string + ├── NetworkACLs: *Object (4 properties) + │ ├── DefaultAction: *Enum (2 values) + │ │ ├── "Allow" + │ │ └── "Deny" + │ ├── IpRules: Object (2 properties)[] + │ │ ├── Action: *Enum (2 values) + │ │ │ ├── "Allow" + │ │ │ └── "Deny" + │ │ └── Value: *string + │ ├── PrivateEndpoints: Object (3 properties)[] + │ │ ├── Allow: Enum (4 values)[] + │ │ │ ├── "ClientConnection" + │ │ │ ├── "RESTAPI" + │ │ │ ├── "ServerConnection" + │ │ │ └── "Trace" + │ │ ├── Deny: Enum (4 values)[] + │ │ │ ├── "ClientConnection" + │ │ │ ├── "RESTAPI" + │ │ │ ├── "ServerConnection" + │ │ │ └── "Trace" + │ │ └── Name: *string + │ └── PublicNetwork: *Object (2 properties) + │ ├── Allow: Enum (4 values)[] + │ │ ├── "ClientConnection" + │ │ ├── "RESTAPI" + │ │ ├── "ServerConnection" + │ │ └── "Trace" + │ └── Deny: Enum (4 values)[] + │ ├── "ClientConnection" + │ ├── "RESTAPI" + │ ├── "ServerConnection" + │ └── "Trace" + ├── PrivateEndpointConnections: Object (1 property)[] + │ └── Id: *string + ├── ProvisioningState: *Enum (9 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Moving" + │ ├── "Running" + │ ├── "Succeeded" + │ ├── "Unknown" + │ └── "Updating" + ├── PublicNetworkAccess: *string + ├── PublicPort: *int + ├── RegionEndpointEnabled: *string + ├── ResourceLogConfiguration: *Object (1 property) + │ └── Categories: Object (2 properties)[] + │ ├── Enabled: *string + │ └── Name: *string + ├── ResourceStopped: *string + ├── ServerPort: *int + ├── Serverless: *Object (1 property) + │ └── ConnectionTimeoutInSeconds: *int + ├── SharedPrivateLinkResources: Object (1 property)[] + │ └── Id: *string + ├── Sku: *Object (5 properties) + │ ├── Capacity: *int + │ ├── Family: *string + │ ├── Name: *string + │ ├── Size: *string + │ └── Tier: *Enum (4 values) + │ ├── "Basic" + │ ├── "Free" + │ ├── "Premium" + │ └── "Standard" + ├── SystemData: *Object (6 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *Enum (4 values) + │ │ ├── "Application" + │ │ ├── "Key" + │ │ ├── "ManagedIdentity" + │ │ └── "User" + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ └── LastModifiedByType: *Enum (4 values) + │ ├── "Application" + │ ├── "Key" + │ ├── "ManagedIdentity" + │ └── "User" + ├── Tags: map[string]string + ├── Tls: *Object (1 property) + │ └── ClientCertEnabled: *bool + ├── Type: *string + ├── Upstream: *Object (1 property) + │ └── Templates: Object (5 properties)[] + │ ├── Auth: *Object (2 properties) + │ │ ├── ManagedIdentity: *Object (1 property) + │ │ │ └── Resource: *string + │ │ └── Type: *Enum (2 values) + │ │ ├── "ManagedIdentity" + │ │ └── "None" + │ ├── CategoryPattern: *string + │ ├── EventPattern: *string + │ ├── HubPattern: *string + │ └── UrlTemplate: *string + └── Version: *string diff --git a/v2/api/signalrservice/v1api20240301/zz_generated.deepcopy.go b/v2/api/signalrservice/v1api20240301/zz_generated.deepcopy.go new file mode 100644 index 00000000000..986c7c47f33 --- /dev/null +++ b/v2/api/signalrservice/v1api20240301/zz_generated.deepcopy.go @@ -0,0 +1,2202 @@ +//go:build !ignore_autogenerated + +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1api20240301 + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificate) DeepCopyInto(out *CustomCertificate) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate. +func (in *CustomCertificate) DeepCopy() *CustomCertificate { + if in == nil { + return nil + } + out := new(CustomCertificate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomCertificate) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificateList) DeepCopyInto(out *CustomCertificateList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomCertificate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificateList. +func (in *CustomCertificateList) DeepCopy() *CustomCertificateList { + if in == nil { + return nil + } + out := new(CustomCertificateList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomCertificateList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificateOperatorSpec) DeepCopyInto(out *CustomCertificateOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificateOperatorSpec. +func (in *CustomCertificateOperatorSpec) DeepCopy() *CustomCertificateOperatorSpec { + if in == nil { + return nil + } + out := new(CustomCertificateOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificate_STATUS) DeepCopyInto(out *CustomCertificate_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.KeyVaultBaseUri != nil { + in, out := &in.KeyVaultBaseUri, &out.KeyVaultBaseUri + *out = new(string) + **out = **in + } + if in.KeyVaultSecretName != nil { + in, out := &in.KeyVaultSecretName, &out.KeyVaultSecretName + *out = new(string) + **out = **in + } + if in.KeyVaultSecretVersion != nil { + in, out := &in.KeyVaultSecretVersion, &out.KeyVaultSecretVersion + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ProvisioningState_STATUS) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate_STATUS. +func (in *CustomCertificate_STATUS) DeepCopy() *CustomCertificate_STATUS { + if in == nil { + return nil + } + out := new(CustomCertificate_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomCertificate_Spec) DeepCopyInto(out *CustomCertificate_Spec) { + *out = *in + if in.KeyVaultBaseUri != nil { + in, out := &in.KeyVaultBaseUri, &out.KeyVaultBaseUri + *out = new(string) + **out = **in + } + if in.KeyVaultBaseUriFromConfig != nil { + in, out := &in.KeyVaultBaseUriFromConfig, &out.KeyVaultBaseUriFromConfig + *out = new(genruntime.ConfigMapReference) + **out = **in + } + if in.KeyVaultSecretName != nil { + in, out := &in.KeyVaultSecretName, &out.KeyVaultSecretName + *out = new(string) + **out = **in + } + if in.KeyVaultSecretVersion != nil { + in, out := &in.KeyVaultSecretVersion, &out.KeyVaultSecretVersion + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(CustomCertificateOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate_Spec. +func (in *CustomCertificate_Spec) DeepCopy() *CustomCertificate_Spec { + if in == nil { + return nil + } + out := new(CustomCertificate_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomain) DeepCopyInto(out *CustomDomain) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomain. +func (in *CustomDomain) DeepCopy() *CustomDomain { + if in == nil { + return nil + } + out := new(CustomDomain) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomDomain) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomainList) DeepCopyInto(out *CustomDomainList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomDomain, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomainList. +func (in *CustomDomainList) DeepCopy() *CustomDomainList { + if in == nil { + return nil + } + out := new(CustomDomainList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CustomDomainList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomainOperatorSpec) DeepCopyInto(out *CustomDomainOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomainOperatorSpec. +func (in *CustomDomainOperatorSpec) DeepCopy() *CustomDomainOperatorSpec { + if in == nil { + return nil + } + out := new(CustomDomainOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomain_STATUS) DeepCopyInto(out *CustomDomain_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.CustomCertificate != nil { + in, out := &in.CustomCertificate, &out.CustomCertificate + *out = new(ResourceReference_STATUS) + (*in).DeepCopyInto(*out) + } + if in.DomainName != nil { + in, out := &in.DomainName, &out.DomainName + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ProvisioningState_STATUS) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomain_STATUS. +func (in *CustomDomain_STATUS) DeepCopy() *CustomDomain_STATUS { + if in == nil { + return nil + } + out := new(CustomDomain_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomDomain_Spec) DeepCopyInto(out *CustomDomain_Spec) { + *out = *in + if in.CustomCertificate != nil { + in, out := &in.CustomCertificate, &out.CustomCertificate + *out = new(ResourceReference) + (*in).DeepCopyInto(*out) + } + if in.DomainName != nil { + in, out := &in.DomainName, &out.DomainName + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(CustomDomainOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomDomain_Spec. +func (in *CustomDomain_Spec) DeepCopy() *CustomDomain_Spec { + if in == nil { + return nil + } + out := new(CustomDomain_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPRule) DeepCopyInto(out *IPRule) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(ACLAction) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule. +func (in *IPRule) DeepCopy() *IPRule { + if in == nil { + return nil + } + out := new(IPRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPRule_STATUS) DeepCopyInto(out *IPRule_STATUS) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(ACLAction_STATUS) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule_STATUS. +func (in *IPRule_STATUS) DeepCopy() *IPRule_STATUS { + if in == nil { + return nil + } + out := new(IPRule_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceCategory) DeepCopyInto(out *LiveTraceCategory) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceCategory. +func (in *LiveTraceCategory) DeepCopy() *LiveTraceCategory { + if in == nil { + return nil + } + out := new(LiveTraceCategory) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceCategory_STATUS) DeepCopyInto(out *LiveTraceCategory_STATUS) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceCategory_STATUS. +func (in *LiveTraceCategory_STATUS) DeepCopy() *LiveTraceCategory_STATUS { + if in == nil { + return nil + } + out := new(LiveTraceCategory_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceConfiguration) DeepCopyInto(out *LiveTraceConfiguration) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]LiveTraceCategory, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceConfiguration. +func (in *LiveTraceConfiguration) DeepCopy() *LiveTraceConfiguration { + if in == nil { + return nil + } + out := new(LiveTraceConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LiveTraceConfiguration_STATUS) DeepCopyInto(out *LiveTraceConfiguration_STATUS) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]LiveTraceCategory_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LiveTraceConfiguration_STATUS. +func (in *LiveTraceConfiguration_STATUS) DeepCopy() *LiveTraceConfiguration_STATUS { + if in == nil { + return nil + } + out := new(LiveTraceConfiguration_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentity) DeepCopyInto(out *ManagedIdentity) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(ManagedIdentityType) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make([]UserAssignedIdentityDetails, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentity. +func (in *ManagedIdentity) DeepCopy() *ManagedIdentity { + if in == nil { + return nil + } + out := new(ManagedIdentity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentitySettings) DeepCopyInto(out *ManagedIdentitySettings) { + *out = *in + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentitySettings. +func (in *ManagedIdentitySettings) DeepCopy() *ManagedIdentitySettings { + if in == nil { + return nil + } + out := new(ManagedIdentitySettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentitySettings_STATUS) DeepCopyInto(out *ManagedIdentitySettings_STATUS) { + *out = *in + if in.Resource != nil { + in, out := &in.Resource, &out.Resource + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentitySettings_STATUS. +func (in *ManagedIdentitySettings_STATUS) DeepCopy() *ManagedIdentitySettings_STATUS { + if in == nil { + return nil + } + out := new(ManagedIdentitySettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ManagedIdentity_STATUS) DeepCopyInto(out *ManagedIdentity_STATUS) { + *out = *in + if in.PrincipalId != nil { + in, out := &in.PrincipalId, &out.PrincipalId + *out = new(string) + **out = **in + } + if in.TenantId != nil { + in, out := &in.TenantId, &out.TenantId + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(ManagedIdentityType_STATUS) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make(map[string]UserAssignedIdentityProperty_STATUS, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedIdentity_STATUS. +func (in *ManagedIdentity_STATUS) DeepCopy() *ManagedIdentity_STATUS { + if in == nil { + return nil + } + out := new(ManagedIdentity_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkACL) DeepCopyInto(out *NetworkACL) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]SignalRRequestType, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]SignalRRequestType, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkACL. +func (in *NetworkACL) DeepCopy() *NetworkACL { + if in == nil { + return nil + } + out := new(NetworkACL) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkACL_STATUS) DeepCopyInto(out *NetworkACL_STATUS) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]SignalRRequestType_STATUS, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]SignalRRequestType_STATUS, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkACL_STATUS. +func (in *NetworkACL_STATUS) DeepCopy() *NetworkACL_STATUS { + if in == nil { + return nil + } + out := new(NetworkACL_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointACL) DeepCopyInto(out *PrivateEndpointACL) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]SignalRRequestType, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]SignalRRequestType, len(*in)) + copy(*out, *in) + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointACL. +func (in *PrivateEndpointACL) DeepCopy() *PrivateEndpointACL { + if in == nil { + return nil + } + out := new(PrivateEndpointACL) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointACL_STATUS) DeepCopyInto(out *PrivateEndpointACL_STATUS) { + *out = *in + if in.Allow != nil { + in, out := &in.Allow, &out.Allow + *out = make([]SignalRRequestType_STATUS, len(*in)) + copy(*out, *in) + } + if in.Deny != nil { + in, out := &in.Deny, &out.Deny + *out = make([]SignalRRequestType_STATUS, len(*in)) + copy(*out, *in) + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointACL_STATUS. +func (in *PrivateEndpointACL_STATUS) DeepCopy() *PrivateEndpointACL_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointACL_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) DeepCopyInto(out *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded. +func (in *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) DeepCopy() *PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded { + if in == nil { + return nil + } + out := new(PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica) DeepCopyInto(out *Replica) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica. +func (in *Replica) DeepCopy() *Replica { + if in == nil { + return nil + } + out := new(Replica) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Replica) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaList) DeepCopyInto(out *ReplicaList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Replica, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaList. +func (in *ReplicaList) DeepCopy() *ReplicaList { + if in == nil { + return nil + } + out := new(ReplicaList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaOperatorSpec) DeepCopyInto(out *ReplicaOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaOperatorSpec. +func (in *ReplicaOperatorSpec) DeepCopy() *ReplicaOperatorSpec { + if in == nil { + return nil + } + out := new(ReplicaOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_STATUS) DeepCopyInto(out *Replica_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ProvisioningState_STATUS) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_STATUS. +func (in *Replica_STATUS) DeepCopy() *Replica_STATUS { + if in == nil { + return nil + } + out := new(Replica_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_Spec) DeepCopyInto(out *Replica_Spec) { + *out = *in + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(ReplicaOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_Spec. +func (in *Replica_Spec) DeepCopy() *Replica_Spec { + if in == nil { + return nil + } + out := new(Replica_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogCategory) DeepCopyInto(out *ResourceLogCategory) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogCategory. +func (in *ResourceLogCategory) DeepCopy() *ResourceLogCategory { + if in == nil { + return nil + } + out := new(ResourceLogCategory) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogCategory_STATUS) DeepCopyInto(out *ResourceLogCategory_STATUS) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogCategory_STATUS. +func (in *ResourceLogCategory_STATUS) DeepCopy() *ResourceLogCategory_STATUS { + if in == nil { + return nil + } + out := new(ResourceLogCategory_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogConfiguration) DeepCopyInto(out *ResourceLogConfiguration) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]ResourceLogCategory, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogConfiguration. +func (in *ResourceLogConfiguration) DeepCopy() *ResourceLogConfiguration { + if in == nil { + return nil + } + out := new(ResourceLogConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceLogConfiguration_STATUS) DeepCopyInto(out *ResourceLogConfiguration_STATUS) { + *out = *in + if in.Categories != nil { + in, out := &in.Categories, &out.Categories + *out = make([]ResourceLogCategory_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceLogConfiguration_STATUS. +func (in *ResourceLogConfiguration_STATUS) DeepCopy() *ResourceLogConfiguration_STATUS { + if in == nil { + return nil + } + out := new(ResourceLogConfiguration_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceReference) DeepCopyInto(out *ResourceReference) { + *out = *in + if in.Reference != nil { + in, out := &in.Reference, &out.Reference + *out = new(genruntime.ResourceReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceReference. +func (in *ResourceReference) DeepCopy() *ResourceReference { + if in == nil { + return nil + } + out := new(ResourceReference) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceReference_STATUS) DeepCopyInto(out *ResourceReference_STATUS) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceReference_STATUS. +func (in *ResourceReference_STATUS) DeepCopy() *ResourceReference_STATUS { + if in == nil { + return nil + } + out := new(ResourceReference_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceSku) DeepCopyInto(out *ResourceSku) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = new(int) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Tier != nil { + in, out := &in.Tier, &out.Tier + *out = new(SignalRSkuTier) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSku. +func (in *ResourceSku) DeepCopy() *ResourceSku { + if in == nil { + return nil + } + out := new(ResourceSku) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceSku_STATUS) DeepCopyInto(out *ResourceSku_STATUS) { + *out = *in + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = new(int) + **out = **in + } + if in.Family != nil { + in, out := &in.Family, &out.Family + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Size != nil { + in, out := &in.Size, &out.Size + *out = new(string) + **out = **in + } + if in.Tier != nil { + in, out := &in.Tier, &out.Tier + *out = new(SignalRSkuTier_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSku_STATUS. +func (in *ResourceSku_STATUS) DeepCopy() *ResourceSku_STATUS { + if in == nil { + return nil + } + out := new(ResourceSku_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessSettings) DeepCopyInto(out *ServerlessSettings) { + *out = *in + if in.ConnectionTimeoutInSeconds != nil { + in, out := &in.ConnectionTimeoutInSeconds, &out.ConnectionTimeoutInSeconds + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessSettings. +func (in *ServerlessSettings) DeepCopy() *ServerlessSettings { + if in == nil { + return nil + } + out := new(ServerlessSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessSettings_STATUS) DeepCopyInto(out *ServerlessSettings_STATUS) { + *out = *in + if in.ConnectionTimeoutInSeconds != nil { + in, out := &in.ConnectionTimeoutInSeconds, &out.ConnectionTimeoutInSeconds + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessSettings_STATUS. +func (in *ServerlessSettings_STATUS) DeepCopy() *ServerlessSettings_STATUS { + if in == nil { + return nil + } + out := new(ServerlessSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessUpstreamSettings) DeepCopyInto(out *ServerlessUpstreamSettings) { + *out = *in + if in.Templates != nil { + in, out := &in.Templates, &out.Templates + *out = make([]UpstreamTemplate, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessUpstreamSettings. +func (in *ServerlessUpstreamSettings) DeepCopy() *ServerlessUpstreamSettings { + if in == nil { + return nil + } + out := new(ServerlessUpstreamSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServerlessUpstreamSettings_STATUS) DeepCopyInto(out *ServerlessUpstreamSettings_STATUS) { + *out = *in + if in.Templates != nil { + in, out := &in.Templates, &out.Templates + *out = make([]UpstreamTemplate_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServerlessUpstreamSettings_STATUS. +func (in *ServerlessUpstreamSettings_STATUS) DeepCopy() *ServerlessUpstreamSettings_STATUS { + if in == nil { + return nil + } + out := new(ServerlessUpstreamSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) DeepCopyInto(out *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded. +func (in *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) DeepCopy() *SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded { + if in == nil { + return nil + } + out := new(SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalR) DeepCopyInto(out *SignalR) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalR. +func (in *SignalR) DeepCopy() *SignalR { + if in == nil { + return nil + } + out := new(SignalR) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SignalR) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRCorsSettings) DeepCopyInto(out *SignalRCorsSettings) { + *out = *in + if in.AllowedOrigins != nil { + in, out := &in.AllowedOrigins, &out.AllowedOrigins + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRCorsSettings. +func (in *SignalRCorsSettings) DeepCopy() *SignalRCorsSettings { + if in == nil { + return nil + } + out := new(SignalRCorsSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRCorsSettings_STATUS) DeepCopyInto(out *SignalRCorsSettings_STATUS) { + *out = *in + if in.AllowedOrigins != nil { + in, out := &in.AllowedOrigins, &out.AllowedOrigins + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRCorsSettings_STATUS. +func (in *SignalRCorsSettings_STATUS) DeepCopy() *SignalRCorsSettings_STATUS { + if in == nil { + return nil + } + out := new(SignalRCorsSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRFeature) DeepCopyInto(out *SignalRFeature) { + *out = *in + if in.Flag != nil { + in, out := &in.Flag, &out.Flag + *out = new(FeatureFlags) + **out = **in + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRFeature. +func (in *SignalRFeature) DeepCopy() *SignalRFeature { + if in == nil { + return nil + } + out := new(SignalRFeature) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRFeature_STATUS) DeepCopyInto(out *SignalRFeature_STATUS) { + *out = *in + if in.Flag != nil { + in, out := &in.Flag, &out.Flag + *out = new(FeatureFlags_STATUS) + **out = **in + } + if in.Properties != nil { + in, out := &in.Properties, &out.Properties + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRFeature_STATUS. +func (in *SignalRFeature_STATUS) DeepCopy() *SignalRFeature_STATUS { + if in == nil { + return nil + } + out := new(SignalRFeature_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRList) DeepCopyInto(out *SignalRList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]SignalR, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRList. +func (in *SignalRList) DeepCopy() *SignalRList { + if in == nil { + return nil + } + out := new(SignalRList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SignalRList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRNetworkACLs) DeepCopyInto(out *SignalRNetworkACLs) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(ACLAction) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PrivateEndpoints != nil { + in, out := &in.PrivateEndpoints, &out.PrivateEndpoints + *out = make([]PrivateEndpointACL, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PublicNetwork != nil { + in, out := &in.PublicNetwork, &out.PublicNetwork + *out = new(NetworkACL) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRNetworkACLs. +func (in *SignalRNetworkACLs) DeepCopy() *SignalRNetworkACLs { + if in == nil { + return nil + } + out := new(SignalRNetworkACLs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRNetworkACLs_STATUS) DeepCopyInto(out *SignalRNetworkACLs_STATUS) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(ACLAction_STATUS) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PrivateEndpoints != nil { + in, out := &in.PrivateEndpoints, &out.PrivateEndpoints + *out = make([]PrivateEndpointACL_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PublicNetwork != nil { + in, out := &in.PublicNetwork, &out.PublicNetwork + *out = new(NetworkACL_STATUS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRNetworkACLs_STATUS. +func (in *SignalRNetworkACLs_STATUS) DeepCopy() *SignalRNetworkACLs_STATUS { + if in == nil { + return nil + } + out := new(SignalRNetworkACLs_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalROperatorSecrets) DeepCopyInto(out *SignalROperatorSecrets) { + *out = *in + if in.PrimaryConnectionString != nil { + in, out := &in.PrimaryConnectionString, &out.PrimaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryKey != nil { + in, out := &in.PrimaryKey, &out.PrimaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryConnectionString != nil { + in, out := &in.SecondaryConnectionString, &out.SecondaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryKey != nil { + in, out := &in.SecondaryKey, &out.SecondaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalROperatorSecrets. +func (in *SignalROperatorSecrets) DeepCopy() *SignalROperatorSecrets { + if in == nil { + return nil + } + out := new(SignalROperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalROperatorSpec) DeepCopyInto(out *SignalROperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = new(SignalROperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalROperatorSpec. +func (in *SignalROperatorSpec) DeepCopy() *SignalROperatorSpec { + if in == nil { + return nil + } + out := new(SignalROperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRTlsSettings) DeepCopyInto(out *SignalRTlsSettings) { + *out = *in + if in.ClientCertEnabled != nil { + in, out := &in.ClientCertEnabled, &out.ClientCertEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRTlsSettings. +func (in *SignalRTlsSettings) DeepCopy() *SignalRTlsSettings { + if in == nil { + return nil + } + out := new(SignalRTlsSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalRTlsSettings_STATUS) DeepCopyInto(out *SignalRTlsSettings_STATUS) { + *out = *in + if in.ClientCertEnabled != nil { + in, out := &in.ClientCertEnabled, &out.ClientCertEnabled + *out = new(bool) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalRTlsSettings_STATUS. +func (in *SignalRTlsSettings_STATUS) DeepCopy() *SignalRTlsSettings_STATUS { + if in == nil { + return nil + } + out := new(SignalRTlsSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalR_STATUS) DeepCopyInto(out *SignalR_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Cors != nil { + in, out := &in.Cors, &out.Cors + *out = new(SignalRCorsSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.DisableAadAuth != nil { + in, out := &in.DisableAadAuth, &out.DisableAadAuth + *out = new(bool) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.ExternalIP != nil { + in, out := &in.ExternalIP, &out.ExternalIP + *out = new(string) + **out = **in + } + if in.Features != nil { + in, out := &in.Features, &out.Features + *out = make([]SignalRFeature_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.HostName != nil { + in, out := &in.HostName, &out.HostName + *out = new(string) + **out = **in + } + if in.HostNamePrefix != nil { + in, out := &in.HostNamePrefix, &out.HostNamePrefix + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ManagedIdentity_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(SignalrServiceKind_STATUS) + **out = **in + } + if in.LiveTraceConfiguration != nil { + in, out := &in.LiveTraceConfiguration, &out.LiveTraceConfiguration + *out = new(LiveTraceConfiguration_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NetworkACLs != nil { + in, out := &in.NetworkACLs, &out.NetworkACLs + *out = new(SignalRNetworkACLs_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ProvisioningState_STATUS) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } + if in.PublicPort != nil { + in, out := &in.PublicPort, &out.PublicPort + *out = new(int) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceLogConfiguration != nil { + in, out := &in.ResourceLogConfiguration, &out.ResourceLogConfiguration + *out = new(ResourceLogConfiguration_STATUS) + (*in).DeepCopyInto(*out) + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.ServerPort != nil { + in, out := &in.ServerPort, &out.ServerPort + *out = new(int) + **out = **in + } + if in.Serverless != nil { + in, out := &in.Serverless, &out.Serverless + *out = new(ServerlessSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SharedPrivateLinkResources != nil { + in, out := &in.SharedPrivateLinkResources, &out.SharedPrivateLinkResources + *out = make([]SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Tls != nil { + in, out := &in.Tls, &out.Tls + *out = new(SignalRTlsSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Upstream != nil { + in, out := &in.Upstream, &out.Upstream + *out = new(ServerlessUpstreamSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalR_STATUS. +func (in *SignalR_STATUS) DeepCopy() *SignalR_STATUS { + if in == nil { + return nil + } + out := new(SignalR_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SignalR_Spec) DeepCopyInto(out *SignalR_Spec) { + *out = *in + if in.Cors != nil { + in, out := &in.Cors, &out.Cors + *out = new(SignalRCorsSettings) + (*in).DeepCopyInto(*out) + } + if in.DisableAadAuth != nil { + in, out := &in.DisableAadAuth, &out.DisableAadAuth + *out = new(bool) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.Features != nil { + in, out := &in.Features, &out.Features + *out = make([]SignalRFeature, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ManagedIdentity) + (*in).DeepCopyInto(*out) + } + if in.Kind != nil { + in, out := &in.Kind, &out.Kind + *out = new(SignalrServiceKind) + **out = **in + } + if in.LiveTraceConfiguration != nil { + in, out := &in.LiveTraceConfiguration, &out.LiveTraceConfiguration + *out = new(LiveTraceConfiguration) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.NetworkACLs != nil { + in, out := &in.NetworkACLs, &out.NetworkACLs + *out = new(SignalRNetworkACLs) + (*in).DeepCopyInto(*out) + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(SignalROperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(string) + **out = **in + } + if in.ResourceLogConfiguration != nil { + in, out := &in.ResourceLogConfiguration, &out.ResourceLogConfiguration + *out = new(ResourceLogConfiguration) + (*in).DeepCopyInto(*out) + } + if in.ResourceStopped != nil { + in, out := &in.ResourceStopped, &out.ResourceStopped + *out = new(string) + **out = **in + } + if in.Serverless != nil { + in, out := &in.Serverless, &out.Serverless + *out = new(ServerlessSettings) + (*in).DeepCopyInto(*out) + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(ResourceSku) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Tls != nil { + in, out := &in.Tls, &out.Tls + *out = new(SignalRTlsSettings) + (*in).DeepCopyInto(*out) + } + if in.Upstream != nil { + in, out := &in.Upstream, &out.Upstream + *out = new(ServerlessUpstreamSettings) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SignalR_Spec. +func (in *SignalR_Spec) DeepCopy() *SignalR_Spec { + if in == nil { + return nil + } + out := new(SignalR_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SystemData_STATUS) DeepCopyInto(out *SystemData_STATUS) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByType != nil { + in, out := &in.CreatedByType, &out.CreatedByType + *out = new(SystemData_CreatedByType_STATUS) + **out = **in + } + if in.LastModifiedAt != nil { + in, out := &in.LastModifiedAt, &out.LastModifiedAt + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(string) + **out = **in + } + if in.LastModifiedByType != nil { + in, out := &in.LastModifiedByType, &out.LastModifiedByType + *out = new(SystemData_LastModifiedByType_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData_STATUS. +func (in *SystemData_STATUS) DeepCopy() *SystemData_STATUS { + if in == nil { + return nil + } + out := new(SystemData_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamAuthSettings) DeepCopyInto(out *UpstreamAuthSettings) { + *out = *in + if in.ManagedIdentity != nil { + in, out := &in.ManagedIdentity, &out.ManagedIdentity + *out = new(ManagedIdentitySettings) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(UpstreamAuthType) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamAuthSettings. +func (in *UpstreamAuthSettings) DeepCopy() *UpstreamAuthSettings { + if in == nil { + return nil + } + out := new(UpstreamAuthSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamAuthSettings_STATUS) DeepCopyInto(out *UpstreamAuthSettings_STATUS) { + *out = *in + if in.ManagedIdentity != nil { + in, out := &in.ManagedIdentity, &out.ManagedIdentity + *out = new(ManagedIdentitySettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(UpstreamAuthType_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamAuthSettings_STATUS. +func (in *UpstreamAuthSettings_STATUS) DeepCopy() *UpstreamAuthSettings_STATUS { + if in == nil { + return nil + } + out := new(UpstreamAuthSettings_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamTemplate) DeepCopyInto(out *UpstreamTemplate) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(UpstreamAuthSettings) + (*in).DeepCopyInto(*out) + } + if in.CategoryPattern != nil { + in, out := &in.CategoryPattern, &out.CategoryPattern + *out = new(string) + **out = **in + } + if in.EventPattern != nil { + in, out := &in.EventPattern, &out.EventPattern + *out = new(string) + **out = **in + } + if in.HubPattern != nil { + in, out := &in.HubPattern, &out.HubPattern + *out = new(string) + **out = **in + } + if in.UrlTemplate != nil { + in, out := &in.UrlTemplate, &out.UrlTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamTemplate. +func (in *UpstreamTemplate) DeepCopy() *UpstreamTemplate { + if in == nil { + return nil + } + out := new(UpstreamTemplate) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpstreamTemplate_STATUS) DeepCopyInto(out *UpstreamTemplate_STATUS) { + *out = *in + if in.Auth != nil { + in, out := &in.Auth, &out.Auth + *out = new(UpstreamAuthSettings_STATUS) + (*in).DeepCopyInto(*out) + } + if in.CategoryPattern != nil { + in, out := &in.CategoryPattern, &out.CategoryPattern + *out = new(string) + **out = **in + } + if in.EventPattern != nil { + in, out := &in.EventPattern, &out.EventPattern + *out = new(string) + **out = **in + } + if in.HubPattern != nil { + in, out := &in.HubPattern, &out.HubPattern + *out = new(string) + **out = **in + } + if in.UrlTemplate != nil { + in, out := &in.UrlTemplate, &out.UrlTemplate + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpstreamTemplate_STATUS. +func (in *UpstreamTemplate_STATUS) DeepCopy() *UpstreamTemplate_STATUS { + if in == nil { + return nil + } + out := new(UpstreamTemplate_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAssignedIdentityDetails) DeepCopyInto(out *UserAssignedIdentityDetails) { + *out = *in + out.Reference = in.Reference +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAssignedIdentityDetails. +func (in *UserAssignedIdentityDetails) DeepCopy() *UserAssignedIdentityDetails { + if in == nil { + return nil + } + out := new(UserAssignedIdentityDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAssignedIdentityProperty_STATUS) DeepCopyInto(out *UserAssignedIdentityProperty_STATUS) { + *out = *in + if in.ClientId != nil { + in, out := &in.ClientId, &out.ClientId + *out = new(string) + **out = **in + } + if in.PrincipalId != nil { + in, out := &in.PrincipalId, &out.PrincipalId + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAssignedIdentityProperty_STATUS. +func (in *UserAssignedIdentityProperty_STATUS) DeepCopy() *UserAssignedIdentityProperty_STATUS { + if in == nil { + return nil + } + out := new(UserAssignedIdentityProperty_STATUS) + in.DeepCopyInto(out) + return out +} diff --git a/v2/api/signalrservice/versions_matrix.md b/v2/api/signalrservice/versions_matrix.md index cdf90bc6a80..79c306a2673 100644 --- a/v2/api/signalrservice/versions_matrix.md +++ b/v2/api/signalrservice/versions_matrix.md @@ -1,58 +1,85 @@ -| Type Definitions in package "signalrservice" | v1api20211001 | -|--------------------------------------------------------------|---------------| -| ACLAction | v1api20211001 | -| ACLAction_STATUS | v1api20211001 | -| APIVersion | v1api20211001 | -| FeatureFlags | v1api20211001 | -| FeatureFlags_STATUS | v1api20211001 | -| ManagedIdentity | v1api20211001 | -| ManagedIdentitySettings | v1api20211001 | -| ManagedIdentitySettings_STATUS | v1api20211001 | -| ManagedIdentityType | v1api20211001 | -| ManagedIdentityType_STATUS | v1api20211001 | -| ManagedIdentity_STATUS | v1api20211001 | -| NetworkACL | v1api20211001 | -| NetworkACL_STATUS | v1api20211001 | -| PrivateEndpointACL | v1api20211001 | -| PrivateEndpointACL_STATUS | v1api20211001 | -| PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded | v1api20211001 | -| ProvisioningState_STATUS | v1api20211001 | -| ResourceLogCategory | v1api20211001 | -| ResourceLogCategory_STATUS | v1api20211001 | -| ResourceLogConfiguration | v1api20211001 | -| ResourceLogConfiguration_STATUS | v1api20211001 | -| ResourceSku | v1api20211001 | -| ResourceSku_STATUS | v1api20211001 | -| ServerlessUpstreamSettings | v1api20211001 | -| ServerlessUpstreamSettings_STATUS | v1api20211001 | -| ServiceKind | v1api20211001 | -| ServiceKind_STATUS | v1api20211001 | -| SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded | v1api20211001 | -| SignalR | v1api20211001 | -| SignalRCorsSettings | v1api20211001 | -| SignalRCorsSettings_STATUS | v1api20211001 | -| SignalRFeature | v1api20211001 | -| SignalRFeature_STATUS | v1api20211001 | -| SignalRNetworkACLs | v1api20211001 | -| SignalRNetworkACLs_STATUS | v1api20211001 | -| SignalRProperties | v1api20211001 | -| SignalRProperties_STATUS | v1api20211001 | -| SignalRRequestType | v1api20211001 | -| SignalRRequestType_STATUS | v1api20211001 | -| SignalRSkuTier | v1api20211001 | -| SignalRSkuTier_STATUS | v1api20211001 | -| SignalRTlsSettings | v1api20211001 | -| SignalRTlsSettings_STATUS | v1api20211001 | -| SignalR_STATUS | v1api20211001 | -| SignalR_Spec | v1api20211001 | -| SystemData_CreatedByType_STATUS | v1api20211001 | -| SystemData_LastModifiedByType_STATUS | v1api20211001 | -| SystemData_STATUS | v1api20211001 | -| UpstreamAuthSettings | v1api20211001 | -| UpstreamAuthSettings_STATUS | v1api20211001 | -| UpstreamAuthType | v1api20211001 | -| UpstreamAuthType_STATUS | v1api20211001 | -| UpstreamTemplate | v1api20211001 | -| UpstreamTemplate_STATUS | v1api20211001 | -| UserAssignedIdentityDetails | v1api20211001 | -| UserAssignedIdentityProperty_STATUS | v1api20211001 | +| Type Definitions in package "signalrservice" | v1api20211001 | v1api20240301 | +|--------------------------------------------------------------|---------------|---------------| +| ACLAction | v1api20211001 | v1api20240301 | +| ACLAction_STATUS | v1api20211001 | v1api20240301 | +| APIVersion | v1api20211001 | v1api20240301 | +| CustomCertificate | | v1api20240301 | +| CustomCertificateProperties | | v1api20240301 | +| CustomCertificateProperties_STATUS | | v1api20240301 | +| CustomCertificate_STATUS | | v1api20240301 | +| CustomCertificate_Spec | | v1api20240301 | +| CustomDomain | | v1api20240301 | +| CustomDomainProperties | | v1api20240301 | +| CustomDomainProperties_STATUS | | v1api20240301 | +| CustomDomain_STATUS | | v1api20240301 | +| CustomDomain_Spec | | v1api20240301 | +| FeatureFlags | v1api20211001 | v1api20240301 | +| FeatureFlags_STATUS | v1api20211001 | v1api20240301 | +| IPRule | | v1api20240301 | +| IPRule_STATUS | | v1api20240301 | +| LiveTraceCategory | | v1api20240301 | +| LiveTraceCategory_STATUS | | v1api20240301 | +| LiveTraceConfiguration | | v1api20240301 | +| LiveTraceConfiguration_STATUS | | v1api20240301 | +| ManagedIdentity | v1api20211001 | v1api20240301 | +| ManagedIdentitySettings | v1api20211001 | v1api20240301 | +| ManagedIdentitySettings_STATUS | v1api20211001 | v1api20240301 | +| ManagedIdentityType | v1api20211001 | v1api20240301 | +| ManagedIdentityType_STATUS | v1api20211001 | v1api20240301 | +| ManagedIdentity_STATUS | v1api20211001 | v1api20240301 | +| NetworkACL | v1api20211001 | v1api20240301 | +| NetworkACL_STATUS | v1api20211001 | v1api20240301 | +| PrivateEndpointACL | v1api20211001 | v1api20240301 | +| PrivateEndpointACL_STATUS | v1api20211001 | v1api20240301 | +| PrivateEndpointConnection_STATUS_SignalR_SubResourceEmbedded | v1api20211001 | v1api20240301 | +| ProvisioningState_STATUS | v1api20211001 | v1api20240301 | +| Replica | | v1api20240301 | +| ReplicaProperties | | v1api20240301 | +| ReplicaProperties_STATUS | | v1api20240301 | +| Replica_STATUS | | v1api20240301 | +| Replica_Spec | | v1api20240301 | +| ResourceLogCategory | v1api20211001 | v1api20240301 | +| ResourceLogCategory_STATUS | v1api20211001 | v1api20240301 | +| ResourceLogConfiguration | v1api20211001 | v1api20240301 | +| ResourceLogConfiguration_STATUS | v1api20211001 | v1api20240301 | +| ResourceReference | | v1api20240301 | +| ResourceReference_STATUS | | v1api20240301 | +| ResourceSku | v1api20211001 | v1api20240301 | +| ResourceSku_STATUS | v1api20211001 | v1api20240301 | +| ServerlessSettings | | v1api20240301 | +| ServerlessSettings_STATUS | | v1api20240301 | +| ServerlessUpstreamSettings | v1api20211001 | v1api20240301 | +| ServerlessUpstreamSettings_STATUS | v1api20211001 | v1api20240301 | +| ServiceKind | v1api20211001 | | +| ServiceKind_STATUS | v1api20211001 | | +| SharedPrivateLinkResource_STATUS_SignalR_SubResourceEmbedded | v1api20211001 | v1api20240301 | +| SignalR | v1api20211001 | v1api20240301 | +| SignalRCorsSettings | v1api20211001 | v1api20240301 | +| SignalRCorsSettings_STATUS | v1api20211001 | v1api20240301 | +| SignalRFeature | v1api20211001 | v1api20240301 | +| SignalRFeature_STATUS | v1api20211001 | v1api20240301 | +| SignalRNetworkACLs | v1api20211001 | v1api20240301 | +| SignalRNetworkACLs_STATUS | v1api20211001 | v1api20240301 | +| SignalRProperties | v1api20211001 | v1api20240301 | +| SignalRProperties_STATUS | v1api20211001 | v1api20240301 | +| SignalRRequestType | v1api20211001 | v1api20240301 | +| SignalRRequestType_STATUS | v1api20211001 | v1api20240301 | +| SignalRSkuTier | v1api20211001 | v1api20240301 | +| SignalRSkuTier_STATUS | v1api20211001 | v1api20240301 | +| SignalRTlsSettings | v1api20211001 | v1api20240301 | +| SignalRTlsSettings_STATUS | v1api20211001 | v1api20240301 | +| SignalR_STATUS | v1api20211001 | v1api20240301 | +| SignalR_Spec | v1api20211001 | v1api20240301 | +| SignalrServiceKind | | v1api20240301 | +| SignalrServiceKind_STATUS | | v1api20240301 | +| SystemData_CreatedByType_STATUS | v1api20211001 | v1api20240301 | +| SystemData_LastModifiedByType_STATUS | v1api20211001 | v1api20240301 | +| SystemData_STATUS | v1api20211001 | v1api20240301 | +| UpstreamAuthSettings | v1api20211001 | v1api20240301 | +| UpstreamAuthSettings_STATUS | v1api20211001 | v1api20240301 | +| UpstreamAuthType | v1api20211001 | v1api20240301 | +| UpstreamAuthType_STATUS | v1api20211001 | v1api20240301 | +| UpstreamTemplate | v1api20211001 | v1api20240301 | +| UpstreamTemplate_STATUS | v1api20211001 | v1api20240301 | +| UserAssignedIdentityDetails | v1api20211001 | v1api20240301 | +| UserAssignedIdentityProperty_STATUS | v1api20211001 | v1api20240301 | diff --git a/v2/azure-arm.yaml b/v2/azure-arm.yaml index 9c8d6f7e3c6..dc2d4824abe 100644 --- a/v2/azure-arm.yaml +++ b/v2/azure-arm.yaml @@ -3665,6 +3665,30 @@ objectModelConfiguration: - PrimaryConnectionString - SecondaryKey - SecondaryConnectionString + 2024-03-01: + SignalR: + $export: true + $supportedFrom: v2.12.0 + $azureGeneratedSecrets: + - PrimaryKey + - PrimaryConnectionString + - SecondaryKey + - SecondaryConnectionString + SignalR_Replica: + $exportAs: Replica + $supportedFrom: v2.12.0 + SignalR_CustomDomain: + $exportAs: CustomDomain + $supportedFrom: v2.12.0 + SignalR_CustomCertificate: + $exportAs: CustomCertificate + $supportedFrom: v2.12.0 + CustomCertificateProperties: + KeyVaultBaseURI: + $importConfigMapMode: optional + ResourceReference: + Id: + $armReference: true sql: v1: # Handcrafted User: diff --git a/v2/internal/controllers/controller_resources_gen.go b/v2/internal/controllers/controller_resources_gen.go index 4766a3388db..aae084130ef 100644 --- a/v2/internal/controllers/controller_resources_gen.go +++ b/v2/internal/controllers/controller_resources_gen.go @@ -202,6 +202,8 @@ import ( signalrservice_customizations "github.com/Azure/azure-service-operator/v2/api/signalrservice/customizations" signalrservice_v20211001 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001" signalrservice_v20211001s "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20211001/storage" + signalrservice_v20240301 "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301" + signalrservice_v20240301s "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301/storage" sql_customizations "github.com/Azure/azure-service-operator/v2/api/sql/customizations" sql_v20211101 "github.com/Azure/azure-service-operator/v2/api/sql/v1api20211101" sql_v20211101s "github.com/Azure/azure-service-operator/v2/api/sql/v1api20211101/storage" @@ -1191,7 +1193,24 @@ func getKnownStorageTypes() []*registration.StorageType { result = append(result, ®istration.StorageType{Obj: new(servicebus_v20211101s.NamespacesTopic)}) result = append(result, ®istration.StorageType{Obj: new(servicebus_v20211101s.NamespacesTopicsSubscription)}) result = append(result, ®istration.StorageType{Obj: new(servicebus_v20211101s.NamespacesTopicsSubscriptionsRule)}) - result = append(result, ®istration.StorageType{Obj: new(signalrservice_v20211001s.SignalR)}) + result = append(result, ®istration.StorageType{ + Obj: new(signalrservice_v20240301s.CustomCertificate), + Indexes: []registration.Index{ + { + Key: ".spec.keyVaultBaseUriFromConfig", + Func: indexSignalrserviceCustomCertificateKeyVaultBaseUriFromConfig, + }, + }, + Watches: []registration.Watch{ + { + Type: &v1.ConfigMap{}, + MakeEventHandler: watchConfigMapsFactory([]string{".spec.keyVaultBaseUriFromConfig"}, &signalrservice_v20240301s.CustomCertificateList{}), + }, + }, + }) + result = append(result, ®istration.StorageType{Obj: new(signalrservice_v20240301s.CustomDomain)}) + result = append(result, ®istration.StorageType{Obj: new(signalrservice_v20240301s.Replica)}) + result = append(result, ®istration.StorageType{Obj: new(signalrservice_v20240301s.SignalR)}) result = append(result, ®istration.StorageType{ Obj: new(sql_v20211101s.Server), Indexes: []registration.Index{ @@ -2246,6 +2265,18 @@ func getKnownTypes() []client.Object { new(servicebus_v20221001ps.NamespacesTopicsSubscriptionsRule)) result = append(result, new(signalrservice_v20211001.SignalR)) result = append(result, new(signalrservice_v20211001s.SignalR)) + result = append( + result, + new(signalrservice_v20240301.CustomCertificate), + new(signalrservice_v20240301.CustomDomain), + new(signalrservice_v20240301.Replica), + new(signalrservice_v20240301.SignalR)) + result = append( + result, + new(signalrservice_v20240301s.CustomCertificate), + new(signalrservice_v20240301s.CustomDomain), + new(signalrservice_v20240301s.Replica), + new(signalrservice_v20240301s.SignalR)) result = append( result, new(sql_v20211101.Server), @@ -2549,6 +2580,8 @@ func createScheme() *runtime.Scheme { _ = servicebus_v20221001ps.AddToScheme(scheme) _ = signalrservice_v20211001.AddToScheme(scheme) _ = signalrservice_v20211001s.AddToScheme(scheme) + _ = signalrservice_v20240301.AddToScheme(scheme) + _ = signalrservice_v20240301s.AddToScheme(scheme) _ = sql_v20211101.AddToScheme(scheme) _ = sql_v20211101s.AddToScheme(scheme) _ = storage_v20210401.AddToScheme(scheme) @@ -2742,6 +2775,9 @@ func getResourceExtensions() []genruntime.ResourceExtension { result = append(result, &servicebus_customizations.NamespacesTopicExtension{}) result = append(result, &servicebus_customizations.NamespacesTopicsSubscriptionExtension{}) result = append(result, &servicebus_customizations.NamespacesTopicsSubscriptionsRuleExtension{}) + result = append(result, &signalrservice_customizations.CustomCertificateExtension{}) + result = append(result, &signalrservice_customizations.CustomDomainExtension{}) + result = append(result, &signalrservice_customizations.ReplicaExtension{}) result = append(result, &signalrservice_customizations.SignalRExtension{}) result = append(result, &sql_customizations.ServerExtension{}) result = append(result, &sql_customizations.ServersAdministratorExtension{}) @@ -4738,6 +4774,18 @@ func indexRedhatopenshiftOpenShiftClusterPullSecret(rawObj client.Object) []stri return obj.Spec.ClusterProfile.PullSecret.Index() } +// indexSignalrserviceCustomCertificateKeyVaultBaseUriFromConfig an index function for signalrservice_v20240301s.CustomCertificate .spec.keyVaultBaseUriFromConfig +func indexSignalrserviceCustomCertificateKeyVaultBaseUriFromConfig(rawObj client.Object) []string { + obj, ok := rawObj.(*signalrservice_v20240301s.CustomCertificate) + if !ok { + return nil + } + if obj.Spec.KeyVaultBaseUriFromConfig == nil { + return nil + } + return obj.Spec.KeyVaultBaseUriFromConfig.Index() +} + // indexSqlServerAdministratorLoginPassword an index function for sql_v20211101s.Server .spec.administratorLoginPassword func indexSqlServerAdministratorLoginPassword(rawObj client.Object) []string { obj, ok := rawObj.(*sql_v20211101s.Server) diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20211001_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20211001_CreationAndDeletion.yaml new file mode 100644 index 00000000000..156271fb925 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20211001_CreationAndDeletion.yaml @@ -0,0 +1,1026 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 93 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-rg-maueeg","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - e8d8b72fbd684bc183fa186f28d1ed5906b1403659c9c21a709ff3c6994f0d82 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg?api-version=2020-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg","name":"asotest-rg-maueeg","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 0C66E7E9FFEB4E2BA49C9EDE51283E8E Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:29:49Z' + status: 201 Created + code: 201 + duration: 379.098357ms + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg?api-version=2020-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg","name":"asotest-rg-maueeg","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E7416D5B372E4AF4BC23A8BCD1DC79FD Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:29:50Z' + status: 200 OK + code: 200 + duration: 56.079741ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 758 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"SystemAssigned"},"location":"westcentralus","name":"asotestoaerwq","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Standard_S1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "758" + Content-Type: + - application/json + Test-Request-Hash: + - add00492e8b80333825cbdf2720ebd66ad10ed6cba76dbc7ec404ab82205ff91 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/signalR/asotestoaerwq?api-version=2021-10-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1739 + uncompressed: false + body: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Creating","externalIP":null,"hostName":"asotestoaerwq.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0-preview","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestoaerwq","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"fc5732e5-5edd-4e94-876c-945bf91d1427","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westcentralus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq","name":"asotestoaerwq","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + Cache-Control: + - no-cache + Content-Length: + - "1739" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationResults/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000802561&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=XYR6JaNBmIVcntD4bstibd4WB9VTVz7h4fYZL7SsaAfXuDMMKrO3VIF2_PJiql5SQitrW4Hj5IP8DVtHHcdzyXf16MGFhGVa0x08LQaPvLTSrHZmjYsOkAxvH8oEUVnhDJySrEoH3FPACVg2jXSKr0NkfPZphszg-N2WP0f8dqMV8Ctm8bzYf3why6k8mVMJlhr4lBY8G54yK2wbAKwOYbosTWYrxTP-knCaZrn6bQtMGkMWhKpHgd7pmM0DfwghWoFyvb6Ca6OuRD_kgzQMBhHQE9AGfGJZeuFuYeYg86HT1ugzTz1ZVL57EyI_DlhddNGbp2jEjsGG7J8Y6ATljg&h=yOE9h1IWTPfkPb3QD_R07k1WyqKLZ2WUaJDzrrESZhY + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: DE36623AE2E049378057FDCA10657FEB Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:29:55Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 201 Created + code: 201 + duration: 4.484558048s + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb","name":"4ad8ff40-9033-4d81-804e-2e76f8f513bb","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1835AF73F9A94C9AA3E8F96BF9A3693D Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:06Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 197.490086ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb","name":"4ad8ff40-9033-4d81-804e-2e76f8f513bb","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 26ADA6A0C6D545BFB66E46F01EE24DD7 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:11Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 202.891732ms + - id: 5 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb","name":"4ad8ff40-9033-4d81-804e-2e76f8f513bb","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 515DA04C296446D5B01201847D5DDF9B Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:19Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 318.57972ms + - id: 6 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb","name":"4ad8ff40-9033-4d81-804e-2e76f8f513bb","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 38A655C5BEA1423A83ACE26451308E63 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:36Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 182.657815ms + - id: 7 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb","name":"4ad8ff40-9033-4d81-804e-2e76f8f513bb","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 5D4AEB349F6441C5BBACEE2DCC2AD1D6 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:31:08Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 326.411511ms + - id: 8 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb?api-version=2021-10-01&t=638742906000646324&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=EeSRaMcKaVb8Xp-IrzG4e2rs2lzQYxdU1c0xsOPwSqkYwA71efhn4i7X93JMnI3jsMgeDoX94AlvNODXKrKLHYsihwng4y2b3We_lOmSlaASrtvfBJR6qXOaRT_GndSdlgq138kfwmuwwrVH6UPQbsZg1gn1a1Np8qKGgqCfgPqBkQDKon6CLyZgo-FTGQ3cMQHy3ME9oP_bd19BhTjRSC6lDn6qgtR5Ez73tU7PjUbIydFrVu9slHXN4DmUb9B8oh9Gy0RAWi23-GIh2zXSLlWXhPSvNo4cB0tJKPgBhWNvTpf2uqNcPhOsk8R7ol1DCNNdgh-9dc706bXlXSDxww&h=rAHrpDiW1rF0YvuP5o3SMGDEHat_sGOTH9kZI36ErLg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 356 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq/operationStatuses/4ad8ff40-9033-4d81-804e-2e76f8f513bb","name":"4ad8ff40-9033-4d81-804e-2e76f8f513bb","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "356" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: C13B3BE9BD0B4E6E8801666349D6651D Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:09Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 171.567834ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/signalR/asotestoaerwq?api-version=2021-10-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1741 + uncompressed: false + body: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.69.0.210","hostName":"asotestoaerwq.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestoaerwq","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"fc5732e5-5edd-4e94-876c-945bf91d1427","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westcentralus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq","name":"asotestoaerwq","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1741" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: B0E1EAE4BEBC432089BE422D9FD4A7D9 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:09Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 192.769423ms + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/signalR/asotestoaerwq?api-version=2021-10-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1741 + uncompressed: false + body: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.69.0.210","hostName":"asotestoaerwq.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestoaerwq","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"fc5732e5-5edd-4e94-876c-945bf91d1427","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westcentralus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/SignalR/asotestoaerwq","name":"asotestoaerwq","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1741" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1B3C33F8AB604C0B8AF8F6439F207E3E Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:09Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 258.315808ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/signalR/asotestoaerwq/listKeys?api-version=2023-02-01 + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 579 + uncompressed: false + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}","primaryConnectionString":"Endpoint=https://asotestoaerwq.service.signalr.net;AccessKey=3HKCgZYHWR3cqvpyoZ2Up8wZqcKaHAFW680GDva1q8Cmx2JzPAdXJQQJ99BBACrJL3JXJ3w3AAAAASRSRat1;Version=1.0;","secondaryConnectionString":"Endpoint=https://asotestoaerwq.service.signalr.net;AccessKey=CMvHirE44geDC0VbcT10CvhbtlNXKrTgokDTfZVbFQ6aNG21ypakJQQJ99BBACrJL3JXJ3w3AAAAASRStNgW;Version=1.0;"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "579" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: C1296D3133304523A040A6E01BEC66C5 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:10Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 455.195565ms + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg?api-version=2020-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907350873191&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=g0PW62yjYwZ7c1tt0g-LX21M4u-8sVcRZI6VrKoFfGE9VUpRq4TI3BadQBQcrjC3ljsPVxxKLrgoKOFKncNnAwaG_JW_Pn_EJcHl7MMWjE8L4Gzo0m9smxJ-X3lvmPrI-6mjyEdZ7cJHDvJDCJlRvcCQE9pxGC0qVmj7nnCzoXKKGoLYov9b61LwVGMjomsC9jjFMhORmrQ0aCII_qXoYtQNqXQz30mAdRK3UkZUjSsQi33WXiFv6CWwuyrGpDsZrF0G866eykY2rWyQ2i9Fn3iatCDTWGAJOPt0JB6Oyqty5OyPHnik_6okY0Wv3oWDsoCKBu5NQOAs7YKEERUCVQ&h=9ua392hEUVDnLRMwZyOH5XL4-7KL7a_RS7FIF_GKWP0 + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: DC7B18254F6C490DA1D5D57DBE3ED6ED Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:14Z' + status: 202 Accepted + code: 202 + duration: 337.029605ms + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907350873191&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=g0PW62yjYwZ7c1tt0g-LX21M4u-8sVcRZI6VrKoFfGE9VUpRq4TI3BadQBQcrjC3ljsPVxxKLrgoKOFKncNnAwaG_JW_Pn_EJcHl7MMWjE8L4Gzo0m9smxJ-X3lvmPrI-6mjyEdZ7cJHDvJDCJlRvcCQE9pxGC0qVmj7nnCzoXKKGoLYov9b61LwVGMjomsC9jjFMhORmrQ0aCII_qXoYtQNqXQz30mAdRK3UkZUjSsQi33WXiFv6CWwuyrGpDsZrF0G866eykY2rWyQ2i9Fn3iatCDTWGAJOPt0JB6Oyqty5OyPHnik_6okY0Wv3oWDsoCKBu5NQOAs7YKEERUCVQ&h=9ua392hEUVDnLRMwZyOH5XL4-7KL7a_RS7FIF_GKWP0 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907505456604&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=JeQZNiZR5lcsi9sZ53hIdQUC_9E2OGTSFwd_kiwdvGMMh9Jw0htAfyo0Uijb9Nd8ZZP8z06d7tFCM-RpXDRfPRCwsrOXPwooCXSL_dxRF7mvLUPUz8RnmqyaMvdp4GuDqiucmITnnPPT-TNXLcnFon8JWT-TkDH3OH0oNXb7NghkIicgT-ST2urYMb9WCKQFEdakggY_EjMry2NJAPwbqJRUVMMJ7eEEKV68rl3oTbMSM5iluO_glhFuZzzff8U8Q3khW5jMzdzLWn8my_LMiJmZBuovth2leQ5z-uJA9h8l3k3zWAZx1tEVHCyYwSJrI9rZEKq58OX-Z4OIpCd3TA&h=oSqhSEw6QOrT6coakjiyL-YOD5y_ZnW_nkcbBIpDygE + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 026582B0C1E74E3687AEE805426A0E93 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:30Z' + status: 202 Accepted + code: 202 + duration: 59.807029ms + - id: 14 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907350873191&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=g0PW62yjYwZ7c1tt0g-LX21M4u-8sVcRZI6VrKoFfGE9VUpRq4TI3BadQBQcrjC3ljsPVxxKLrgoKOFKncNnAwaG_JW_Pn_EJcHl7MMWjE8L4Gzo0m9smxJ-X3lvmPrI-6mjyEdZ7cJHDvJDCJlRvcCQE9pxGC0qVmj7nnCzoXKKGoLYov9b61LwVGMjomsC9jjFMhORmrQ0aCII_qXoYtQNqXQz30mAdRK3UkZUjSsQi33WXiFv6CWwuyrGpDsZrF0G866eykY2rWyQ2i9Fn3iatCDTWGAJOPt0JB6Oyqty5OyPHnik_6okY0Wv3oWDsoCKBu5NQOAs7YKEERUCVQ&h=9ua392hEUVDnLRMwZyOH5XL4-7KL7a_RS7FIF_GKWP0 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907656763401&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Mrp7wS30tl2S2WHHN_YvSlUIlKl2HIk62Eh3tC2uCAFVLC2oqBbRHvVLZst73nRpo0l0Tkre1xwW-YObxCgz2TJQPUfIONBXUi9rwNoNv4eFMwJaN2apmOQdfGIMze_0den1t05SIT9WcH43aY307rb85Szk6hPuVVtPTo3kf0GAtTH7tlf11mU7TJNH0rEIUYCxnFejIbxeRq6Z9OjJb5FUt4da5kPmBFTJTMX6atcdNa3Fuy8yTNWid_n-CXbXMASgKx8ij_IA8Oc5cR8RGveu8EvTB328doh-y8vKH3qAsQY6fHRq1wkl8PWkc1RwxdtiAOo6j-HCMpKtgG0ZbA&h=rlmegp6QiVoy9QRX8ZelZwGYyGBpfUF_UYN3rITwSlU + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 41D1F0BE4D6F45028633E69E281ABA3E Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:45Z' + status: 202 Accepted + code: 202 + duration: 51.163149ms + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907350873191&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=g0PW62yjYwZ7c1tt0g-LX21M4u-8sVcRZI6VrKoFfGE9VUpRq4TI3BadQBQcrjC3ljsPVxxKLrgoKOFKncNnAwaG_JW_Pn_EJcHl7MMWjE8L4Gzo0m9smxJ-X3lvmPrI-6mjyEdZ7cJHDvJDCJlRvcCQE9pxGC0qVmj7nnCzoXKKGoLYov9b61LwVGMjomsC9jjFMhORmrQ0aCII_qXoYtQNqXQz30mAdRK3UkZUjSsQi33WXiFv6CWwuyrGpDsZrF0G866eykY2rWyQ2i9Fn3iatCDTWGAJOPt0JB6Oyqty5OyPHnik_6okY0Wv3oWDsoCKBu5NQOAs7YKEERUCVQ&h=9ua392hEUVDnLRMwZyOH5XL4-7KL7a_RS7FIF_GKWP0 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907807533306&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=C0ZW4WnCsAGTGPy2XO5cY2ipNpX4F8SngL2PK7sMI4b3Q6n-MSmLtqPz-D8eQ_DkRL0QYbbqtJYpkDG7DU5mySxoqSVltpvjRGLxTxVD_O3j8iYuvxPGgcXQ-cnJNrDvN0IXs2D_SS4iNBJYSxXjSK63WijFnO4V_YE8a0eqNIvYYdBC8zSDjBFWAl0Je7Y178gDwS0lch3MzHrQRptTTXkq-dqG1greLCbZ7kOwVb9ThNxcp4b9AgRw8xIbYnG_lJlLkl-mWJbYNOU6LFEr8IucwMaA-ZncblrPBmEbUsMlIvR0M8Oi2z9rhzjSv68Zqjr9klyvJTVFXRNw2WVtLg&h=EzT_FiqMjwKyvZDWHo3TS6L_cqIPHx5s4v5TfZjKAe8 + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1E2D62E2157E40CF94BB65867741CF9B Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:00Z' + status: 202 Accepted + code: 202 + duration: 33.19789ms + - id: 16 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907350873191&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=g0PW62yjYwZ7c1tt0g-LX21M4u-8sVcRZI6VrKoFfGE9VUpRq4TI3BadQBQcrjC3ljsPVxxKLrgoKOFKncNnAwaG_JW_Pn_EJcHl7MMWjE8L4Gzo0m9smxJ-X3lvmPrI-6mjyEdZ7cJHDvJDCJlRvcCQE9pxGC0qVmj7nnCzoXKKGoLYov9b61LwVGMjomsC9jjFMhORmrQ0aCII_qXoYtQNqXQz30mAdRK3UkZUjSsQi33WXiFv6CWwuyrGpDsZrF0G866eykY2rWyQ2i9Fn3iatCDTWGAJOPt0JB6Oyqty5OyPHnik_6okY0Wv3oWDsoCKBu5NQOAs7YKEERUCVQ&h=9ua392hEUVDnLRMwZyOH5XL4-7KL7a_RS7FIF_GKWP0 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907958390008&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=mvk41FSydYzTG4CJDubQnYQseaGGpOzpRfzl5wCjRbgO_iBKS__Qxrnyq-rU1tZ_nyX6T_2RcvB6MpHmQh1GUbNlMKdegzj2dx28qM9E-n4kvOrivswPmDyq111JJP8Wux7UZHFquFZq4LwUS4yX-fVeyiZeJe6EW034p0o9oUZyQ6Om9Cr19kbHlDVDhnpCL6qbssAxtNYdNdBw_Ff2KcyhXF_EqX3RbpAg5nVIWM24m3UeKOSDUvr4HO9_W7uaUUdolxzc6WKfHea-pMVQNc0XjQuqyDzpSoBH2k9Wy-Q1arrH0tKbxkJJec-WD_5Bt-rxL8LKkA0liyRKBdsE5Q&h=wgAQHYC-R8gx-foygXQt5T0XMybhCTHKkRb5xb5oB_M + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 5FB0A2FD964C43FE8844E73F691C9B23 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:15Z' + status: 202 Accepted + code: 202 + duration: 44.191383ms + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNQVVFRUctV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907350873191&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=g0PW62yjYwZ7c1tt0g-LX21M4u-8sVcRZI6VrKoFfGE9VUpRq4TI3BadQBQcrjC3ljsPVxxKLrgoKOFKncNnAwaG_JW_Pn_EJcHl7MMWjE8L4Gzo0m9smxJ-X3lvmPrI-6mjyEdZ7cJHDvJDCJlRvcCQE9pxGC0qVmj7nnCzoXKKGoLYov9b61LwVGMjomsC9jjFMhORmrQ0aCII_qXoYtQNqXQz30mAdRK3UkZUjSsQi33WXiFv6CWwuyrGpDsZrF0G866eykY2rWyQ2i9Fn3iatCDTWGAJOPt0JB6Oyqty5OyPHnik_6okY0Wv3oWDsoCKBu5NQOAs7YKEERUCVQ&h=9ua392hEUVDnLRMwZyOH5XL4-7KL7a_RS7FIF_GKWP0 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 2934611BF244445D907F36B94E67FBAF Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:30Z' + status: 200 OK + code: 200 + duration: 26.850931ms + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-maueeg/providers/Microsoft.SignalRService/signalR/asotestoaerwq?api-version=2021-10-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-maueeg'' could not be found."}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "109" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Failure-Cause: + - gateway + X-Msedge-Ref: + - 'Ref A: FFE8C155B49140B7BCED6EEE47DB2998 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:34Z' + status: 404 Not Found + code: 404 + duration: 211.583118ms diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20240301_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20240301_CreationAndDeletion.yaml new file mode 100644 index 00000000000..39ccb69623f --- /dev/null +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api20240301_CreationAndDeletion.yaml @@ -0,0 +1,1462 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 93 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-rg-ashxhz","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - d2f8adf92c8e96d77b86dd5593ac4176c87bfbbb9398ae27e8bb25843df84f2e + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz?api-version=2020-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz","name":"asotest-rg-ashxhz","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 7757782F2E8C483FB7375DBFFA399184 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:29:48Z' + status: 201 Created + code: 201 + duration: 527.154588ms + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz?api-version=2020-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz","name":"asotest-rg-ashxhz","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E154952CC0DD453E9A75F5414AB5B6FB Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:29:49Z' + status: 200 OK + code: 200 + duration: 44.721232ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 751 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotestjbsoqz","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "751" + Content-Type: + - application/json + Test-Request-Hash: + - c7ecd05fd492d0d790bd52029bde302b9dd98669e665546102fbe90fb5eb448e + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1953 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Creating","externalIP":null,"hostName":"asotestjbsoqz.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0-preview","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestjbsoqz","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"22b28868-6753-4c53-879f-0d4a1bd62c3f","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz","name":"asotestjbsoqz","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989605911&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Y7Y_AmgEuk-hZ4im38xxvgiPViGX0gN6sI5k8SPCSQqapd6ICv06ug6rvDmvcjCzxINoL7lvoOsPuAv-MrBpUH3ErMi0nxR9-UhODfbvGWZOoRG8S9kVTfuOrqwaD4rhwmTbitLtMtE683P8q5eoi3UB7Nxc8WTrCtMU59R_u5VV6zQ6e8LVVVIPQ6LUjD6fwKvkIb9KY025bo9mawC0H0Y6r407UaU8meZlECQ4kkjvsg8M0K8J4KuCYOPcLYlhXEabSyeluhCNzWQjpBKvg1SVfgaGmtdWsR5GvsumpFmEo0o6gKYIHMB_tIM1kluVgUZK0BwbRjtc5VFHteLnJA&h=PfDxHBAr-26UDSNppY9oQkVflIb26csngr2hQZK5oLs + Cache-Control: + - no-cache + Content-Length: + - "1953" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationResults/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989762176&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=dd2P4IkcSIe2ftltcwXq9hOX3ZpXnt2ccCwvy91OUybX8q9498CrKkynnOytD4oLqCEoazMpPbZfIAPmPSI1wM0Zw1L3BNH29L0LTOKY-DFPkyeLmb56A4QqQqFCekwyrtQP9TSZWjUn39ahDpfYgsE4BI5o9KtkAaO9vs8bJBdUgVpFgnq42HyPFdc9eGD-C4UxTwXgAxsKT2iARZqHmRcjlvqK_MXx1wHwj5I3x3grBML9acQKO3iwnUUFrIPuWVDtw2qxNtVOiwEKh0lbIOyHdVjXyVBDGiXN3SLC-HT7E5BoGmQIqiPaeByZYu2U_YEyo7TGidEUDdEQrGWNow&h=l_PeNXt-b22Blg62ayhqxGFRi2pyAA28BZvCevmZ7K4 + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 429CA8F292714374BEF9EEDB052BD795 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:29:55Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 201 Created + code: 201 + duration: 3.361310777s + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989605911&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Y7Y_AmgEuk-hZ4im38xxvgiPViGX0gN6sI5k8SPCSQqapd6ICv06ug6rvDmvcjCzxINoL7lvoOsPuAv-MrBpUH3ErMi0nxR9-UhODfbvGWZOoRG8S9kVTfuOrqwaD4rhwmTbitLtMtE683P8q5eoi3UB7Nxc8WTrCtMU59R_u5VV6zQ6e8LVVVIPQ6LUjD6fwKvkIb9KY025bo9mawC0H0Y6r407UaU8meZlECQ4kkjvsg8M0K8J4KuCYOPcLYlhXEabSyeluhCNzWQjpBKvg1SVfgaGmtdWsR5GvsumpFmEo0o6gKYIHMB_tIM1kluVgUZK0BwbRjtc5VFHteLnJA&h=PfDxHBAr-26UDSNppY9oQkVflIb26csngr2hQZK5oLs + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2","name":"9f761d94-f48a-4423-bf0a-717d6b1f8cc2","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1B4BA91A666941CCB9F39401A75C9B68 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:04Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 633.82346ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989605911&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Y7Y_AmgEuk-hZ4im38xxvgiPViGX0gN6sI5k8SPCSQqapd6ICv06ug6rvDmvcjCzxINoL7lvoOsPuAv-MrBpUH3ErMi0nxR9-UhODfbvGWZOoRG8S9kVTfuOrqwaD4rhwmTbitLtMtE683P8q5eoi3UB7Nxc8WTrCtMU59R_u5VV6zQ6e8LVVVIPQ6LUjD6fwKvkIb9KY025bo9mawC0H0Y6r407UaU8meZlECQ4kkjvsg8M0K8J4KuCYOPcLYlhXEabSyeluhCNzWQjpBKvg1SVfgaGmtdWsR5GvsumpFmEo0o6gKYIHMB_tIM1kluVgUZK0BwbRjtc5VFHteLnJA&h=PfDxHBAr-26UDSNppY9oQkVflIb26csngr2hQZK5oLs + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2","name":"9f761d94-f48a-4423-bf0a-717d6b1f8cc2","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 30ACFFE34FAF4E2F84A28DE4A2E7FFA4 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:09Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 102.424477ms + - id: 5 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989605911&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Y7Y_AmgEuk-hZ4im38xxvgiPViGX0gN6sI5k8SPCSQqapd6ICv06ug6rvDmvcjCzxINoL7lvoOsPuAv-MrBpUH3ErMi0nxR9-UhODfbvGWZOoRG8S9kVTfuOrqwaD4rhwmTbitLtMtE683P8q5eoi3UB7Nxc8WTrCtMU59R_u5VV6zQ6e8LVVVIPQ6LUjD6fwKvkIb9KY025bo9mawC0H0Y6r407UaU8meZlECQ4kkjvsg8M0K8J4KuCYOPcLYlhXEabSyeluhCNzWQjpBKvg1SVfgaGmtdWsR5GvsumpFmEo0o6gKYIHMB_tIM1kluVgUZK0BwbRjtc5VFHteLnJA&h=PfDxHBAr-26UDSNppY9oQkVflIb26csngr2hQZK5oLs + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2","name":"9f761d94-f48a-4423-bf0a-717d6b1f8cc2","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: F0DCF5C96EF1449DBD84D41756231E52 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:17Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 42.996508ms + - id: 6 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989605911&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Y7Y_AmgEuk-hZ4im38xxvgiPViGX0gN6sI5k8SPCSQqapd6ICv06ug6rvDmvcjCzxINoL7lvoOsPuAv-MrBpUH3ErMi0nxR9-UhODfbvGWZOoRG8S9kVTfuOrqwaD4rhwmTbitLtMtE683P8q5eoi3UB7Nxc8WTrCtMU59R_u5VV6zQ6e8LVVVIPQ6LUjD6fwKvkIb9KY025bo9mawC0H0Y6r407UaU8meZlECQ4kkjvsg8M0K8J4KuCYOPcLYlhXEabSyeluhCNzWQjpBKvg1SVfgaGmtdWsR5GvsumpFmEo0o6gKYIHMB_tIM1kluVgUZK0BwbRjtc5VFHteLnJA&h=PfDxHBAr-26UDSNppY9oQkVflIb26csngr2hQZK5oLs + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 313 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2","name":"9f761d94-f48a-4423-bf0a-717d6b1f8cc2","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "313" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: ED6C0E982C304A618F242AFDF120C65A Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:30:33Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 102.875067ms + - id: 7 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2?api-version=2024-03-01&t=638742905989605911&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Y7Y_AmgEuk-hZ4im38xxvgiPViGX0gN6sI5k8SPCSQqapd6ICv06ug6rvDmvcjCzxINoL7lvoOsPuAv-MrBpUH3ErMi0nxR9-UhODfbvGWZOoRG8S9kVTfuOrqwaD4rhwmTbitLtMtE683P8q5eoi3UB7Nxc8WTrCtMU59R_u5VV6zQ6e8LVVVIPQ6LUjD6fwKvkIb9KY025bo9mawC0H0Y6r407UaU8meZlECQ4kkjvsg8M0K8J4KuCYOPcLYlhXEabSyeluhCNzWQjpBKvg1SVfgaGmtdWsR5GvsumpFmEo0o6gKYIHMB_tIM1kluVgUZK0BwbRjtc5VFHteLnJA&h=PfDxHBAr-26UDSNppY9oQkVflIb26csngr2hQZK5oLs + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 356 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/operationStatuses/9f761d94-f48a-4423-bf0a-717d6b1f8cc2","name":"9f761d94-f48a-4423-bf0a-717d6b1f8cc2","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "356" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: B4D363CDA0C649D8966CE1353F0CA62B Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:31:06Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 246.204674ms + - id: 8 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1955 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.36","hostName":"asotestjbsoqz.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestjbsoqz","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"22b28868-6753-4c53-879f-0d4a1bd62c3f","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz","name":"asotestjbsoqz","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1955" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 0635C96A735D4EF0A2F2D05A75EC67BB Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:31:06Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 129.848299ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1955 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.36","hostName":"asotestjbsoqz.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestjbsoqz","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"22b28868-6753-4c53-879f-0d4a1bd62c3f","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz","name":"asotestjbsoqz","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1955" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 8B97FD0619A6463689C5D433EAD15290 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:31:06Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 124.501449ms + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/listKeys?api-version=2023-02-01 + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 579 + uncompressed: false + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}","primaryConnectionString":"Endpoint=https://asotestjbsoqz.service.signalr.net;AccessKey=4CmYAvIZcJI6qQuDijgCHh3mG7Del3EnesuXnkGsEthhvWgoqKgwJQQJ99BBAC8vTInXJ3w3AAAAASRShzfK;Version=1.0;","secondaryConnectionString":"Endpoint=https://asotestjbsoqz.service.signalr.net;AccessKey=EMnLCNsV0v0BEBKoShRPdwMHMBDhuO0vVtM70iTrDs9Op0M8XpWqJQQJ99BBAC8vTInXJ3w3AAAAASRS5vD4;Version=1.0;"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "579" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 2988CEAA84CB4C90891429ABBDD344C1 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:31:07Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 279.090274ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 86 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus3","name":"asotestgzwmdp","sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "86" + Content-Type: + - application/json + Test-Request-Hash: + - 1cba9fa895143445dfe6b97524b3a25a74e7c2d950de5b1569d1971204c1375c + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 692 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Creating","regionEndpointEnabled":"Enabled","resourceStopped":"false"},"location":"westus3","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp","name":"asotestgzwmdp","type":"Microsoft.SignalRService/SignalR/replicas","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + Cache-Control: + - no-cache + Content-Length: + - "692" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationResults/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=Ovc-BEfavmY-R7umWD9OFoFim4wfaJ_x82qxM_gkc9CskDXrAC8NEJnKeE1BU1XSBTvZ8nZX7lrO_sRMGYPyWWCLPae5XPwOvNiAqkyTYBtZQoG1ob1W37rM04OHThNysE7t3zibdnzkSpcstFDHv8ZqtdKK1TfCtCxXad0zJZdsg7W2xcFtstsU7r6tEynU90Ufky2Lzb62iDDJTrhU-vv-TCP1iat1dhPQe4r-mQQX5_KakJGNZISiJxBWz87TEwj7QOyvww50sCaDkCpRfu-d6_Trw0tMGUMZUtY8moTbSWBHziT7H60cAS_TsUtBBs5i6_H_uq4jy0R6Ecdqww&h=kyeIiHEtVQc263ZRw2JHl6P_0jjVcHcNeRSNUztG7_w + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 0512CE2941A34B7893AFF0D8D59EE534 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:31:58Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 201 Created + code: 201 + duration: 3.53321312s + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","name":"9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "336" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 6C042310C9C34A8EA7277979EDAF6AE3 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:06Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 268.949007ms + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","name":"9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "336" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 578647EC15EC4F9EB52EB6DB647863DB Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:09Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 312.456893ms + - id: 14 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","name":"9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "336" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 95BBC1181BC64347B9F9C23437626B7D Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:14Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 495.908222ms + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","name":"9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "336" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: EF8D4B97B50B474F829FB0EAC4154107 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:23Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 313.635584ms + - id: 16 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","name":"9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "336" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 63D86E7B24E44234B54547A9D71B8EF3 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:32:39Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 232.312846ms + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704?api-version=2024-03-01&t=638742907222930079&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=gpD_8dJ5eSUb7ush9rnIyYw0h9CDvdwR6CfcEBQ8FxJ22JEnC_nB7pr3IiCQERWFmOjcP8xJdgHRbiQ80nrH-qy5iOt6v2HSMZ-jOxpeJ8CQhpQyrdkee9zTt6KHe1a_k3xT0eJRVL4k1ncWQ9WarFgVHXXj_lC7LKgAyhPCneJUeiJqyy9lNZLg4mgW-uoQipQKodFMFkJZPT9amffye7qC5DDHv3cY0zlS4AMeOfpX_OZTtOsHT5lSLBWHyZhL2Agi5bjcrubFFiHrtnkNJWvx2tCem-GI66Wg6ImpoW1PnmPEPWuYeF1LTrwur420MkwaL4hmcBLPJrAEX9-Asg&h=26mxmZJmLEyylpwMN24uNuToKTYbvqpNhFWXax-mJy4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 379 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp/operationStatuses/9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","name":"9cc5322b-cde2-4eb6-9a77-e3ab67d1b704","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "379" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 51572A48090349F487F78E2F6B9ADD52 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:12Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 293.557047ms + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 693 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","regionEndpointEnabled":"Enabled","resourceStopped":"false"},"location":"westus3","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp","name":"asotestgzwmdp","type":"Microsoft.SignalRService/SignalR/replicas","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "693" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: DBB4ED13C0804F538132E0347F808D9A Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:12Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 238.59987ms + - id: 19 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 693 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","regionEndpointEnabled":"Enabled","resourceStopped":"false"},"location":"westus3","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/SignalR/asotestjbsoqz/replicas/asotestgzwmdp","name":"asotestgzwmdp","type":"Microsoft.SignalRService/SignalR/replicas","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "693" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: F2F53C27A7054420956E4D0626530D13 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:13Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 230.382398ms + - id: 20 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz?api-version=2020-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907952128846&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=IVzFL-v3GWlH3ZALOlLdhDkJguH28L3Bx8CNFOiI5E0AvFO_3FZilZruaxk8b1W8NVMMnFX1bc9_bqFNTmpvnFx3HlfXdjuZBeNTlqKJRV7z5-cIQnS_qdhg1mmcTcy1iI6DR1LFeURUsePykqmiKBZ_pQJ0qp573SiMiYvpAC2tcVClBYbjYzgSYzsovYQtc_lh4v_nKywv6azrl4X0HbRDkXX8sqZqIfosY6BK6Z4hPwn3NcI9MUMyFZ87UGa5R94DGBH0MUjY05hQECdFyScFFFljVVp_sY6cy93Mhn1t1CDW9mA_oFGqzPIyT76VELFHKLGfDorwkcvJt3NPJA&h=aX-DIXe10D85v1UtWltYW6gTF6ktJQMvaxF8O3ReleQ + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 0BB559D1DDDA43A2B34F16D5973AA126 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:14Z' + status: 202 Accepted + code: 202 + duration: 415.251899ms + - id: 21 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907952128846&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=IVzFL-v3GWlH3ZALOlLdhDkJguH28L3Bx8CNFOiI5E0AvFO_3FZilZruaxk8b1W8NVMMnFX1bc9_bqFNTmpvnFx3HlfXdjuZBeNTlqKJRV7z5-cIQnS_qdhg1mmcTcy1iI6DR1LFeURUsePykqmiKBZ_pQJ0qp573SiMiYvpAC2tcVClBYbjYzgSYzsovYQtc_lh4v_nKywv6azrl4X0HbRDkXX8sqZqIfosY6BK6Z4hPwn3NcI9MUMyFZ87UGa5R94DGBH0MUjY05hQECdFyScFFFljVVp_sY6cy93Mhn1t1CDW9mA_oFGqzPIyT76VELFHKLGfDorwkcvJt3NPJA&h=aX-DIXe10D85v1UtWltYW6gTF6ktJQMvaxF8O3ReleQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742908107424371&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=FL9aq3I0flz8BQhTGmKjPj6-njeURPf1wYTlSC55JMsjyFkoemofUf3MtQlrZQXOqJB8jtKs9DyStnU8tq0JSudcBQ7ylmD5wYFNRtcY8l9fZogYvjjGiVlJv_dheDs628yVtUp7HG8dnKxWaMvRf4ra3-DSMTaMqNFnnBc5bTtF8fCHXEwVCKXDQ-rPG4Tgaa46pjYUcWr_vlqdyRoKE0h6aRbzKU0NWHMEiQVEB0goGm__NgIT1irY0TIWc9y3SB2W-1km5toNQN2L5OPqc06C-3BIENoWZigsm6v9hwm5w_XQKgvNLYmaz81KxiyOSt_MMqleUFKEWBS_UFgtiw&h=wovluoBYJg7L5NGpTuYcLUUOLv2r0e64fggry-5yytg + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 0C31C3126108446992F2596D59AB3E87 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:30Z' + status: 202 Accepted + code: 202 + duration: 49.592927ms + - id: 22 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907952128846&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=IVzFL-v3GWlH3ZALOlLdhDkJguH28L3Bx8CNFOiI5E0AvFO_3FZilZruaxk8b1W8NVMMnFX1bc9_bqFNTmpvnFx3HlfXdjuZBeNTlqKJRV7z5-cIQnS_qdhg1mmcTcy1iI6DR1LFeURUsePykqmiKBZ_pQJ0qp573SiMiYvpAC2tcVClBYbjYzgSYzsovYQtc_lh4v_nKywv6azrl4X0HbRDkXX8sqZqIfosY6BK6Z4hPwn3NcI9MUMyFZ87UGa5R94DGBH0MUjY05hQECdFyScFFFljVVp_sY6cy93Mhn1t1CDW9mA_oFGqzPIyT76VELFHKLGfDorwkcvJt3NPJA&h=aX-DIXe10D85v1UtWltYW6gTF6ktJQMvaxF8O3ReleQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742908258896563&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=myOEeBDcLxQkzeoZttUzctY8IdL8HqWw4QwqZBeXzRUxs3azFMEb-E0AyZB0dK9baJKlEMWVnmipwfTkGatGW9sd1fUEW4HdbS9w8hMcvh8oN-DuQKAbqD-1oUlDMS3N8yIePCz7ho0-9zMvk5S_l2MVzBT3O0YCuo96P1dULiRhVR1anYdI0QX6qKvKyFTRYYHaKOYqtRCIycgkHd5ogR6DrQYfOQpSu9BFkcEw2elyLCjJK6tI9IEdUUn1lJRnGKVUQ4mlCPQA-CJHKfeGD8CfTICRSuKUCJUvOid7y8UyeuuVDVvFK1GB7XgGuyvHI0ytWNVETWG2fpNPpciv-Q&h=k5R8EOhjHKABJfsztLZR5-QJ_kUryAUTF3hD3c_T0sY + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 29A2BA7496C34210B611EE6695542AE1 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:33:45Z' + status: 202 Accepted + code: 202 + duration: 82.382804ms + - id: 23 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907952128846&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=IVzFL-v3GWlH3ZALOlLdhDkJguH28L3Bx8CNFOiI5E0AvFO_3FZilZruaxk8b1W8NVMMnFX1bc9_bqFNTmpvnFx3HlfXdjuZBeNTlqKJRV7z5-cIQnS_qdhg1mmcTcy1iI6DR1LFeURUsePykqmiKBZ_pQJ0qp573SiMiYvpAC2tcVClBYbjYzgSYzsovYQtc_lh4v_nKywv6azrl4X0HbRDkXX8sqZqIfosY6BK6Z4hPwn3NcI9MUMyFZ87UGa5R94DGBH0MUjY05hQECdFyScFFFljVVp_sY6cy93Mhn1t1CDW9mA_oFGqzPIyT76VELFHKLGfDorwkcvJt3NPJA&h=aX-DIXe10D85v1UtWltYW6gTF6ktJQMvaxF8O3ReleQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742908410375644&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=MAV-gQmN_gKEfM_jIliIX6iHMKTb-zlukIeuU3oNBPq9-Ye7draNRDmVsAmveKABObc0OkfsAmwVe6UyT7yktm5PypVakMaVlOrEPNWWHX-C5tBVJ4UChj4evkhGl-PGlqjpz1uxfMi5gFTS7aiq40hUL7Od_jFJLuM6K6q3GDqRKD0lgN4rJbvZVsz8ylvn6nEjneofSeQZivWbXSAWEEBKBW3Qb2XxaxLq7oCMtCw-rkQ7HlxgBRobPH6nlz0_AaPsU2cakbLcayEywBtDON0FZnCHtJEBG5Jv-1aMbX3VndsfD8CZccmnf2RDBcc2z0xJ7vdSe5q9z1DEwdNm9A&h=IKQUK765Kb49B32nm7ryoWaQJ-oA-R-SqlQIXYEIEv8 + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 77B3FCED22DB4322B909CE696F417FEB Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:34:00Z' + status: 202 Accepted + code: 202 + duration: 66.761968ms + - id: 24 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBU0hYSFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742907952128846&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=IVzFL-v3GWlH3ZALOlLdhDkJguH28L3Bx8CNFOiI5E0AvFO_3FZilZruaxk8b1W8NVMMnFX1bc9_bqFNTmpvnFx3HlfXdjuZBeNTlqKJRV7z5-cIQnS_qdhg1mmcTcy1iI6DR1LFeURUsePykqmiKBZ_pQJ0qp573SiMiYvpAC2tcVClBYbjYzgSYzsovYQtc_lh4v_nKywv6azrl4X0HbRDkXX8sqZqIfosY6BK6Z4hPwn3NcI9MUMyFZ87UGa5R94DGBH0MUjY05hQECdFyScFFFljVVp_sY6cy93Mhn1t1CDW9mA_oFGqzPIyT76VELFHKLGfDorwkcvJt3NPJA&h=aX-DIXe10D85v1UtWltYW6gTF6ktJQMvaxF8O3ReleQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: C66431B4203A48C994394D9EC5887BA5 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:34:16Z' + status: 200 OK + code: 200 + duration: 34.019588ms + - id: 25 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz?api-version=2024-03-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-ashxhz'' could not be found."}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "109" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Failure-Cause: + - gateway + X-Msedge-Ref: + - 'Ref A: 98434963A8154B5A87BA16FCAEFB40F2 Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:34:19Z' + status: 404 Not Found + code: 404 + duration: 220.362358ms + - id: 26 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ashxhz/providers/Microsoft.SignalRService/signalR/asotestjbsoqz/replicas/asotestgzwmdp?api-version=2024-03-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-ashxhz'' could not be found."}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "109" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Failure-Cause: + - gateway + X-Msedge-Ref: + - 'Ref A: BA85E92C89EB4A0686C26BA1858524AD Ref B: CO6AA3150220009 Ref C: 2025-02-04T18:34:24Z' + status: 404 Not Found + code: 404 + duration: 132.550615ms diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api_CreationAndDeletion.yaml deleted file mode 100644 index 008dbb9f2e8..00000000000 --- a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Signalrservice_v1api_CreationAndDeletion.yaml +++ /dev/null @@ -1,613 +0,0 @@ ---- -version: 1 -interactions: - - request: - body: '{"location":"westus2","name":"asotest-rg-bywqwk","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' - form: {} - headers: - Accept: - - application/json - Content-Length: - - "93" - Content-Type: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk?api-version=2020-06-01 - method: PUT - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk","name":"asotest-rg-bywqwk","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - Cache-Control: - - no-cache - Content-Length: - - "276" - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 201 Created - code: 201 - duration: "" - - request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk?api-version=2020-06-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk","name":"asotest-rg-bywqwk","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" - - request: - body: '{"identity":{"type":"SystemAssigned"},"location":"westcentralus","name":"asotestrhnmqz","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Standard_S1"}}' - form: {} - headers: - Accept: - - application/json - Content-Length: - - "758" - Content-Type: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/signalR/asotestrhnmqz?api-version=2021-10-01 - method: PUT - response: - body: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Creating","externalIP":null,"hostName":"asotestrhnmqz.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0-preview","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestrhnmqz","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"072ea900-5143-4339-9c2c-863829b02879","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westcentralus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz","name":"asotestrhnmqz","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"5fe8acba-4694-403d-8c10-581a22063ff8","createdByType":"Application","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"5fe8acba-4694-403d-8c10-581a22063ff8","lastModifiedByType":"Application","lastModifiedAt":"2001-02-03T04:05:06Z"}}' - headers: - Azure-Asyncoperation: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - Cache-Control: - - no-cache - Content-Length: - - "1781" - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationResults/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 201 Created - code: 201 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3","name":"20622cb1-cf64-41a9-a839-e3cdb73694f3","status":"Running","startTime":"2001-02-03T04:05:06Z"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "1" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3","name":"20622cb1-cf64-41a9-a839-e3cdb73694f3","status":"Running","startTime":"2001-02-03T04:05:06Z"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "2" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3","name":"20622cb1-cf64-41a9-a839-e3cdb73694f3","status":"Running","startTime":"2001-02-03T04:05:06Z"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "3" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3","name":"20622cb1-cf64-41a9-a839-e3cdb73694f3","status":"Running","startTime":"2001-02-03T04:05:06Z"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "4" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3","name":"20622cb1-cf64-41a9-a839-e3cdb73694f3","status":"Running","startTime":"2001-02-03T04:05:06Z"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "5" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3?api-version=2021-10-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz/operationStatuses/20622cb1-cf64-41a9-a839-e3cdb73694f3","name":"20622cb1-cf64-41a9-a839-e3cdb73694f3","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/signalR/asotestrhnmqz?api-version=2021-10-01 - method: GET - response: - body: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.69.0.206","hostName":"asotestrhnmqz.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestrhnmqz","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"072ea900-5143-4339-9c2c-863829b02879","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westcentralus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz","name":"asotestrhnmqz","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"5fe8acba-4694-403d-8c10-581a22063ff8","createdByType":"Application","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"5fe8acba-4694-403d-8c10-581a22063ff8","lastModifiedByType":"Application","lastModifiedAt":"2001-02-03T04:05:06Z"}}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "1" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/signalR/asotestrhnmqz?api-version=2021-10-01 - method: GET - response: - body: '{"sku":{"name":"Standard_S1","tier":"Standard","size":"S1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.69.0.206","hostName":"asotestrhnmqz.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotestrhnmqz","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"072ea900-5143-4339-9c2c-863829b02879","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westcentralus","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/SignalR/asotestrhnmqz","name":"asotestrhnmqz","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"5fe8acba-4694-403d-8c10-581a22063ff8","createdByType":"Application","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"5fe8acba-4694-403d-8c10-581a22063ff8","lastModifiedByType":"Application","lastModifiedAt":"2001-02-03T04:05:06Z"}}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Kestrel - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - X-Rp-Server-Mvid: - - 2eff58f2-2a8b-42ad-a2af-99df03373a76 - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk?api-version=2020-06-01 - method: DELETE - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - Pragma: - - no-cache - Retry-After: - - "15" - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 202 Accepted - code: 202 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - method: GET - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - Pragma: - - no-cache - Retry-After: - - "15" - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 202 Accepted - code: 202 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "1" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - method: GET - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - Pragma: - - no-cache - Retry-After: - - "15" - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 202 Accepted - code: 202 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "2" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - method: GET - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - Pragma: - - no-cache - Retry-After: - - "15" - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 202 Accepted - code: 202 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "3" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - method: GET - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - Pragma: - - no-cache - Retry-After: - - "15" - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 202 Accepted - code: 202 - duration: "" - - request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "4" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWVdRV0stV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - method: GET - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" - - request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/signalR/asotestrhnmqz?api-version=2021-10-01 - method: DELETE - response: - body: - '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-bywqwk'' - could not be found."}}' - headers: - Cache-Control: - - no-cache - Content-Length: - - "109" - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - X-Ms-Failure-Cause: - - gateway - status: 404 Not Found - code: 404 - duration: "" - - request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bywqwk/providers/Microsoft.SignalRService/signalR/asotestrhnmqz/listKeys?api-version=2023-02-01 - method: POST - response: - body: '{ "primaryKey":"{KEY}","secondaryKey":"{KEY}","primaryConnectionString":"Endpoint=https://asotestrhnmqz.service.signalr.net;AccessKey={KEY};Version=1.0;","secondaryConnectionString":"Endpoint=https://asotestrhnmqz.service.signalr.net;AccessKey={KEY};Version=1.0;"}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Elapsed-Time: - - "115" - Expires: - - "-1" - Pragma: - - no-cache - Request-Id: - - 7f3d1038-3b86-4880-9a2c-bd27ea14d96f - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding,Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" diff --git a/v2/internal/controllers/recordings/Test_SignalRService_SignalR_20240301_CRUD.yaml b/v2/internal/controllers/recordings/Test_SignalRService_SignalR_20240301_CRUD.yaml new file mode 100644 index 00000000000..cc84825afb8 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_SignalRService_SignalR_20240301_CRUD.yaml @@ -0,0 +1,2709 @@ +--- +version: 2 +interactions: + - id: 0 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 93 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-rg-dlkphj","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - 3da56b593808246032c33207a840a33482090baae92fea9d9ed744e6f8887c44 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj?api-version=2020-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj","name":"asotest-rg-dlkphj","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: F975EE9E251F46AFB1A56ABB1BEC9B5C Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:15:51Z' + status: 201 Created + code: 201 + duration: 1.130400944s + - id: 1 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj?api-version=2020-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj","name":"asotest-rg-dlkphj","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: D2F5B2EA03914B02A14B930589F1725B Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:15:53Z' + status: 200 OK + code: 200 + duration: 38.573092ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 760 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotest-signalr-mposrl","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "760" + Content-Type: + - application/json + Test-Request-Hash: + - e96c3d3e45e8366169c401ff9c0c8f9ecc604ab9666f771f9797b72e7f01d3f1 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1989 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Creating","externalIP":null,"hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0-preview","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285619870481&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=K6VwId6uJ7BqHAcHyCZhYLPzhCpvAyv87b3Gn_W8IndSEWM_I-LrrcF1cD2ywTc_qUu32Jt80AYPD9UUKevVXwNifLGN_agiZlJbdUygMxj3JFCvtqAn5YU6rY78uquw9hrD5sJ_BVQ_lDrgpYa3S6MJw7kDrM-KfWd5mVWB7rxFMKTLhvT_FWLMfDAUd9jLPIelY7IEZwIg-5K8THcXRryR_vXuJbRUM3fnrTu7rpZqCTmgf1cwJ8OKlRY1adFmHUMJmuhGpG3A_yGE6PJuSBr6MrZI1Ia3fy_Pg-5Q-gmkHohrpp_NXcRQ6S5tDT_9JN5U1fEnMSKFFclgzRUuRA&h=Jnb0SkQES4L0tJsqcuQvDIAK9gNwQJdyw_8Gg_itFIo + Cache-Control: + - no-cache + Content-Length: + - "1989" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationResults/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285620026377&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=LBFedu0-SENMK4FB7Dlf2kSjZFJsM8yvw7a1-wKquGMWozSgV6xk71txIh9A0jplXtubNyLnTSeUX-ekXT_9lqzVByILrCvEdARxdq7v1K38peh4KNfWM61zJrs8zV95tCuR7a80RBh0ZBUgP3zLep3BLTH4XOwN6BI2N405qYbv00RU5yppTicKSetiGP_bM9SrgxvL6uLWxY4ai4xZ1_hVOcg_ZKcrkxpf8JBUC3p9UXxOsZAmsiXsXU_COyhkJhf7Bi-gyXuBg_94VJZ4tMamHGTe1-X4yMQWl6R_48JRZeGk2KxDZKfa781pD_U4X3A--Yl9VcGP16WUsE81PQ&h=IwFWeO1tINEh2USUVNl93R6VWroDUCbPG2hDKmS9ozI + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 5759E91775644F7C905CD1FEF5A31FE5 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:15:59Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 201 Created + code: 201 + duration: 2.857289425s + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285619870481&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=K6VwId6uJ7BqHAcHyCZhYLPzhCpvAyv87b3Gn_W8IndSEWM_I-LrrcF1cD2ywTc_qUu32Jt80AYPD9UUKevVXwNifLGN_agiZlJbdUygMxj3JFCvtqAn5YU6rY78uquw9hrD5sJ_BVQ_lDrgpYa3S6MJw7kDrM-KfWd5mVWB7rxFMKTLhvT_FWLMfDAUd9jLPIelY7IEZwIg-5K8THcXRryR_vXuJbRUM3fnrTu7rpZqCTmgf1cwJ8OKlRY1adFmHUMJmuhGpG3A_yGE6PJuSBr6MrZI1Ia3fy_Pg-5Q-gmkHohrpp_NXcRQ6S5tDT_9JN5U1fEnMSKFFclgzRUuRA&h=Jnb0SkQES4L0tJsqcuQvDIAK9gNwQJdyw_8Gg_itFIo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","name":"c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: DDFA9109449C4A7391B496F4D66A3368 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:16:06Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 116.232812ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285619870481&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=K6VwId6uJ7BqHAcHyCZhYLPzhCpvAyv87b3Gn_W8IndSEWM_I-LrrcF1cD2ywTc_qUu32Jt80AYPD9UUKevVXwNifLGN_agiZlJbdUygMxj3JFCvtqAn5YU6rY78uquw9hrD5sJ_BVQ_lDrgpYa3S6MJw7kDrM-KfWd5mVWB7rxFMKTLhvT_FWLMfDAUd9jLPIelY7IEZwIg-5K8THcXRryR_vXuJbRUM3fnrTu7rpZqCTmgf1cwJ8OKlRY1adFmHUMJmuhGpG3A_yGE6PJuSBr6MrZI1Ia3fy_Pg-5Q-gmkHohrpp_NXcRQ6S5tDT_9JN5U1fEnMSKFFclgzRUuRA&h=Jnb0SkQES4L0tJsqcuQvDIAK9gNwQJdyw_8Gg_itFIo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","name":"c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1D3CB2D588D34266997199A352713CD8 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:16:11Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 123.977067ms + - id: 5 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285619870481&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=K6VwId6uJ7BqHAcHyCZhYLPzhCpvAyv87b3Gn_W8IndSEWM_I-LrrcF1cD2ywTc_qUu32Jt80AYPD9UUKevVXwNifLGN_agiZlJbdUygMxj3JFCvtqAn5YU6rY78uquw9hrD5sJ_BVQ_lDrgpYa3S6MJw7kDrM-KfWd5mVWB7rxFMKTLhvT_FWLMfDAUd9jLPIelY7IEZwIg-5K8THcXRryR_vXuJbRUM3fnrTu7rpZqCTmgf1cwJ8OKlRY1adFmHUMJmuhGpG3A_yGE6PJuSBr6MrZI1Ia3fy_Pg-5Q-gmkHohrpp_NXcRQ6S5tDT_9JN5U1fEnMSKFFclgzRUuRA&h=Jnb0SkQES4L0tJsqcuQvDIAK9gNwQJdyw_8Gg_itFIo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","name":"c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1CB3BA833CD6468E90E0F547E3D2554B Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:16:19Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 122.7128ms + - id: 6 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285619870481&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=K6VwId6uJ7BqHAcHyCZhYLPzhCpvAyv87b3Gn_W8IndSEWM_I-LrrcF1cD2ywTc_qUu32Jt80AYPD9UUKevVXwNifLGN_agiZlJbdUygMxj3JFCvtqAn5YU6rY78uquw9hrD5sJ_BVQ_lDrgpYa3S6MJw7kDrM-KfWd5mVWB7rxFMKTLhvT_FWLMfDAUd9jLPIelY7IEZwIg-5K8THcXRryR_vXuJbRUM3fnrTu7rpZqCTmgf1cwJ8OKlRY1adFmHUMJmuhGpG3A_yGE6PJuSBr6MrZI1Ia3fy_Pg-5Q-gmkHohrpp_NXcRQ6S5tDT_9JN5U1fEnMSKFFclgzRUuRA&h=Jnb0SkQES4L0tJsqcuQvDIAK9gNwQJdyw_8Gg_itFIo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","name":"c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: BD56F9BC38D34796911B1B6C64D346B1 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:16:35Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 122.062651ms + - id: 7 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4?api-version=2024-03-01&t=638742285619870481&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=K6VwId6uJ7BqHAcHyCZhYLPzhCpvAyv87b3Gn_W8IndSEWM_I-LrrcF1cD2ywTc_qUu32Jt80AYPD9UUKevVXwNifLGN_agiZlJbdUygMxj3JFCvtqAn5YU6rY78uquw9hrD5sJ_BVQ_lDrgpYa3S6MJw7kDrM-KfWd5mVWB7rxFMKTLhvT_FWLMfDAUd9jLPIelY7IEZwIg-5K8THcXRryR_vXuJbRUM3fnrTu7rpZqCTmgf1cwJ8OKlRY1adFmHUMJmuhGpG3A_yGE6PJuSBr6MrZI1Ia3fy_Pg-5Q-gmkHohrpp_NXcRQ6S5tDT_9JN5U1fEnMSKFFclgzRUuRA&h=Jnb0SkQES4L0tJsqcuQvDIAK9gNwQJdyw_8Gg_itFIo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 364 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","name":"c0e0b1af-59d1-45d1-a020-4dc3d64b9fc4","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "364" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 7D6F7C8BACC14835A149B761DF576353 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:07Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 154.826638ms + - id: 8 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1991 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1991" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: AAD9558BFD4B4EE981D2C9AAFDEC92C4 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:08Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 114.137891ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1991 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1991" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 3FE6D1591C4F4E788216DF771C1C2BBC Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:08Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 101.506769ms + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 795 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotest-signalr-mposrl","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "795" + Content-Type: + - application/json + Test-Request-Hash: + - f65e839f74a46a1089817630c43770366ab5fc7d32244fc28912e54e94d21cb4 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286336978957&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=SjF4pITfE1wNvslj3ryNEIfQkDSoWijIXVU3HpPPlGVzRJTqBrgHyzMg1z9guPzqv8mXmk3x3gH-aaGLpzzhVqpZpq_pSsBWZ5rXiisQzh_NJ9e6y1uKzdKxlVWQup2x48U-oAOO37yGznUcnbHeS_cZAbbkLIrjLxAANl94TVs0xVQcV9hAxHK0XcXlqyrHiPC4ru-XNglb1YwoRHOlFXNYSqYxlmoJYINRlNxUfqL4QHEDZDDmt006pl346GZxhXRTsDtNNzoLJKR-9OPrqZ5xEHLE-fchRm2EPAml7UOY9uKs4xVxrEHxaNK0h9vlBa9FoxosOmsZTGr0BS5Tfw&h=TALosPqGucILHthKObacmvFIzJmOnyfdaTNfnWSyUDk + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationResults/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286337135216&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=BWb5iIoa9xEkidHhomZXW9C-K7RDTCMsNltwJ28aNfwDMQv-4srBRcSx9iC_NJb2dLdhDZiOUnZmR5DCB7Oo0xKkqWYpaUTt_Zm-xmWiFDsN6q1neVmL4kYpioYCfBX3V-H3ngYANYeu3J9fhIPAIOmAc_qWPbYg_GNZlsrFbkXotYUI_332CGxoBSKAOIW5a3tkDl3TmYRS6zbZ7euPVIkXD_XmMypYjs7erguQYLG24O_sUrC21L3J9HCNo_w_qC0Vmf8dhbt4hod651WFj8reoIFp5wIPC2auhSTqOZ3JOGZaunUKskn2gvPHNj_YdH5-KGqKj3Y8G7C_3acSSQ&h=M8E_ngtFXQFLeJ4gAyYWtHfLAV6MLuqZHIQton2ntpQ + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 5ECC543910A1426588C96F792EA3F671 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:13Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 202 Accepted + code: 202 + duration: 435.912539ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286336978957&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=SjF4pITfE1wNvslj3ryNEIfQkDSoWijIXVU3HpPPlGVzRJTqBrgHyzMg1z9guPzqv8mXmk3x3gH-aaGLpzzhVqpZpq_pSsBWZ5rXiisQzh_NJ9e6y1uKzdKxlVWQup2x48U-oAOO37yGznUcnbHeS_cZAbbkLIrjLxAANl94TVs0xVQcV9hAxHK0XcXlqyrHiPC4ru-XNglb1YwoRHOlFXNYSqYxlmoJYINRlNxUfqL4QHEDZDDmt006pl346GZxhXRTsDtNNzoLJKR-9OPrqZ5xEHLE-fchRm2EPAml7UOY9uKs4xVxrEHxaNK0h9vlBa9FoxosOmsZTGr0BS5Tfw&h=TALosPqGucILHthKObacmvFIzJmOnyfdaTNfnWSyUDk + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d","name":"581d41cd-685b-4146-875d-eb52a19b282d","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: D5A104B6C77545FD868D428D9697F94E Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:15Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 249.389489ms + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286336978957&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=SjF4pITfE1wNvslj3ryNEIfQkDSoWijIXVU3HpPPlGVzRJTqBrgHyzMg1z9guPzqv8mXmk3x3gH-aaGLpzzhVqpZpq_pSsBWZ5rXiisQzh_NJ9e6y1uKzdKxlVWQup2x48U-oAOO37yGznUcnbHeS_cZAbbkLIrjLxAANl94TVs0xVQcV9hAxHK0XcXlqyrHiPC4ru-XNglb1YwoRHOlFXNYSqYxlmoJYINRlNxUfqL4QHEDZDDmt006pl346GZxhXRTsDtNNzoLJKR-9OPrqZ5xEHLE-fchRm2EPAml7UOY9uKs4xVxrEHxaNK0h9vlBa9FoxosOmsZTGr0BS5Tfw&h=TALosPqGucILHthKObacmvFIzJmOnyfdaTNfnWSyUDk + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d","name":"581d41cd-685b-4146-875d-eb52a19b282d","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 02C754DC3D254C2DAD3EFCF632D3D744 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:17Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 89.100064ms + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286336978957&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=SjF4pITfE1wNvslj3ryNEIfQkDSoWijIXVU3HpPPlGVzRJTqBrgHyzMg1z9guPzqv8mXmk3x3gH-aaGLpzzhVqpZpq_pSsBWZ5rXiisQzh_NJ9e6y1uKzdKxlVWQup2x48U-oAOO37yGznUcnbHeS_cZAbbkLIrjLxAANl94TVs0xVQcV9hAxHK0XcXlqyrHiPC4ru-XNglb1YwoRHOlFXNYSqYxlmoJYINRlNxUfqL4QHEDZDDmt006pl346GZxhXRTsDtNNzoLJKR-9OPrqZ5xEHLE-fchRm2EPAml7UOY9uKs4xVxrEHxaNK0h9vlBa9FoxosOmsZTGr0BS5Tfw&h=TALosPqGucILHthKObacmvFIzJmOnyfdaTNfnWSyUDk + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d","name":"581d41cd-685b-4146-875d-eb52a19b282d","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 290F58D9AFF042B886574339D272D240 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:21Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 83.225207ms + - id: 14 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286336978957&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=SjF4pITfE1wNvslj3ryNEIfQkDSoWijIXVU3HpPPlGVzRJTqBrgHyzMg1z9guPzqv8mXmk3x3gH-aaGLpzzhVqpZpq_pSsBWZ5rXiisQzh_NJ9e6y1uKzdKxlVWQup2x48U-oAOO37yGznUcnbHeS_cZAbbkLIrjLxAANl94TVs0xVQcV9hAxHK0XcXlqyrHiPC4ru-XNglb1YwoRHOlFXNYSqYxlmoJYINRlNxUfqL4QHEDZDDmt006pl346GZxhXRTsDtNNzoLJKR-9OPrqZ5xEHLE-fchRm2EPAml7UOY9uKs4xVxrEHxaNK0h9vlBa9FoxosOmsZTGr0BS5Tfw&h=TALosPqGucILHthKObacmvFIzJmOnyfdaTNfnWSyUDk + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d","name":"581d41cd-685b-4146-875d-eb52a19b282d","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 32C97267A65248A99B9D56416BFE7711 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:30Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 83.295321ms + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d?api-version=2024-03-01&t=638742286336978957&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=SjF4pITfE1wNvslj3ryNEIfQkDSoWijIXVU3HpPPlGVzRJTqBrgHyzMg1z9guPzqv8mXmk3x3gH-aaGLpzzhVqpZpq_pSsBWZ5rXiisQzh_NJ9e6y1uKzdKxlVWQup2x48U-oAOO37yGznUcnbHeS_cZAbbkLIrjLxAANl94TVs0xVQcV9hAxHK0XcXlqyrHiPC4ru-XNglb1YwoRHOlFXNYSqYxlmoJYINRlNxUfqL4QHEDZDDmt006pl346GZxhXRTsDtNNzoLJKR-9OPrqZ5xEHLE-fchRm2EPAml7UOY9uKs4xVxrEHxaNK0h9vlBa9FoxosOmsZTGr0BS5Tfw&h=TALosPqGucILHthKObacmvFIzJmOnyfdaTNfnWSyUDk + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 365 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/581d41cd-685b-4146-875d-eb52a19b282d","name":"581d41cd-685b-4146-875d-eb52a19b282d","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "365" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: FE84BE50E13C444AB321003CA6E6D628 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:46Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 71.624212ms + - id: 16 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 2026 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "2026" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: A04E578A88054F56A316D916828D7D9E Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:46Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 165.526404ms + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 2026 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "2026" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16498" + X-Msedge-Ref: + - 'Ref A: A399048A1C524882A5B679C5CA8C0235 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:46Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 102.591145ms + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 795 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotest-signalr-mposrl","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "795" + Content-Type: + - application/json + Test-Request-Hash: + - f65e839f74a46a1089817630c43770366ab5fc7d32244fc28912e54e94d21cb4 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688641663&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=DDxzhuMQhjgQ0h_LtmpFxngoOvqyRZqmFGYfEFHe5jfk8d_t4ar4mpOUoF5heuY96Jj7cjkx2T2_Wdtxg_r34xUTYdvfjDCvjVQtikia6PisczIIjlD373dscQ_QfqwdIRl009kNWXM78f4wuOT_-mmVwEtO52UMdUJCaG5VHgHmNwAb17GTRx7rMApurp4_KaTwGAiEzTy0GIeaTe0KDPGzeatHG4ItsN8Gsw4AgbXpiaixvIqgPQPxgEXuzBphEAATriD_7wh5VDlPtEt93sVlNm6Qi201wflTUSdYuj9l3atWgo76xn_yfaL_9JTcnWmusxvXci-VZ-iauoHKpg&h=WOkjTexWDGHIoeqfgajU-tPe6QUFkpxh2fBc6MWKMYQ + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationResults/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688954158&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=kHxLhFPUgZSoTZRafNCX7Uk_mfz3h6_ffnbFY_6KOluo4XDiQ1-sGKIIhYSD9nc8WlY7LEGr0qpnsjcu92gmxWtR9qiFxhCCJqD5GtcuTevGTBw1UV-MH7hVCl7pZzYQY5eOvWJDwD2WJCvCKnTa8J32u_Z0IjHrrJCFz0s4hUNIeh5QbLEjUm_LfjoufABijTc3usOcJnPI2wRXPkwNkrhS0Ew9Ggre558DK0t0By0h4B5p9nOPTKWj9BRUB6Eu9z75gxYZsZjqFFZyAPxqpPwtrHQzS-DrCBZQAQDPIGXlSHSofgmPkNggOKPwu3DB0432hHGpfQXELE47XLBMUw&h=iM86KOOMg6jkD6iTzX27DKcj4Jch8UkHYq37uSP6MIU + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 8FCE792462BF43A98438D41FA46FE852 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:48Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 202 Accepted + code: 202 + duration: 537.758611ms + - id: 19 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688641663&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=DDxzhuMQhjgQ0h_LtmpFxngoOvqyRZqmFGYfEFHe5jfk8d_t4ar4mpOUoF5heuY96Jj7cjkx2T2_Wdtxg_r34xUTYdvfjDCvjVQtikia6PisczIIjlD373dscQ_QfqwdIRl009kNWXM78f4wuOT_-mmVwEtO52UMdUJCaG5VHgHmNwAb17GTRx7rMApurp4_KaTwGAiEzTy0GIeaTe0KDPGzeatHG4ItsN8Gsw4AgbXpiaixvIqgPQPxgEXuzBphEAATriD_7wh5VDlPtEt93sVlNm6Qi201wflTUSdYuj9l3atWgo76xn_yfaL_9JTcnWmusxvXci-VZ-iauoHKpg&h=WOkjTexWDGHIoeqfgajU-tPe6QUFkpxh2fBc6MWKMYQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474","name":"5df02b2f-31c3-4588-ac62-38b359ec7474","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 951CD4F4ED6B417DB8C0F4BDA5F4A133 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:50Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 86.12494ms + - id: 20 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688641663&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=DDxzhuMQhjgQ0h_LtmpFxngoOvqyRZqmFGYfEFHe5jfk8d_t4ar4mpOUoF5heuY96Jj7cjkx2T2_Wdtxg_r34xUTYdvfjDCvjVQtikia6PisczIIjlD373dscQ_QfqwdIRl009kNWXM78f4wuOT_-mmVwEtO52UMdUJCaG5VHgHmNwAb17GTRx7rMApurp4_KaTwGAiEzTy0GIeaTe0KDPGzeatHG4ItsN8Gsw4AgbXpiaixvIqgPQPxgEXuzBphEAATriD_7wh5VDlPtEt93sVlNm6Qi201wflTUSdYuj9l3atWgo76xn_yfaL_9JTcnWmusxvXci-VZ-iauoHKpg&h=WOkjTexWDGHIoeqfgajU-tPe6QUFkpxh2fBc6MWKMYQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474","name":"5df02b2f-31c3-4588-ac62-38b359ec7474","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 216056D5FA004746B01063F917B04F01 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:52Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 102.03276ms + - id: 21 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688641663&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=DDxzhuMQhjgQ0h_LtmpFxngoOvqyRZqmFGYfEFHe5jfk8d_t4ar4mpOUoF5heuY96Jj7cjkx2T2_Wdtxg_r34xUTYdvfjDCvjVQtikia6PisczIIjlD373dscQ_QfqwdIRl009kNWXM78f4wuOT_-mmVwEtO52UMdUJCaG5VHgHmNwAb17GTRx7rMApurp4_KaTwGAiEzTy0GIeaTe0KDPGzeatHG4ItsN8Gsw4AgbXpiaixvIqgPQPxgEXuzBphEAATriD_7wh5VDlPtEt93sVlNm6Qi201wflTUSdYuj9l3atWgo76xn_yfaL_9JTcnWmusxvXci-VZ-iauoHKpg&h=WOkjTexWDGHIoeqfgajU-tPe6QUFkpxh2fBc6MWKMYQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474","name":"5df02b2f-31c3-4588-ac62-38b359ec7474","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: AAC0ECBA96E44DEE84EE29402EE154A6 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:17:56Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 88.27844ms + - id: 22 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688641663&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=DDxzhuMQhjgQ0h_LtmpFxngoOvqyRZqmFGYfEFHe5jfk8d_t4ar4mpOUoF5heuY96Jj7cjkx2T2_Wdtxg_r34xUTYdvfjDCvjVQtikia6PisczIIjlD373dscQ_QfqwdIRl009kNWXM78f4wuOT_-mmVwEtO52UMdUJCaG5VHgHmNwAb17GTRx7rMApurp4_KaTwGAiEzTy0GIeaTe0KDPGzeatHG4ItsN8Gsw4AgbXpiaixvIqgPQPxgEXuzBphEAATriD_7wh5VDlPtEt93sVlNm6Qi201wflTUSdYuj9l3atWgo76xn_yfaL_9JTcnWmusxvXci-VZ-iauoHKpg&h=WOkjTexWDGHIoeqfgajU-tPe6QUFkpxh2fBc6MWKMYQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 322 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474","name":"5df02b2f-31c3-4588-ac62-38b359ec7474","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "322" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: FD86538E90A142078520AC9D41B74B39 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:05Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 88.225356ms + - id: 23 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474?api-version=2024-03-01&t=638742286688641663&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=DDxzhuMQhjgQ0h_LtmpFxngoOvqyRZqmFGYfEFHe5jfk8d_t4ar4mpOUoF5heuY96Jj7cjkx2T2_Wdtxg_r34xUTYdvfjDCvjVQtikia6PisczIIjlD373dscQ_QfqwdIRl009kNWXM78f4wuOT_-mmVwEtO52UMdUJCaG5VHgHmNwAb17GTRx7rMApurp4_KaTwGAiEzTy0GIeaTe0KDPGzeatHG4ItsN8Gsw4AgbXpiaixvIqgPQPxgEXuzBphEAATriD_7wh5VDlPtEt93sVlNm6Qi201wflTUSdYuj9l3atWgo76xn_yfaL_9JTcnWmusxvXci-VZ-iauoHKpg&h=WOkjTexWDGHIoeqfgajU-tPe6QUFkpxh2fBc6MWKMYQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 365 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/5df02b2f-31c3-4588-ac62-38b359ec7474","name":"5df02b2f-31c3-4588-ac62-38b359ec7474","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "365" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 444839D06E2F4962AB45CED5C3AEDD57 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:21Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 138.035348ms + - id: 24 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 2025 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "2025" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 5A270D4523E0433D879FB830A184FAC3 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:21Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 147.199604ms + - id: 25 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 2025 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "2025" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 74E7674E048442CDA95557D144B4029D Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:21Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 99.983927ms + - id: 26 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/listKeys?api-version=2023-02-01 + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 597 + uncompressed: false + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}","primaryConnectionString":"Endpoint=https://asotest-signalr-mposrl.service.signalr.net;AccessKey=Q6NWo6eshJnwFNQJ32pRHRAQcKWBcpfItU8woTPCmjdAwcJrefaLJQQJ99BBAC8vTInXJ3w3AAAAASRSaAgJ;Version=1.0;","secondaryConnectionString":"Endpoint=https://asotest-signalr-mposrl.service.signalr.net;AccessKey=FZu43x5g3QYfO4X6dzFT7E8hAsdr1FxHa1Mk7fCHYUYwi8jtoJA6JQQJ99BBAC8vTInXJ3w3AAAAASRSi6hi;Version=1.0;"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "597" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: BB50C1BB6D324D179BC77DC87B0039E7 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:22Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 224.037445ms + - id: 27 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 795 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotest-signalr-mposrl","properties":{"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"features":[{"flag":"ServiceMode","value":"Classic"},{"flag":"EnableConnectivityLogs","value":"true"},{"flag":"EnableMessagingLogs","value":"true"},{"flag":"EnableLiveTrace","value":"true"}],"networkACLs":{"defaultAction":"Deny","privateEndpoints":[{"allow":["ServerConnection"],"name":"privateendpointname"}],"publicNetwork":{"allow":["ClientConnection"]}},"tls":{"clientCertEnabled":false},"upstream":{"templates":[{"categoryPattern":"*","eventPattern":"connect,disconnect","hubPattern":"*","urlTemplate":"https://example.com/chat/api/connect"}]}},"sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "795" + Content-Type: + - application/json + Test-Request-Hash: + - f65e839f74a46a1089817630c43770366ab5fc7d32244fc28912e54e94d21cb4 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038013185&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=n4x_WE8QH5dOva_C6Hil-cpNqsTiBjLULFwPZ-aa7dqMff2FF3kzAzazJeqsJzqa-SWNj3PfA771YTi3Xr0nglpDTT091tSVOiHklacAwRNfZDJU-NKiGrU9j5afAlRupKh0XUK701Ok59QzK5dFJ4QoSae1p2lwAbOzF1BRH7Zb5veeG9SAcqz1e76883HR7bYLmAdkMYJtO5ZZKUhqAfnjI_D02Jak3Z25DEqZqOYKqQjw64-RocEeRsdvU6bTzVBcZ5WJklKc_EhUqNonkap3JpKu-tsTmKZ3AQHrvgQmSEPYyi0nfLTaHiZ-CMFvuP1mauYKDlwzH3Z89Yqg2Q&h=oHCwU2wPUcc9l-L-5eveJmmCgFgzj01rXZsrJ9UQVVo + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationResults/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038168981&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=H_NFg131MShmTIW1GJmEh4i-HWqV2M4IzOmaEqnobJhdIgcrz3t5XNIBLzLsC3-t4-afdqTpNx04K9IbZJoiiCPnKLTtGBXmV2JB8BGznYhB-3qPCvjUy64a5Vf_ta1uJVmtpkGf6dhgntB2e5hN4N-aYsvdVUR9QeWYeTGfGsHM_m6yphxI-srGWmbhjMPpgH6GKop29eua0V-tU7qc6DeA9kTUR-2eSzmBI-D5SE2yaVdrpNiEeCbRQ6zq4nbi-P5mUpoNAIFDXkTZ88CMqpFgqq9ZWHIVfJ1rifH9_6kvGAcom_SyuKoZ7bjs7bm3QieZG1DR1Re_K0F84CPfWw&h=WjkfRC6j8DSNYgPvyIEpaCgHS7_IOMA6QANabZA1YsU + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 9F6D6505A6C0412A96FA96B6E38A2B89 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:23Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 202 Accepted + code: 202 + duration: 363.443795ms + - id: 28 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038013185&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=n4x_WE8QH5dOva_C6Hil-cpNqsTiBjLULFwPZ-aa7dqMff2FF3kzAzazJeqsJzqa-SWNj3PfA771YTi3Xr0nglpDTT091tSVOiHklacAwRNfZDJU-NKiGrU9j5afAlRupKh0XUK701Ok59QzK5dFJ4QoSae1p2lwAbOzF1BRH7Zb5veeG9SAcqz1e76883HR7bYLmAdkMYJtO5ZZKUhqAfnjI_D02Jak3Z25DEqZqOYKqQjw64-RocEeRsdvU6bTzVBcZ5WJklKc_EhUqNonkap3JpKu-tsTmKZ3AQHrvgQmSEPYyi0nfLTaHiZ-CMFvuP1mauYKDlwzH3Z89Yqg2Q&h=oHCwU2wPUcc9l-L-5eveJmmCgFgzj01rXZsrJ9UQVVo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef","name":"f431932d-343a-42f5-b2d9-1f2bed99fcef","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: D37EC29FE1384382B4F49CEF5BDA3361 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:25Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 159.766556ms + - id: 29 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038013185&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=n4x_WE8QH5dOva_C6Hil-cpNqsTiBjLULFwPZ-aa7dqMff2FF3kzAzazJeqsJzqa-SWNj3PfA771YTi3Xr0nglpDTT091tSVOiHklacAwRNfZDJU-NKiGrU9j5afAlRupKh0XUK701Ok59QzK5dFJ4QoSae1p2lwAbOzF1BRH7Zb5veeG9SAcqz1e76883HR7bYLmAdkMYJtO5ZZKUhqAfnjI_D02Jak3Z25DEqZqOYKqQjw64-RocEeRsdvU6bTzVBcZ5WJklKc_EhUqNonkap3JpKu-tsTmKZ3AQHrvgQmSEPYyi0nfLTaHiZ-CMFvuP1mauYKDlwzH3Z89Yqg2Q&h=oHCwU2wPUcc9l-L-5eveJmmCgFgzj01rXZsrJ9UQVVo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef","name":"f431932d-343a-42f5-b2d9-1f2bed99fcef","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 7CF2078E90234A2B8CCE331F00911A03 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:27Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 95.38006ms + - id: 30 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038013185&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=n4x_WE8QH5dOva_C6Hil-cpNqsTiBjLULFwPZ-aa7dqMff2FF3kzAzazJeqsJzqa-SWNj3PfA771YTi3Xr0nglpDTT091tSVOiHklacAwRNfZDJU-NKiGrU9j5afAlRupKh0XUK701Ok59QzK5dFJ4QoSae1p2lwAbOzF1BRH7Zb5veeG9SAcqz1e76883HR7bYLmAdkMYJtO5ZZKUhqAfnjI_D02Jak3Z25DEqZqOYKqQjw64-RocEeRsdvU6bTzVBcZ5WJklKc_EhUqNonkap3JpKu-tsTmKZ3AQHrvgQmSEPYyi0nfLTaHiZ-CMFvuP1mauYKDlwzH3Z89Yqg2Q&h=oHCwU2wPUcc9l-L-5eveJmmCgFgzj01rXZsrJ9UQVVo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef","name":"f431932d-343a-42f5-b2d9-1f2bed99fcef","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 0C687DD9E762461E8F405C38904A9A10 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:31Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 42.175308ms + - id: 31 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038013185&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=n4x_WE8QH5dOva_C6Hil-cpNqsTiBjLULFwPZ-aa7dqMff2FF3kzAzazJeqsJzqa-SWNj3PfA771YTi3Xr0nglpDTT091tSVOiHklacAwRNfZDJU-NKiGrU9j5afAlRupKh0XUK701Ok59QzK5dFJ4QoSae1p2lwAbOzF1BRH7Zb5veeG9SAcqz1e76883HR7bYLmAdkMYJtO5ZZKUhqAfnjI_D02Jak3Z25DEqZqOYKqQjw64-RocEeRsdvU6bTzVBcZ5WJklKc_EhUqNonkap3JpKu-tsTmKZ3AQHrvgQmSEPYyi0nfLTaHiZ-CMFvuP1mauYKDlwzH3Z89Yqg2Q&h=oHCwU2wPUcc9l-L-5eveJmmCgFgzj01rXZsrJ9UQVVo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 321 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef","name":"f431932d-343a-42f5-b2d9-1f2bed99fcef","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "321" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 8DBF7474DD4C47C69BE022CB03004699 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:39Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 84.038131ms + - id: 32 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef?api-version=2024-03-01&t=638742287038013185&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=n4x_WE8QH5dOva_C6Hil-cpNqsTiBjLULFwPZ-aa7dqMff2FF3kzAzazJeqsJzqa-SWNj3PfA771YTi3Xr0nglpDTT091tSVOiHklacAwRNfZDJU-NKiGrU9j5afAlRupKh0XUK701Ok59QzK5dFJ4QoSae1p2lwAbOzF1BRH7Zb5veeG9SAcqz1e76883HR7bYLmAdkMYJtO5ZZKUhqAfnjI_D02Jak3Z25DEqZqOYKqQjw64-RocEeRsdvU6bTzVBcZ5WJklKc_EhUqNonkap3JpKu-tsTmKZ3AQHrvgQmSEPYyi0nfLTaHiZ-CMFvuP1mauYKDlwzH3Z89Yqg2Q&h=oHCwU2wPUcc9l-L-5eveJmmCgFgzj01rXZsrJ9UQVVo + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 363 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/operationStatuses/f431932d-343a-42f5-b2d9-1f2bed99fcef","name":"f431932d-343a-42f5-b2d9-1f2bed99fcef","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "363" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: DAC1A8C0CA1D480F82CDBFB8BCC0ED08 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:56Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 85.081052ms + - id: 33 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "6" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 2025 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "2025" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 42AAEE1D996E49628F9BD199EAFA5E80 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:56Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 149.061691ms + - id: 34 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "7" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 2025 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","externalIP":"20.51.12.45","hostName":"asotest-signalr-mposrl.service.signalr.net","publicPort":443,"serverPort":443,"version":"1.0","privateEndpointConnections":[],"sharedPrivateLinkResources":[],"tls":{"clientCertEnabled":false},"hostNamePrefix":"asotest-signalr-mposrl","features":[{"flag":"ServiceMode","value":"Classic","properties":{}},{"flag":"EnableConnectivityLogs","value":"True","properties":{}},{"flag":"EnableMessagingLogs","value":"True","properties":{}},{"flag":"EnableLiveTrace","value":"True","properties":{}}],"liveTraceConfiguration":null,"resourceLogConfiguration":null,"cors":{"allowedOrigins":["https://foo.com","https://bar.com","https://definitelymydomain.horse"]},"serverless":{"connectionTimeoutInSeconds":30},"upstream":{"templates":[{"hubPattern":"*","eventPattern":"connect,disconnect","categoryPattern":"*","urlTemplate":"https://example.com/chat/api/connect","auth":null}]},"networkACLs":{"defaultAction":"Deny","publicNetwork":{"allow":["ClientConnection"],"deny":null},"privateEndpoints":[],"ipRules":[{"value":"0.0.0.0/0","action":"Allow"},{"value":"::/0","action":"Allow"}]},"publicNetworkAccess":"Enabled","disableLocalAuth":false,"disableAadAuth":false,"regionEndpointEnabled":"Enabled","resourceStopped":"false"},"kind":"SignalR","identity":{"type":"SystemAssigned","principalId":"4f4c9758-e579-4313-a1cc-c38612d317d6","tenantId":"00000000-0000-0000-0000-000000000000"},"location":"westus2","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl","name":"asotest-signalr-mposrl","type":"Microsoft.SignalRService/SignalR","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "2025" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1060A08BB24A4ABD855FE90B8A85FC14 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:56Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 111.798643ms + - id: 35 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/listKeys?api-version=2023-02-01 + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 597 + uncompressed: false + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}","primaryConnectionString":"Endpoint=https://asotest-signalr-mposrl.service.signalr.net;AccessKey=Q6NWo6eshJnwFNQJ32pRHRAQcKWBcpfItU8woTPCmjdAwcJrefaLJQQJ99BBAC8vTInXJ3w3AAAAASRSaAgJ;Version=1.0;","secondaryConnectionString":"Endpoint=https://asotest-signalr-mposrl.service.signalr.net;AccessKey=FZu43x5g3QYfO4X6dzFT7E8hAsdr1FxHa1Mk7fCHYUYwi8jtoJA6JQQJ99BBAC8vTInXJ3w3AAAAASRSi6hi;Version=1.0;"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "597" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 02307C3E98394923A20E526323F60B06 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:57Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 223.484991ms + - id: 36 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 95 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus3","name":"asotest-replica-ubjtbr","sku":{"capacity":1,"name":"Premium_P1"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "95" + Content-Type: + - application/json + Test-Request-Hash: + - eef28931d6d9a08a65ede7b9634765f0aca8d5402873e1b010f648dc0e8540af + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr?api-version=2024-03-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 719 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Creating","regionEndpointEnabled":"Enabled","resourceStopped":"false"},"location":"westus3","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr","name":"asotest-replica-ubjtbr","type":"Microsoft.SignalRService/SignalR/replicas","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=PaWCryfoCdcZsMRGWQ9vsLZy0l6tlGLF-68mXbzBBtbK64NJJXUHjEPbHG31vucoyCgFYW0sqGaAPeLH1Oued53xdPfqbvj6lu6JAHg-pTt2Mf8gePCnK1fkMinRd454C1q7if2RAnVtwqPrNMQw88mPjjEJF-HzA_dx0SjawwjV7jyXh0dgoI3Zj0Kdumh0mZKDHxtfY-Nyg29nAtpK1nEQBkXENIGT8qfRKwLqX6FmERR9sdlnOHKhiyJPRprkN_SDB378i1Jhh9TKftmwPmElA37tWA5AYQc0v6DjOzO0S6fyJaMsSSjC-o_vnAzl0rrmntzCnKA4Jy06LC_p-w&h=vzQKZ4gbsZY8qCTVwL5qE9-EGPHt_8Vir9bGM4-6fok + Cache-Control: + - no-cache + Content-Length: + - "719" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationResults/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=h_DU-T89TCV4NZSAVGnxVskSFzV6MUUjZNIvdewhU6PP9aerGDe4quEeICjGCUV19DdQfM-SO5X42SD0g9ZrIx4c9Nps6VwiOpXF2PH5tsr348LRAbFEzMq1LZWIDVwtXdedQm2gwiS21wpHL57-E_aGuJ7nRR8TGohj8G_pMaOycO4XSE9ylXX-vuaJlrVKuuDkOwT-b_icgpFZwZ2eEFjD1llQQGrnUMj9gYGCIhxiznKT2xt-sfx28-1JIIoa16DhKPShP6-A-VgTKAQopB0MPIIT2q75sS5gw5R3kBk7VlHbzAv_SVsYnQtW7JuMzUAmlfzc590CkeKgfFCeiw&h=LN90_RjSWqghytH91VNO01QaF7S15d5NR5mL4QzG_kc + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 0042CA79CCBC40B58B1F7D9A92827726 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:18:59Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 201 Created + code: 201 + duration: 4.661836986s + - id: 37 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=PaWCryfoCdcZsMRGWQ9vsLZy0l6tlGLF-68mXbzBBtbK64NJJXUHjEPbHG31vucoyCgFYW0sqGaAPeLH1Oued53xdPfqbvj6lu6JAHg-pTt2Mf8gePCnK1fkMinRd454C1q7if2RAnVtwqPrNMQw88mPjjEJF-HzA_dx0SjawwjV7jyXh0dgoI3Zj0Kdumh0mZKDHxtfY-Nyg29nAtpK1nEQBkXENIGT8qfRKwLqX6FmERR9sdlnOHKhiyJPRprkN_SDB378i1Jhh9TKftmwPmElA37tWA5AYQc0v6DjOzO0S6fyJaMsSSjC-o_vnAzl0rrmntzCnKA4Jy06LC_p-w&h=vzQKZ4gbsZY8qCTVwL5qE9-EGPHt_8Vir9bGM4-6fok + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 354 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0","name":"7eba9919-cf98-4d60-9372-0d59295374a0","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "354" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 70E45D57C1C846B9A1EAFAE6F160B6B8 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:19:10Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 290.809786ms + - id: 38 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=PaWCryfoCdcZsMRGWQ9vsLZy0l6tlGLF-68mXbzBBtbK64NJJXUHjEPbHG31vucoyCgFYW0sqGaAPeLH1Oued53xdPfqbvj6lu6JAHg-pTt2Mf8gePCnK1fkMinRd454C1q7if2RAnVtwqPrNMQw88mPjjEJF-HzA_dx0SjawwjV7jyXh0dgoI3Zj0Kdumh0mZKDHxtfY-Nyg29nAtpK1nEQBkXENIGT8qfRKwLqX6FmERR9sdlnOHKhiyJPRprkN_SDB378i1Jhh9TKftmwPmElA37tWA5AYQc0v6DjOzO0S6fyJaMsSSjC-o_vnAzl0rrmntzCnKA4Jy06LC_p-w&h=vzQKZ4gbsZY8qCTVwL5qE9-EGPHt_8Vir9bGM4-6fok + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 354 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0","name":"7eba9919-cf98-4d60-9372-0d59295374a0","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "354" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: CFE7892344A44BBE885215329E793DA2 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:19:15Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 246.330474ms + - id: 39 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=PaWCryfoCdcZsMRGWQ9vsLZy0l6tlGLF-68mXbzBBtbK64NJJXUHjEPbHG31vucoyCgFYW0sqGaAPeLH1Oued53xdPfqbvj6lu6JAHg-pTt2Mf8gePCnK1fkMinRd454C1q7if2RAnVtwqPrNMQw88mPjjEJF-HzA_dx0SjawwjV7jyXh0dgoI3Zj0Kdumh0mZKDHxtfY-Nyg29nAtpK1nEQBkXENIGT8qfRKwLqX6FmERR9sdlnOHKhiyJPRprkN_SDB378i1Jhh9TKftmwPmElA37tWA5AYQc0v6DjOzO0S6fyJaMsSSjC-o_vnAzl0rrmntzCnKA4Jy06LC_p-w&h=vzQKZ4gbsZY8qCTVwL5qE9-EGPHt_8Vir9bGM4-6fok + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 354 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0","name":"7eba9919-cf98-4d60-9372-0d59295374a0","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "354" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 6E18A998ADB0495D99B43FA4C27095E0 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:19:24Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 229.486472ms + - id: 40 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=PaWCryfoCdcZsMRGWQ9vsLZy0l6tlGLF-68mXbzBBtbK64NJJXUHjEPbHG31vucoyCgFYW0sqGaAPeLH1Oued53xdPfqbvj6lu6JAHg-pTt2Mf8gePCnK1fkMinRd454C1q7if2RAnVtwqPrNMQw88mPjjEJF-HzA_dx0SjawwjV7jyXh0dgoI3Zj0Kdumh0mZKDHxtfY-Nyg29nAtpK1nEQBkXENIGT8qfRKwLqX6FmERR9sdlnOHKhiyJPRprkN_SDB378i1Jhh9TKftmwPmElA37tWA5AYQc0v6DjOzO0S6fyJaMsSSjC-o_vnAzl0rrmntzCnKA4Jy06LC_p-w&h=vzQKZ4gbsZY8qCTVwL5qE9-EGPHt_8Vir9bGM4-6fok + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 354 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0","name":"7eba9919-cf98-4d60-9372-0d59295374a0","status":"Running","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "354" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 827B3CA90FEA4C5FB481F1056AA9E7DC Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:19:40Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 289.654532ms + - id: 41 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0?api-version=2024-03-01&t=638742287442116505&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=PaWCryfoCdcZsMRGWQ9vsLZy0l6tlGLF-68mXbzBBtbK64NJJXUHjEPbHG31vucoyCgFYW0sqGaAPeLH1Oued53xdPfqbvj6lu6JAHg-pTt2Mf8gePCnK1fkMinRd454C1q7if2RAnVtwqPrNMQw88mPjjEJF-HzA_dx0SjawwjV7jyXh0dgoI3Zj0Kdumh0mZKDHxtfY-Nyg29nAtpK1nEQBkXENIGT8qfRKwLqX6FmERR9sdlnOHKhiyJPRprkN_SDB378i1Jhh9TKftmwPmElA37tWA5AYQc0v6DjOzO0S6fyJaMsSSjC-o_vnAzl0rrmntzCnKA4Jy06LC_p-w&h=vzQKZ4gbsZY8qCTVwL5qE9-EGPHt_8Vir9bGM4-6fok + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 397 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr/operationStatuses/7eba9919-cf98-4d60-9372-0d59295374a0","name":"7eba9919-cf98-4d60-9372-0d59295374a0","status":"Succeeded","startTime":"2001-02-03T04:05:06Z","endTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "397" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 7AEADBC6DD41431DBDFD20EBCD92510B Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:13Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 247.209502ms + - id: 42 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 720 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","regionEndpointEnabled":"Enabled","resourceStopped":"false"},"location":"westus3","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr","name":"asotest-replica-ubjtbr","type":"Microsoft.SignalRService/SignalR/replicas","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "720" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 6BD54143D3734F78853D41C466B2D9C6 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:13Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 235.325036ms + - id: 43 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 720 + uncompressed: false + body: '{"sku":{"name":"Premium_P1","tier":"Premium","size":"P1","capacity":1},"properties":{"provisioningState":"Succeeded","regionEndpointEnabled":"Enabled","resourceStopped":"false"},"location":"westus3","tags":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr","name":"asotest-replica-ubjtbr","type":"Microsoft.SignalRService/SignalR/replicas","systemData":{"createdBy":"matthchr@microsoft.com","createdByType":"User","createdAt":"2001-02-03T04:05:06Z","lastModifiedBy":"matthchr@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2001-02-03T04:05:06Z"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "720" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 86E4E5AC246649889D56DEF634132801 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:14Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 200 OK + code: 200 + duration: 243.238916ms + - id: 44 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr?api-version=2024-03-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 5B333C1527A14AC1961A6BE6CAA3B4A9 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:18Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 204 No Content + code: 204 + duration: 560.976661ms + - id: 45 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 276 + uncompressed: false + body: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.SignalRService/SignalR/asotest-signalr-mposrl/replicas/asotest-replica-ubjtbr'' under resource group ''asotest-rg-dlkphj'' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "276" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Failure-Cause: + - gateway + X-Msedge-Ref: + - 'Ref A: B3F2A58C27AB4A939345AFF11C02C7F7 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:24Z' + status: 404 Not Found + code: 404 + duration: 89.412462ms + - id: 46 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/signalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: C874C916CBC34182B7D9887144A8A8F8 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:24Z' + X-Rp-Server-Mvid: + - d31ecd13-9363-4bbf-93ab-380071d6af9e + status: 204 No Content + code: 204 + duration: 2.246787958s + - id: 47 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj/providers/Microsoft.SignalRService/SignalR/asotest-signalr-mposrl?api-version=2024-03-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 244 + uncompressed: false + body: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.SignalRService/SignalR/asotest-signalr-mposrl'' under resource group ''asotest-rg-dlkphj'' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "244" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Failure-Cause: + - gateway + X-Msedge-Ref: + - 'Ref A: E0F0A33D2CF84405B0448077C42A9013 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:29Z' + status: 404 Not Found + code: 404 + duration: 30.91102ms + - id: 48 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dlkphj?api-version=2020-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRETEtQSEotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742288297001522&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=kIBBbjXPlHShV3MwglYqH8Ahwo6XR3WvFQ-4OsR2x7wn-CvwCFGVqS1S4Y2P_2xVVS0bjLNNdPL0-TgfLoGGnS5mSnvK_cuIdXU8XWg0idyLPm11aBshqo7B82u9xYf-OzMvVPL_zZ9HeaYFQfRT1nceYGCRnPj7eqbziCZY-721BMSRleQhGtj602FzcOCwikBhiDn4x4evoMewKVBwXg7bTR48a10TkKlPv2IItC99AhewtN5fhMEDHp8olYJVDVbjsvR23tm8oh1E27UPBDxP6gWkwOEixsdclLx1JjXjJLUSPb3aDk4JOkjs3Uv4AceOjwkPigKGKwz05GSftA&h=X5BwqtFDVEiUxRPz3oA6S1m7AbisbSbXoV9YUoE0A3E + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: F54A84A4AA1346B1A237C36667F0834B Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:29Z' + status: 202 Accepted + code: 202 + duration: 280.887174ms + - id: 49 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRETEtQSEotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638742288297001522&c=MIIHpTCCBo2gAwIBAgITfwTYu0qoRwcN0bP8jwAEBNi7SjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTIzMjA0ODUxWhcNMjUwNzIyMjA0ODUxWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJiyUikcpMswfhvdsI_rXYHu5usdpZW7yAqWPwx7nyvDBbA6tYMOwIWDF3lmy48lA46kFg2__zl_gVcj_Jw_2ue8USufQFsjmlCYmhbryemgmCuZucLrVs0nOW_5HVAX7QY9eBRWotqXIDJPTRyoGqWrXm2qO_sMjVacTB19-WMO5gHXKvOrm3HRspddB5sJUi15aHoSTlGgepJ8Bc6vMEFWUSNkkRqGt-EtMDQGAf2PFA2rkeizLvEPyGwqA04f56eXcnvVc-9t6jGFggfFusEW3_EaE1CqF_Aemzi9kaAhLfj5fOyZHybExiqyzL3WDGLAe-mC9uhOggcp5HjtKECAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBTFiuatBch4getEuR5ddJpfuPsJ8DAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAIxmxJ5xNUiG8PRXsUSme6IbA37JinZso0lwEjfgtHmK1DZhhGugl-cdjEw10JLCVwaiKd-q2yljbccx_MpSj2rx5yGUNb32Cv2p40-HWzxtYMw0j9JGcrJWoP_apkjIELce110mKIOL4dJ3r8N5cXuhEatDvAPjNYjdG9YgGTE1s1CLy9MvJsLRVQnWtxDWlWsj_XgzlBhvgxwXILR7A48GZLe9ENWEJwEl_AmMGT_o5kKmBfcKl6mjYWjCchXL5bHKE5dnl9X3W2eQTdqqGqh2z2KAUwyCu2xOV5xh6Zjg6SDEuPHvcBqAHqMgqi3E38hUBBXw4AXVsmQhz5FyOg8&s=kIBBbjXPlHShV3MwglYqH8Ahwo6XR3WvFQ-4OsR2x7wn-CvwCFGVqS1S4Y2P_2xVVS0bjLNNdPL0-TgfLoGGnS5mSnvK_cuIdXU8XWg0idyLPm11aBshqo7B82u9xYf-OzMvVPL_zZ9HeaYFQfRT1nceYGCRnPj7eqbziCZY-721BMSRleQhGtj602FzcOCwikBhiDn4x4evoMewKVBwXg7bTR48a10TkKlPv2IItC99AhewtN5fhMEDHp8olYJVDVbjsvR23tm8oh1E27UPBDxP6gWkwOEixsdclLx1JjXjJLUSPb3aDk4JOkjs3Uv4AceOjwkPigKGKwz05GSftA&h=X5BwqtFDVEiUxRPz3oA6S1m7AbisbSbXoV9YUoE0A3E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 353E23AFBA0F46DABE016293B809E618 Ref B: CO6AA3150218017 Ref C: 2025-02-04T01:20:45Z' + status: 200 OK + code: 200 + duration: 47.344389ms diff --git a/v2/internal/controllers/crd_signalr_test.go b/v2/internal/controllers/signalrservice_signalr_20211001_test.go similarity index 91% rename from v2/internal/controllers/crd_signalr_test.go rename to v2/internal/controllers/signalrservice_signalr_20211001_test.go index 14f85e80527..b0aa61c8a93 100644 --- a/v2/internal/controllers/crd_signalr_test.go +++ b/v2/internal/controllers/signalrservice_signalr_20211001_test.go @@ -32,7 +32,7 @@ func Test_SignalRService_SignalR_CRUD(t *testing.T) { connectivityLogsFlag := signalrservice.FeatureFlags_EnableConnectivityLogs enableMessagingLogsFlag := signalrservice.FeatureFlags_EnableMessagingLogs enableliveTraceFlag := signalrservice.FeatureFlags_EnableLiveTrace - signalR := signalrservice.SignalR{ + signalR := &signalrservice.SignalR{ ObjectMeta: tc.MakeObjectMeta("signalr"), Spec: signalrservice.SignalR_Spec{ Location: tc.AzureRegion, @@ -88,7 +88,7 @@ func Test_SignalRService_SignalR_CRUD(t *testing.T) { }, } - tc.CreateResourceAndWait(&signalR) + tc.CreateResourceAndWait(signalR) tc.Expect(signalR.Status.Id).ToNot(BeNil()) armId := *signalR.Status.Id @@ -97,7 +97,7 @@ func Test_SignalRService_SignalR_CRUD(t *testing.T) { signalR.Spec.Cors.AllowedOrigins = append( signalR.Spec.Cors.AllowedOrigins, "https://definitelymydomain.horse", ) - tc.PatchResourceAndWait(old, &signalR) + tc.PatchResourceAndWait(old, signalR) tc.Expect(signalR.Status.Cors).ToNot(BeNil()) tc.Expect(signalR.Status.Cors.AllowedOrigins).To(ContainElement("https://definitelymydomain.horse")) @@ -111,18 +111,18 @@ func Test_SignalRService_SignalR_CRUD(t *testing.T) { testcommon.Subtest{ Name: "SecretsWrittenToSameKubeSecret", Test: func(tc *testcommon.KubePerTestContext) { - SignalR_SecretsWrittenToSameKubeSecret(tc, &signalR) + SignalR_SecretsWrittenToSameKubeSecret_20211001(tc, signalR) }, }, testcommon.Subtest{ Name: "SecretsWrittenToDifferentKubeSecrets", Test: func(tc *testcommon.KubePerTestContext) { - SignalR_SecretsWrittenToDifferentKubeSecrets(tc, &signalR) + SignalR_SecretsWrittenToDifferentKubeSecrets_20211001(tc, signalR) }, }, ) - tc.DeleteResourcesAndWait(&signalR) + tc.DeleteResourcesAndWait(signalR) // Ensure that the resource was really deleted in Azure exists, retryAfter, err := tc.AzureClient.CheckExistenceWithGetByID(tc.Ctx, armId, string(signalrservice.APIVersion_Value)) @@ -131,7 +131,7 @@ func Test_SignalRService_SignalR_CRUD(t *testing.T) { tc.Expect(exists).To(BeFalse()) } -func SignalR_SecretsWrittenToSameKubeSecret(tc *testcommon.KubePerTestContext, signalR *signalrservice.SignalR) { +func SignalR_SecretsWrittenToSameKubeSecret_20211001(tc *testcommon.KubePerTestContext, signalR *signalrservice.SignalR) { old := signalR.DeepCopy() signalrSecret := "signalrsecret" signalR.Spec.OperatorSpec = &signalrservice.SignalROperatorSpec{ @@ -159,7 +159,7 @@ func SignalR_SecretsWrittenToSameKubeSecret(tc *testcommon.KubePerTestContext, s tc.ExpectSecretHasKeys(signalrSecret, "primarykey", "primaryconnectionstring", "secondarykey", "secondaryconnectionstring") } -func SignalR_SecretsWrittenToDifferentKubeSecrets(tc *testcommon.KubePerTestContext, signalR *signalrservice.SignalR) { +func SignalR_SecretsWrittenToDifferentKubeSecrets_20211001(tc *testcommon.KubePerTestContext, signalR *signalrservice.SignalR) { old := signalR.DeepCopy() primaryKeySecret := "secret1" primaryConnectionString := "secret2" diff --git a/v2/internal/controllers/signalrservice_signalr_20240301_test.go b/v2/internal/controllers/signalrservice_signalr_20240301_test.go new file mode 100644 index 00000000000..61142536faa --- /dev/null +++ b/v2/internal/controllers/signalrservice_signalr_20240301_test.go @@ -0,0 +1,232 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +package controllers_test + +import ( + "testing" + + . "github.com/onsi/gomega" + + v1 "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + signalrservice "github.com/Azure/azure-service-operator/v2/api/signalrservice/v1api20240301" + "github.com/Azure/azure-service-operator/v2/internal/testcommon" + "github.com/Azure/azure-service-operator/v2/internal/util/to" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +func Test_SignalRService_SignalR_20240301_CRUD(t *testing.T) { + t.Parallel() + tc := globalTestContext.ForTest(t) + rg := tc.CreateTestResourceGroupAndWait() + + deny := signalrservice.ACLAction_Deny + systemAssigned := signalrservice.ManagedIdentityType_SystemAssigned + // Adapted from the quickstart example: + // https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-azure-signalr-service-arm-template + serviceModeFlag := signalrservice.FeatureFlags_ServiceMode + connectivityLogsFlag := signalrservice.FeatureFlags_EnableConnectivityLogs + enableMessagingLogsFlag := signalrservice.FeatureFlags_EnableMessagingLogs + enableliveTraceFlag := signalrservice.FeatureFlags_EnableLiveTrace + signalR := &signalrservice.SignalR{ + ObjectMeta: tc.MakeObjectMeta("signalr"), + Spec: signalrservice.SignalR_Spec{ + Location: tc.AzureRegion, + Owner: testcommon.AsOwner(rg), + Sku: &signalrservice.ResourceSku{ + Capacity: to.Ptr(1), + Name: to.Ptr("Premium_P1"), + }, + Identity: &signalrservice.ManagedIdentity{ + Type: &systemAssigned, + }, + Tls: &signalrservice.SignalRTlsSettings{ + ClientCertEnabled: to.Ptr(false), + }, + Features: []signalrservice.SignalRFeature{{ + Flag: &serviceModeFlag, + Value: to.Ptr("Classic"), + }, { + Flag: &connectivityLogsFlag, + Value: to.Ptr("true"), + }, { + Flag: &enableMessagingLogsFlag, + Value: to.Ptr("true"), + }, { + Flag: &enableliveTraceFlag, + Value: to.Ptr("true"), + }}, + Cors: &signalrservice.SignalRCorsSettings{ + AllowedOrigins: []string{"https://foo.com", "https://bar.com"}, + }, + NetworkACLs: &signalrservice.SignalRNetworkACLs{ + DefaultAction: &deny, + PublicNetwork: &signalrservice.NetworkACL{ + Allow: []signalrservice.SignalRRequestType{ + signalrservice.SignalRRequestType_ClientConnection, + }, + }, + PrivateEndpoints: []signalrservice.PrivateEndpointACL{{ + Name: to.Ptr("privateendpointname"), + Allow: []signalrservice.SignalRRequestType{ + signalrservice.SignalRRequestType_ServerConnection, + }, + }}, + }, + Upstream: &signalrservice.ServerlessUpstreamSettings{ + Templates: []signalrservice.UpstreamTemplate{{ + CategoryPattern: to.Ptr("*"), + EventPattern: to.Ptr("connect,disconnect"), + HubPattern: to.Ptr("*"), + UrlTemplate: to.Ptr("https://example.com/chat/api/connect"), + }}, + }, + }, + } + + tc.CreateResourceAndWait(signalR) + tc.Expect(signalR.Status.Id).ToNot(BeNil()) + armId := *signalR.Status.Id + + // Perform a patch to add another URL to the cors allow list. + old := signalR.DeepCopy() + signalR.Spec.Cors.AllowedOrigins = append( + signalR.Spec.Cors.AllowedOrigins, "https://definitelymydomain.horse", + ) + tc.PatchResourceAndWait(old, signalR) + tc.Expect(signalR.Status.Cors).ToNot(BeNil()) + tc.Expect(signalR.Status.Cors.AllowedOrigins).To(ContainElement("https://definitelymydomain.horse")) + + // There should be no secrets at this point + list := &v1.SecretList{} + tc.ListResources(list, client.InNamespace(tc.Namespace)) + tc.Expect(list.Items).To(HaveLen(0)) + + // Run sub-tests on the SignalR service in sequence + tc.RunSubtests( + testcommon.Subtest{ + Name: "SecretsWrittenToSameKubeSecret", + Test: func(tc *testcommon.KubePerTestContext) { + SignalR_SecretsWrittenToSameKubeSecret_20240301(tc, signalR) + }, + }, + testcommon.Subtest{ + Name: "SecretsWrittenToDifferentKubeSecrets", + Test: func(tc *testcommon.KubePerTestContext) { + SignalR_SecretsWrittenToDifferentKubeSecrets_20240301(tc, signalR) + }, + }, + ) + + tc.RunParallelSubtests( + testcommon.Subtest{ + Name: "SignalR Replica CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + SignalR_Replica_20240301(tc, signalR) + }, + }, + // TODO: No test for custom domain/custom cert because they require a KV cert... + ) + + tc.DeleteResourcesAndWait(signalR) + + // Ensure that the resource was really deleted in Azure + exists, retryAfter, err := tc.AzureClient.CheckExistenceWithGetByID(tc.Ctx, armId, string(signalrservice.APIVersion_Value)) + tc.Expect(err).ToNot(HaveOccurred()) + tc.Expect(retryAfter).To(BeZero()) + tc.Expect(exists).To(BeFalse()) +} + +func SignalR_SecretsWrittenToSameKubeSecret_20240301(tc *testcommon.KubePerTestContext, signalR *signalrservice.SignalR) { + old := signalR.DeepCopy() + signalrSecret := "signalrsecret" + signalR.Spec.OperatorSpec = &signalrservice.SignalROperatorSpec{ + Secrets: &signalrservice.SignalROperatorSecrets{ + PrimaryKey: &genruntime.SecretDestination{ + Name: signalrSecret, + Key: "primarykey", + }, + PrimaryConnectionString: &genruntime.SecretDestination{ + Name: signalrSecret, + Key: "primaryconnectionstring", + }, + SecondaryKey: &genruntime.SecretDestination{ + Name: signalrSecret, + Key: "secondarykey", + }, + SecondaryConnectionString: &genruntime.SecretDestination{ + Name: signalrSecret, + Key: "secondaryconnectionstring", + }, + }, + } + tc.PatchResourceAndWait(old, signalR) + + tc.ExpectSecretHasKeys(signalrSecret, "primarykey", "primaryconnectionstring", "secondarykey", "secondaryconnectionstring") +} + +func SignalR_SecretsWrittenToDifferentKubeSecrets_20240301(tc *testcommon.KubePerTestContext, signalR *signalrservice.SignalR) { + old := signalR.DeepCopy() + primaryKeySecret := "secret1" + primaryConnectionString := "secret2" + secondaryKeySecret := "secret3" + secondaryConnectionString := "secret4" + + signalR.Spec.OperatorSpec = &signalrservice.SignalROperatorSpec{ + Secrets: &signalrservice.SignalROperatorSecrets{ + PrimaryKey: &genruntime.SecretDestination{ + Name: primaryKeySecret, + Key: "primarykey", + }, + PrimaryConnectionString: &genruntime.SecretDestination{ + Name: primaryConnectionString, + Key: "primaryconnectionstring", + }, + SecondaryKey: &genruntime.SecretDestination{ + Name: secondaryKeySecret, + Key: "secondarykey", + }, + SecondaryConnectionString: &genruntime.SecretDestination{ + Name: secondaryConnectionString, + Key: "secondaryconnectionstring", + }, + }, + } + tc.PatchResourceAndWait(old, signalR) + + tc.ExpectSecretHasKeys(primaryKeySecret, "primarykey") + tc.ExpectSecretHasKeys(primaryConnectionString, "primaryconnectionstring") + tc.ExpectSecretHasKeys(secondaryKeySecret, "secondarykey") + tc.ExpectSecretHasKeys(secondaryConnectionString, "secondaryconnectionstring") +} + +func SignalR_Replica_20240301(tc *testcommon.KubePerTestContext, signalr *signalrservice.SignalR) { + replica := &signalrservice.Replica{ + ObjectMeta: tc.MakeObjectMeta("replica"), + Spec: signalrservice.Replica_Spec{ + Owner: testcommon.AsOwner(signalr), + Sku: &signalrservice.ResourceSku{ + Capacity: to.Ptr(1), + Name: to.Ptr("Premium_P1"), + }, + Location: to.Ptr("westus3"), // This must be different than tc.AzureRegion + }, + } + + tc.CreateResourceAndWait(replica) + + tc.Expect(replica.Status.Id).ToNot(BeNil()) + armId := *replica.Status.Id + + tc.DeleteResourcesAndWait(replica) + + // Ensure that the resource was really deleted in Azure + exists, retryAfter, err := tc.AzureClient.CheckExistenceWithGetByID(tc.Ctx, armId, string(signalrservice.APIVersion_Value)) + tc.Expect(err).ToNot(HaveOccurred()) + tc.Expect(retryAfter).To(BeZero()) + tc.Expect(exists).To(BeFalse()) +} diff --git a/v2/internal/testcommon/samples_tester.go b/v2/internal/testcommon/samples_tester.go index 2ad8fde3c3d..c145ee3d99d 100644 --- a/v2/internal/testcommon/samples_tester.go +++ b/v2/internal/testcommon/samples_tester.go @@ -68,6 +68,10 @@ var exclusions = []string{ // Excluding cdn secret as it requires KV secrets "secret", + // Excluding SignalR CustomDomain and CustomCertificate becaues they require KV secrets/certs + "customdomain", + "customcertificate", + // [Issue #3091] Exclude backupvaultsbackupinstance as it requires role assignments to be created after backup instance is created to make it land into protection configured state. "backupvaultsbackupinstance", } diff --git a/v2/samples/signalrservice/v1api/v1api20211001_signalr.yaml b/v2/samples/signalrservice/v1api20211001/v1api20211001_signalr.yaml similarity index 100% rename from v2/samples/signalrservice/v1api/v1api20211001_signalr.yaml rename to v2/samples/signalrservice/v1api20211001/v1api20211001_signalr.yaml diff --git a/v2/samples/signalrservice/v1api20240301/v1api20240301_customcertificate.yaml b/v2/samples/signalrservice/v1api20240301/v1api20240301_customcertificate.yaml new file mode 100644 index 00000000000..c97dfc62cc1 --- /dev/null +++ b/v2/samples/signalrservice/v1api20240301/v1api20240301_customcertificate.yaml @@ -0,0 +1,14 @@ +apiVersion: signalrservice.azure.com/v1api20240301 +kind: CustomCertificate +metadata: + name: aso-sample-signalr-customdomaincert + namespace: default +spec: + location: westus2 + owner: + name: aso-sample-signalr + keyVaultBaseUri: https://contoso-key-vault.vault.azure.net + #keyVaultBaseUriFromConfig: + # name: keyvault-details + # key: baseUri + keyVaultSecretName: mysecret diff --git a/v2/samples/signalrservice/v1api20240301/v1api20240301_customdomain.yaml b/v2/samples/signalrservice/v1api20240301/v1api20240301_customdomain.yaml new file mode 100644 index 00000000000..6d5bd1b0ab2 --- /dev/null +++ b/v2/samples/signalrservice/v1api20240301/v1api20240301_customdomain.yaml @@ -0,0 +1,14 @@ +apiVersion: signalrservice.azure.com/v1api20240301 +kind: CustomDomain +metadata: + name: aso-sample-signalr-customdomain + namespace: default +spec: + location: westus2 + owner: + name: aso-sample-signalr + domainName: contoso.example.com + customCertificate: + group: signalrservice.azure.com + kind: CustomCertificate + name: aso-sample-signalr-customdomaincert diff --git a/v2/samples/signalrservice/v1api20240301/v1api20240301_replica.yaml b/v2/samples/signalrservice/v1api20240301/v1api20240301_replica.yaml new file mode 100644 index 00000000000..aa200c7f8c0 --- /dev/null +++ b/v2/samples/signalrservice/v1api20240301/v1api20240301_replica.yaml @@ -0,0 +1,12 @@ +apiVersion: signalrservice.azure.com/v1api20240301 +kind: Replica +metadata: + name: aso-sample-signalr-replica + namespace: default +spec: + location: westus3 + owner: + name: aso-sample-signalr + sku: + capacity: 1 + name: Premium_P1 diff --git a/v2/samples/signalrservice/v1api20240301/v1api20240301_signalr.yaml b/v2/samples/signalrservice/v1api20240301/v1api20240301_signalr.yaml new file mode 100644 index 00000000000..8fedd26b9eb --- /dev/null +++ b/v2/samples/signalrservice/v1api20240301/v1api20240301_signalr.yaml @@ -0,0 +1,60 @@ +# Adapted from the quickstart example: +# https://docs.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-azure-signalr-service-arm-template +apiVersion: signalrservice.azure.com/v1api20240301 +kind: SignalR +metadata: + name: aso-sample-signalr + namespace: default +spec: + location: westus2 + owner: + name: aso-sample-rg + sku: + capacity: 1 + name: Premium_P1 + identity: + type: SystemAssigned + tls: + clientCertEnabled: false + features: + - flag: ServiceMode + value: Classic + - flag: EnableConnectivityLogs + value: "true" + - flag: EnableMessagingLogs + value: "true" + - flag: EnableLiveTrace + value: "true" + cors: + allowedOrigins: + - "https://foo.com" + - "https://bar.com" + networkACLs: + defaultAction: Deny + publicNetwork: + allow: + - ClientConnection + privateEndpoints: + - name: privateendpointname + allow: + - ServerConnection + upstream: + templates: + - categoryPattern: "*" + eventPattern: "connect,disconnect" + hubPattern: "*" + urlTemplate: "https://example.com/chat/api/connect" + operatorSpec: + secrets: + primaryKey: + name: authsecret + key: primaryKey + primaryConnectionString: + name: authsecret + key: primaryConnectionString + secondaryKey: + name: authsecret + key: secondaryKey + secondaryConnectionString: + name: authsecret + key: secondaryConnectionString