From 333dcc7a7d8b395d26f6e1f8d971eb14be0fc462 Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Thu, 30 Jan 2025 10:20:45 +1300 Subject: [PATCH 1/8] Update azure-arm.yaml --- v2/azure-arm.yaml | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/v2/azure-arm.yaml b/v2/azure-arm.yaml index 9c8d6f7e3c..23611a3089 100644 --- a/v2/azure-arm.yaml +++ b/v2/azure-arm.yaml @@ -2134,7 +2134,48 @@ objectModelConfiguration: $armReference: true ServerProperties: SourceServerResourceId: - $armReference: true # TODO: probably need a conversion hook for this... don't merge without it + $armReference: true + 2023-12-30: + DataEncryption: + GeoBackupUserAssignedIdentityId: + $armReference: true + PrimaryUserAssignedIdentityId: + $armReference: true + FlexibleServer: + $export: true + $supportedFrom: v2.12.0 + $azureGeneratedSecrets: + - FullyQualifiedDomainName + $generatedConfigs: + FullyQualifiedDomainName: $.Status.FullyQualifiedDomainName + AdministratorLogin: $.Status.AdministratorLogin + FlexibleServers_Administrator: + $exportAs: FlexibleServersAdministrator + $supportedFrom: v2.12.0 + AdministratorProperties: + IdentityResourceId: + $armReference: true # TODO: Upstream to Swagger + Sid: + $importConfigMapMode: optional + TenantId: + $importConfigMapMode: optional + FlexibleServers_Configuration: + $exportAs: FlexibleServersConfiguration + $supportedFrom: v2.12.0 + FlexibleServers_Database: + $exportAs: FlexibleServersDatabase + $supportedFrom: v2.12.0 + FlexibleServers_FirewallRule: + $exportAs: FlexibleServersFirewallRule + $supportedFrom: v2.12.0 + Network: + DelegatedSubnetResourceId: + $armReference: true + PrivateDnsZoneResourceId: + $armReference: true + ServerProperties: + SourceServerResourceId: + $armReference: true dbforpostgresql: v1: # Handcrafted User: @@ -2243,6 +2284,7 @@ objectModelConfiguration: $armReference: true PrivateDnsZoneArmResourceId: $armReference: true + devices: 2021-07-02: IotHub: From fdc40b5846351307efda42854aac0b0de6287848 Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Thu, 30 Jan 2025 10:22:49 +1300 Subject: [PATCH 2/8] Update generated files --- docs/hugo/content/reference/_index.md | 12 + .../content/reference/dbformysql/_index.md | 12 + .../flexible_server_extension_types_gen.go | 6 +- .../flexible_server_extensions.go | 2 +- ...rvers_administrator_extension_types_gen.go | 6 +- ...rvers_configuration_extension_types_gen.go | 6 +- ...exible_servers_configuration_extensions.go | 2 +- ...le_servers_database_extension_types_gen.go | 6 +- ...rvers_firewall_rule_extension_types_gen.go | 6 +- .../flexible_server_types_gen_test.go | 4 +- ...lexible_servers_database_types_gen_test.go | 4 +- ...le_servers_firewall_rule_types_gen_test.go | 4 +- .../storage/flexible_server_types_gen.go | 31 +- .../storage/flexible_server_types_gen_test.go | 3 +- .../flexible_servers_database_types_gen.go | 31 +- ...lexible_servers_database_types_gen_test.go | 13 +- ...lexible_servers_firewall_rule_types_gen.go | 31 +- ...le_servers_firewall_rule_types_gen_test.go | 13 +- ...le_servers_administrator_types_gen_test.go | 4 +- ...le_servers_configuration_types_gen_test.go | 4 +- ...lexible_servers_administrator_types_gen.go | 31 +- ...le_servers_administrator_types_gen_test.go | 15 +- ...lexible_servers_configuration_types_gen.go | 31 +- ...le_servers_configuration_types_gen_test.go | 13 +- .../flexible_server_types_gen.go | 429 +- .../flexible_server_types_gen_test.go | 59 +- ...lexible_servers_administrator_types_gen.go | 73 +- ...le_servers_administrator_types_gen_test.go | 13 +- ...lexible_servers_configuration_types_gen.go | 62 +- ...le_servers_configuration_types_gen_test.go | 13 +- .../flexible_servers_database_types_gen.go | 54 +- ...lexible_servers_database_types_gen_test.go | 13 +- ...lexible_servers_firewall_rule_types_gen.go | 64 +- ...le_servers_firewall_rule_types_gen_test.go | 13 +- .../storage/flexible_server_types_gen.go | 3243 ++++++++- .../storage/flexible_server_types_gen_test.go | 1184 +++- ...lexible_servers_administrator_types_gen.go | 622 +- ...le_servers_administrator_types_gen_test.go | 212 + ...lexible_servers_configuration_types_gen.go | 610 +- ...le_servers_configuration_types_gen_test.go | 212 + .../flexible_servers_database_types_gen.go | 550 +- ...lexible_servers_database_types_gen_test.go | 212 + ...lexible_servers_firewall_rule_types_gen.go | 550 +- ...le_servers_firewall_rule_types_gen_test.go | 212 + .../v1api20230630/storage/structure.txt | 43 + .../arm/flexible_server_spec_types_gen.go | 332 + .../flexible_server_spec_types_gen_test.go | 823 +++ .../arm/flexible_server_status_types_gen.go | 451 ++ .../flexible_server_status_types_gen_test.go | 913 +++ ...le_servers_administrator_spec_types_gen.go | 56 + ...rvers_administrator_spec_types_gen_test.go | 158 + ..._servers_administrator_status_types_gen.go | 49 + ...ers_administrator_status_types_gen_test.go | 161 + ...le_servers_configuration_spec_types_gen.go | 56 + ...rvers_configuration_spec_types_gen_test.go | 156 + ..._servers_configuration_status_types_gen.go | 110 + ...ers_configuration_status_types_gen_test.go | 167 + ...lexible_servers_database_spec_types_gen.go | 39 + ...le_servers_database_spec_types_gen_test.go | 154 + ...xible_servers_database_status_types_gen.go | 31 + ..._servers_database_status_types_gen_test.go | 158 + ...le_servers_firewall_rule_spec_types_gen.go | 39 + ...rvers_firewall_rule_spec_types_gen_test.go | 155 + ..._servers_firewall_rule_status_types_gen.go | 31 + ...ers_firewall_rule_status_types_gen_test.go | 158 + .../v1api20231230/arm/structure.txt | 338 + v2/api/dbformysql/v1api20231230/doc.go | 10 + .../flexible_server_types_gen.go | 5877 +++++++++++++++++ .../flexible_server_types_gen_test.go | 2974 +++++++++ ...lexible_servers_administrator_types_gen.go | 1202 ++++ ...le_servers_administrator_types_gen_test.go | 507 ++ ...lexible_servers_configuration_types_gen.go | 1284 ++++ ...le_servers_configuration_types_gen_test.go | 513 ++ .../flexible_servers_database_types_gen.go | 958 +++ ...lexible_servers_database_types_gen_test.go | 503 ++ ...lexible_servers_firewall_rule_types_gen.go | 992 +++ ...le_servers_firewall_rule_types_gen_test.go | 503 ++ .../v1api20231230/groupversion_info_gen.go | 32 + .../storage/flexible_server_types_gen.go | 542 ++ .../storage/flexible_server_types_gen_test.go | 1769 +++++ ...lexible_servers_administrator_types_gen.go | 255 + ...le_servers_administrator_types_gen_test.go | 296 + ...lexible_servers_configuration_types_gen.go | 257 + ...le_servers_configuration_types_gen_test.go | 302 + .../flexible_servers_database_types_gen.go | 248 + ...lexible_servers_database_types_gen_test.go | 292 + ...lexible_servers_firewall_rule_types_gen.go | 248 + ...le_servers_firewall_rule_types_gen_test.go | 292 + .../storage/groupversion_info_gen.go | 32 + .../v1api20231230/storage/structure.txt | 297 + .../storage/zz_generated.deepcopy.go | 2210 +++++++ v2/api/dbformysql/v1api20231230/structure.txt | 374 ++ .../v1api20231230/zz_generated.deepcopy.go | 1942 ++++++ v2/api/dbformysql/versions_matrix.md | 174 +- .../controllers/controller_resources_gen.go | 48 +- v2/internal/reconcilers/mysql/connector.go | 2 +- 96 files changed, 37206 insertions(+), 997 deletions(-) create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/arm/structure.txt create mode 100644 v2/api/dbformysql/v1api20231230/doc.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_server_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_server_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/groupversion_info_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen_test.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/groupversion_info_gen.go create mode 100644 v2/api/dbformysql/v1api20231230/storage/structure.txt create mode 100644 v2/api/dbformysql/v1api20231230/storage/zz_generated.deepcopy.go create mode 100644 v2/api/dbformysql/v1api20231230/structure.txt create mode 100644 v2/api/dbformysql/v1api20231230/zz_generated.deepcopy.go diff --git a/docs/hugo/content/reference/_index.md b/docs/hugo/content/reference/_index.md index 61e46b1ed8..6a1c95d630 100644 --- a/docs/hugo/content/reference/_index.md +++ b/docs/hugo/content/reference/_index.md @@ -295,6 +295,18 @@ Azure Database for MySQL - Single Server is on the retirement path and is [sched Existing instances of *Single Server* can be migrated to *Azure Database for MySQL - Flexible Server* using the [Azure Database migration Service](https://azure.microsoft.com/en-us/products/database-migration). +### 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 | +|------------------------------|-------------|---------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| FlexibleServer | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml) | +| FlexibleServersAdministrator | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml) | +| FlexibleServersConfiguration | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml) | +| FlexibleServersDatabase | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml) | +| FlexibleServersFirewallRule | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.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. diff --git a/docs/hugo/content/reference/dbformysql/_index.md b/docs/hugo/content/reference/dbformysql/_index.md index e07302df77..f0cb02fb3e 100644 --- a/docs/hugo/content/reference/dbformysql/_index.md +++ b/docs/hugo/content/reference/dbformysql/_index.md @@ -9,6 +9,18 @@ Azure Database for MySQL - Single Server is on the retirement path and is [sched Existing instances of *Single Server* can be migrated to *Azure Database for MySQL - Flexible Server* using the [Azure Database migration Service](https://azure.microsoft.com/en-us/products/database-migration). +### 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 | +|------------------------------|-------------|---------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| FlexibleServer | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml) | +| FlexibleServersAdministrator | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml) | +| FlexibleServersConfiguration | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml) | +| FlexibleServersDatabase | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml) | +| FlexibleServersFirewallRule | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.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. diff --git a/v2/api/dbformysql/customizations/flexible_server_extension_types_gen.go b/v2/api/dbformysql/customizations/flexible_server_extension_types_gen.go index ca6a872bd8..27deabb803 100644 --- a/v2/api/dbformysql/customizations/flexible_server_extension_types_gen.go +++ b/v2/api/dbformysql/customizations/flexible_server_extension_types_gen.go @@ -8,6 +8,8 @@ import ( v20210501s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20210501/storage" v20230630 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -20,5 +22,7 @@ func (extension *FlexibleServerExtension) GetExtendedResources() []genruntime.Ku &v20210501.FlexibleServer{}, &v20210501s.FlexibleServer{}, &v20230630.FlexibleServer{}, - &v20230630s.FlexibleServer{}} + &v20230630s.FlexibleServer{}, + &v20231230.FlexibleServer{}, + &v20231230s.FlexibleServer{}} } diff --git a/v2/api/dbformysql/customizations/flexible_server_extensions.go b/v2/api/dbformysql/customizations/flexible_server_extensions.go index add02cda00..7f0b889321 100644 --- a/v2/api/dbformysql/customizations/flexible_server_extensions.go +++ b/v2/api/dbformysql/customizations/flexible_server_extensions.go @@ -15,7 +15,7 @@ import ( v1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/conversion" - mysql "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + mysql "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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/dbformysql/customizations/flexible_servers_administrator_extension_types_gen.go b/v2/api/dbformysql/customizations/flexible_servers_administrator_extension_types_gen.go index 65935edce8..f6c866e286 100644 --- a/v2/api/dbformysql/customizations/flexible_servers_administrator_extension_types_gen.go +++ b/v2/api/dbformysql/customizations/flexible_servers_administrator_extension_types_gen.go @@ -8,6 +8,8 @@ import ( v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" v20230630 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -20,5 +22,7 @@ func (extension *FlexibleServersAdministratorExtension) GetExtendedResources() [ &v20220101.FlexibleServersAdministrator{}, &v20220101s.FlexibleServersAdministrator{}, &v20230630.FlexibleServersAdministrator{}, - &v20230630s.FlexibleServersAdministrator{}} + &v20230630s.FlexibleServersAdministrator{}, + &v20231230.FlexibleServersAdministrator{}, + &v20231230s.FlexibleServersAdministrator{}} } diff --git a/v2/api/dbformysql/customizations/flexible_servers_configuration_extension_types_gen.go b/v2/api/dbformysql/customizations/flexible_servers_configuration_extension_types_gen.go index 4bfbf54da1..e652af0500 100644 --- a/v2/api/dbformysql/customizations/flexible_servers_configuration_extension_types_gen.go +++ b/v2/api/dbformysql/customizations/flexible_servers_configuration_extension_types_gen.go @@ -8,6 +8,8 @@ import ( v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" v20230630 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -20,5 +22,7 @@ func (extension *FlexibleServersConfigurationExtension) GetExtendedResources() [ &v20220101.FlexibleServersConfiguration{}, &v20220101s.FlexibleServersConfiguration{}, &v20230630.FlexibleServersConfiguration{}, - &v20230630s.FlexibleServersConfiguration{}} + &v20230630s.FlexibleServersConfiguration{}, + &v20231230.FlexibleServersConfiguration{}, + &v20231230s.FlexibleServersConfiguration{}} } diff --git a/v2/api/dbformysql/customizations/flexible_servers_configuration_extensions.go b/v2/api/dbformysql/customizations/flexible_servers_configuration_extensions.go index a66f267fb3..45fcfe76e6 100644 --- a/v2/api/dbformysql/customizations/flexible_servers_configuration_extensions.go +++ b/v2/api/dbformysql/customizations/flexible_servers_configuration_extensions.go @@ -8,7 +8,7 @@ package customizations import ( "context" - api "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" + api "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/extensions" ) diff --git a/v2/api/dbformysql/customizations/flexible_servers_database_extension_types_gen.go b/v2/api/dbformysql/customizations/flexible_servers_database_extension_types_gen.go index 5fdfc7dd9e..bddd04c176 100644 --- a/v2/api/dbformysql/customizations/flexible_servers_database_extension_types_gen.go +++ b/v2/api/dbformysql/customizations/flexible_servers_database_extension_types_gen.go @@ -8,6 +8,8 @@ import ( v20210501s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20210501/storage" v20230630 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -20,5 +22,7 @@ func (extension *FlexibleServersDatabaseExtension) GetExtendedResources() []genr &v20210501.FlexibleServersDatabase{}, &v20210501s.FlexibleServersDatabase{}, &v20230630.FlexibleServersDatabase{}, - &v20230630s.FlexibleServersDatabase{}} + &v20230630s.FlexibleServersDatabase{}, + &v20231230.FlexibleServersDatabase{}, + &v20231230s.FlexibleServersDatabase{}} } diff --git a/v2/api/dbformysql/customizations/flexible_servers_firewall_rule_extension_types_gen.go b/v2/api/dbformysql/customizations/flexible_servers_firewall_rule_extension_types_gen.go index 0273ac0181..080970ba1b 100644 --- a/v2/api/dbformysql/customizations/flexible_servers_firewall_rule_extension_types_gen.go +++ b/v2/api/dbformysql/customizations/flexible_servers_firewall_rule_extension_types_gen.go @@ -8,6 +8,8 @@ import ( v20210501s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20210501/storage" v20230630 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -20,5 +22,7 @@ func (extension *FlexibleServersFirewallRuleExtension) GetExtendedResources() [] &v20210501.FlexibleServersFirewallRule{}, &v20210501s.FlexibleServersFirewallRule{}, &v20230630.FlexibleServersFirewallRule{}, - &v20230630s.FlexibleServersFirewallRule{}} + &v20230630s.FlexibleServersFirewallRule{}, + &v20231230.FlexibleServersFirewallRule{}, + &v20231230s.FlexibleServersFirewallRule{}} } diff --git a/v2/api/dbformysql/v1api20210501/flexible_server_types_gen_test.go b/v2/api/dbformysql/v1api20210501/flexible_server_types_gen_test.go index 25628920f5..a7eb3497cf 100644 --- a/v2/api/dbformysql/v1api20210501/flexible_server_types_gen_test.go +++ b/v2/api/dbformysql/v1api20210501/flexible_server_types_gen_test.go @@ -6,7 +6,7 @@ package v1api20210501 import ( "encoding/json" v20210501s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20210501/storage" - v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -455,7 +455,7 @@ func RunResourceConversionTestForFlexibleServer(subject FlexibleServer) string { copied := subject.DeepCopy() // Convert to our hub version - var hub v20230630s.FlexibleServer + var hub v20231230s.FlexibleServer err := copied.ConvertTo(&hub) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20210501/flexible_servers_database_types_gen_test.go b/v2/api/dbformysql/v1api20210501/flexible_servers_database_types_gen_test.go index 9f99a3c580..97770f8696 100644 --- a/v2/api/dbformysql/v1api20210501/flexible_servers_database_types_gen_test.go +++ b/v2/api/dbformysql/v1api20210501/flexible_servers_database_types_gen_test.go @@ -6,7 +6,7 @@ package v1api20210501 import ( "encoding/json" v20210501s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20210501/storage" - v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -37,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersDatabase(subject FlexibleServers copied := subject.DeepCopy() // Convert to our hub version - var hub v20230630s.FlexibleServersDatabase + var hub v20231230s.FlexibleServersDatabase err := copied.ConvertTo(&hub) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20210501/flexible_servers_firewall_rule_types_gen_test.go b/v2/api/dbformysql/v1api20210501/flexible_servers_firewall_rule_types_gen_test.go index 1b842f253f..cb7cf1d686 100644 --- a/v2/api/dbformysql/v1api20210501/flexible_servers_firewall_rule_types_gen_test.go +++ b/v2/api/dbformysql/v1api20210501/flexible_servers_firewall_rule_types_gen_test.go @@ -6,7 +6,7 @@ package v1api20210501 import ( "encoding/json" v20210501s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20210501/storage" - v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -37,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersFirewallRule(subject FlexibleSer copied := subject.DeepCopy() // Convert to our hub version - var hub v20230630s.FlexibleServersFirewallRule + var hub v20231230s.FlexibleServersFirewallRule err := copied.ConvertTo(&hub) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen.go b/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen.go index 6e5097f386..7da85be049 100644 --- a/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen.go +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen.go @@ -5,7 +5,6 @@ package storage import ( "context" - "fmt" v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" "github.com/Azure/azure-service-operator/v2/internal/genericarmclient" @@ -56,22 +55,36 @@ var _ conversion.Convertible = &FlexibleServer{} // ConvertFrom populates our FlexibleServer from the provided hub FlexibleServer func (server *FlexibleServer) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*v20230630s.FlexibleServer) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServer but received %T instead", hub) + // intermediate variable for conversion + var source v20230630s.FlexibleServer + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = server.AssignProperties_From_FlexibleServer(&source) + if err != nil { + return eris.Wrap(err, "converting from source to server") } - return server.AssignProperties_From_FlexibleServer(source) + return nil } // ConvertTo populates the provided hub FlexibleServer from our FlexibleServer func (server *FlexibleServer) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*v20230630s.FlexibleServer) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServer but received %T instead", hub) + // intermediate variable for conversion + var destination v20230630s.FlexibleServer + err := server.AssignProperties_To_FlexibleServer(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from server") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return server.AssignProperties_To_FlexibleServer(destination) + return nil } var _ configmaps.Exporter = &FlexibleServer{} diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen_test.go b/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen_test.go index bd4967cfed..f7022a9b42 100644 --- a/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen_test.go +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_gen_test.go @@ -7,6 +7,7 @@ import ( "encoding/json" v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -455,7 +456,7 @@ func RunResourceConversionTestForFlexibleServer(subject FlexibleServer) string { copied := subject.DeepCopy() // Convert to our hub version - var hub v20230630s.FlexibleServer + var hub v20231230s.FlexibleServer err := copied.ConvertTo(&hub) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen.go b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen.go index 4e3b6c3430..0e14317066 100644 --- a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen.go +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen.go @@ -4,7 +4,6 @@ package storage import ( - "fmt" v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" @@ -51,22 +50,36 @@ var _ conversion.Convertible = &FlexibleServersDatabase{} // ConvertFrom populates our FlexibleServersDatabase from the provided hub FlexibleServersDatabase func (database *FlexibleServersDatabase) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*v20230630s.FlexibleServersDatabase) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersDatabase but received %T instead", hub) + // intermediate variable for conversion + var source v20230630s.FlexibleServersDatabase + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = database.AssignProperties_From_FlexibleServersDatabase(&source) + if err != nil { + return eris.Wrap(err, "converting from source to database") } - return database.AssignProperties_From_FlexibleServersDatabase(source) + return nil } // ConvertTo populates the provided hub FlexibleServersDatabase from our FlexibleServersDatabase func (database *FlexibleServersDatabase) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*v20230630s.FlexibleServersDatabase) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersDatabase but received %T instead", hub) + // intermediate variable for conversion + var destination v20230630s.FlexibleServersDatabase + err := database.AssignProperties_To_FlexibleServersDatabase(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from database") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return database.AssignProperties_To_FlexibleServersDatabase(destination) + return nil } var _ configmaps.Exporter = &FlexibleServersDatabase{} diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen_test.go b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen_test.go index 67f9037fbf..3f04b5331c 100644 --- a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen_test.go +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_database_types_gen_test.go @@ -5,7 +5,8 @@ package storage import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersDatabase(subject FlexibleServers copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersDatabase + var hub v20231230s.FlexibleServersDatabase err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabase(subject FlexibleServers copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabase + var other v20230630s.FlexibleServersDatabase err := copied.AssignProperties_To_FlexibleServersDatabase(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec(subject Fle copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabaseOperatorSpec + var other v20230630s.FlexibleServersDatabaseOperatorSpec err := copied.AssignProperties_To_FlexibleServersDatabaseOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS(subject Flexible copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabase_STATUS + var other v20230630s.FlexibleServersDatabase_STATUS err := copied.AssignProperties_To_FlexibleServersDatabase_STATUS(&other) if err != nil { return err.Error() @@ -400,7 +401,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabase_Spec(subject FlexibleSe copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabase_Spec + var other v20230630s.FlexibleServersDatabase_Spec err := copied.AssignProperties_To_FlexibleServersDatabase_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen.go b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen.go index f1ae3b8f1f..de718f6995 100644 --- a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen.go +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen.go @@ -4,7 +4,6 @@ package storage import ( - "fmt" v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" @@ -51,22 +50,36 @@ var _ conversion.Convertible = &FlexibleServersFirewallRule{} // ConvertFrom populates our FlexibleServersFirewallRule from the provided hub FlexibleServersFirewallRule func (rule *FlexibleServersFirewallRule) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*v20230630s.FlexibleServersFirewallRule) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersFirewallRule but received %T instead", hub) + // intermediate variable for conversion + var source v20230630s.FlexibleServersFirewallRule + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = rule.AssignProperties_From_FlexibleServersFirewallRule(&source) + if err != nil { + return eris.Wrap(err, "converting from source to rule") } - return rule.AssignProperties_From_FlexibleServersFirewallRule(source) + return nil } // ConvertTo populates the provided hub FlexibleServersFirewallRule from our FlexibleServersFirewallRule func (rule *FlexibleServersFirewallRule) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*v20230630s.FlexibleServersFirewallRule) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersFirewallRule but received %T instead", hub) + // intermediate variable for conversion + var destination v20230630s.FlexibleServersFirewallRule + err := rule.AssignProperties_To_FlexibleServersFirewallRule(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from rule") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return rule.AssignProperties_To_FlexibleServersFirewallRule(destination) + return nil } var _ configmaps.Exporter = &FlexibleServersFirewallRule{} diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen_test.go b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen_test.go index 8b15f3191e..aba92f16d0 100644 --- a/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen_test.go +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_servers_firewall_rule_types_gen_test.go @@ -5,7 +5,8 @@ package storage import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersFirewallRule(subject FlexibleSer copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersFirewallRule + var hub v20231230s.FlexibleServersFirewallRule err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRule(subject FlexibleSer copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRule + var other v20230630s.FlexibleServersFirewallRule err := copied.AssignProperties_To_FlexibleServersFirewallRule(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec(subject copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRuleOperatorSpec + var other v20230630s.FlexibleServersFirewallRuleOperatorSpec err := copied.AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS(subject Flex copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRule_STATUS + var other v20230630s.FlexibleServersFirewallRule_STATUS err := copied.AssignProperties_To_FlexibleServersFirewallRule_STATUS(&other) if err != nil { return err.Error() @@ -400,7 +401,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec(subject Flexib copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRule_Spec + var other v20230630s.FlexibleServersFirewallRule_Spec err := copied.AssignProperties_To_FlexibleServersFirewallRule_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20220101/flexible_servers_administrator_types_gen_test.go b/v2/api/dbformysql/v1api20220101/flexible_servers_administrator_types_gen_test.go index 0589e6dc7e..b82609f749 100644 --- a/v2/api/dbformysql/v1api20220101/flexible_servers_administrator_types_gen_test.go +++ b/v2/api/dbformysql/v1api20220101/flexible_servers_administrator_types_gen_test.go @@ -6,7 +6,7 @@ package v1api20220101 import ( "encoding/json" v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" - v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -37,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersAdministrator(subject FlexibleSe copied := subject.DeepCopy() // Convert to our hub version - var hub v20230630s.FlexibleServersAdministrator + var hub v20231230s.FlexibleServersAdministrator err := copied.ConvertTo(&hub) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20220101/flexible_servers_configuration_types_gen_test.go b/v2/api/dbformysql/v1api20220101/flexible_servers_configuration_types_gen_test.go index 9b67aec758..db32d2a0c5 100644 --- a/v2/api/dbformysql/v1api20220101/flexible_servers_configuration_types_gen_test.go +++ b/v2/api/dbformysql/v1api20220101/flexible_servers_configuration_types_gen_test.go @@ -6,7 +6,7 @@ package v1api20220101 import ( "encoding/json" v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" - v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -37,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersConfiguration(subject FlexibleSe copied := subject.DeepCopy() // Convert to our hub version - var hub v20230630s.FlexibleServersConfiguration + var hub v20231230s.FlexibleServersConfiguration err := copied.ConvertTo(&hub) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen.go b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen.go index b25bf8427f..7b92a415ac 100644 --- a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen.go +++ b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen.go @@ -4,7 +4,6 @@ package storage import ( - "fmt" storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" @@ -50,22 +49,36 @@ var _ conversion.Convertible = &FlexibleServersAdministrator{} // ConvertFrom populates our FlexibleServersAdministrator from the provided hub FlexibleServersAdministrator func (administrator *FlexibleServersAdministrator) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServersAdministrator) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersAdministrator but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServersAdministrator + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = administrator.AssignProperties_From_FlexibleServersAdministrator(&source) + if err != nil { + return eris.Wrap(err, "converting from source to administrator") } - return administrator.AssignProperties_From_FlexibleServersAdministrator(source) + return nil } // ConvertTo populates the provided hub FlexibleServersAdministrator from our FlexibleServersAdministrator func (administrator *FlexibleServersAdministrator) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServersAdministrator) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersAdministrator but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServersAdministrator + err := administrator.AssignProperties_To_FlexibleServersAdministrator(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from administrator") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return administrator.AssignProperties_To_FlexibleServersAdministrator(destination) + return nil } var _ configmaps.Exporter = &FlexibleServersAdministrator{} diff --git a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen_test.go b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen_test.go index cc156adac5..2fb00ee1bd 100644 --- a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen_test.go +++ b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_administrator_types_gen_test.go @@ -5,7 +5,8 @@ package storage import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersAdministrator(subject FlexibleSe copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersAdministrator + var hub v20231230s.FlexibleServersAdministrator err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministrator(subject FlexibleSe copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministrator + var other v20230630s.FlexibleServersAdministrator err := copied.AssignProperties_To_FlexibleServersAdministrator(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec(subjec copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministratorOperatorSpec + var other v20230630s.FlexibleServersAdministratorOperatorSpec err := copied.AssignProperties_To_FlexibleServersAdministratorOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS(subject Fle copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministrator_STATUS + var other v20230630s.FlexibleServersAdministrator_STATUS err := copied.AssignProperties_To_FlexibleServersAdministrator_STATUS(&other) if err != nil { return err.Error() @@ -403,7 +404,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec(subject Flexi copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministrator_Spec + var other v20230630s.FlexibleServersAdministrator_Spec err := copied.AssignProperties_To_FlexibleServersAdministrator_Spec(&other) if err != nil { return err.Error() @@ -524,7 +525,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 v20230630s.SystemData_STATUS err := copied.AssignProperties_To_SystemData_STATUS(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen.go b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen.go index f214c62b72..5a6c9260ea 100644 --- a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen.go +++ b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen.go @@ -4,7 +4,6 @@ package storage import ( - "fmt" storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" @@ -50,22 +49,36 @@ var _ conversion.Convertible = &FlexibleServersConfiguration{} // ConvertFrom populates our FlexibleServersConfiguration from the provided hub FlexibleServersConfiguration func (configuration *FlexibleServersConfiguration) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServersConfiguration) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersConfiguration but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServersConfiguration + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = configuration.AssignProperties_From_FlexibleServersConfiguration(&source) + if err != nil { + return eris.Wrap(err, "converting from source to configuration") } - return configuration.AssignProperties_From_FlexibleServersConfiguration(source) + return nil } // ConvertTo populates the provided hub FlexibleServersConfiguration from our FlexibleServersConfiguration func (configuration *FlexibleServersConfiguration) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServersConfiguration) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersConfiguration but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServersConfiguration + err := configuration.AssignProperties_To_FlexibleServersConfiguration(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from configuration") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return configuration.AssignProperties_To_FlexibleServersConfiguration(destination) + return nil } var _ configmaps.Exporter = &FlexibleServersConfiguration{} diff --git a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen_test.go b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen_test.go index 240f0e8271..ccf573d1aa 100644 --- a/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen_test.go +++ b/v2/api/dbformysql/v1api20220101/storage/flexible_servers_configuration_types_gen_test.go @@ -5,7 +5,8 @@ package storage import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersConfiguration(subject FlexibleSe copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersConfiguration + var hub v20231230s.FlexibleServersConfiguration err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfiguration(subject FlexibleSe copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfiguration + var other v20230630s.FlexibleServersConfiguration err := copied.AssignProperties_To_FlexibleServersConfiguration(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec(subjec copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfigurationOperatorSpec + var other v20230630s.FlexibleServersConfigurationOperatorSpec err := copied.AssignProperties_To_FlexibleServersConfigurationOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS(subject Fle copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfiguration_STATUS + var other v20230630s.FlexibleServersConfiguration_STATUS err := copied.AssignProperties_To_FlexibleServersConfiguration_STATUS(&other) if err != nil { return err.Error() @@ -409,7 +410,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec(subject Flexi copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfiguration_Spec + var other v20230630s.FlexibleServersConfiguration_Spec err := copied.AssignProperties_To_FlexibleServersConfiguration_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20230630/flexible_server_types_gen.go b/v2/api/dbformysql/v1api20230630/flexible_server_types_gen.go index 7267ea0b32..d3eb0be950 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_server_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/flexible_server_types_gen.go @@ -58,22 +58,36 @@ var _ conversion.Convertible = &FlexibleServer{} // ConvertFrom populates our FlexibleServer from the provided hub FlexibleServer func (server *FlexibleServer) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServer) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServer but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServer + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = server.AssignProperties_From_FlexibleServer(&source) + if err != nil { + return eris.Wrap(err, "converting from source to server") } - return server.AssignProperties_From_FlexibleServer(source) + return nil } // ConvertTo populates the provided hub FlexibleServer from our FlexibleServer func (server *FlexibleServer) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServer) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServer but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServer + err := server.AssignProperties_To_FlexibleServer(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from server") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return server.AssignProperties_To_FlexibleServer(destination) + return nil } // +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20230630-flexibleserver,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleservers,verbs=create;update,versions=v1api20230630,name=default.v1api20230630.flexibleservers.dbformysql.azure.com,admissionReviewVersions=v1 @@ -119,17 +133,6 @@ func (server *FlexibleServer) SecretDestinationExpressions() []*core.Destination return server.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &FlexibleServer{} - -// InitializeSpec initializes the spec for this resource from the given status -func (server *FlexibleServer) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*FlexibleServer_STATUS); ok { - return server.Spec.Initialize_From_FlexibleServer_STATUS(s) - } - - return fmt.Errorf("expected Status of type FlexibleServer_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesConfigExporter = &FlexibleServer{} // ExportKubernetesConfigMaps defines a resource which can create ConfigMaps in Kubernetes. @@ -1339,168 +1342,6 @@ func (server *FlexibleServer_Spec) AssignProperties_To_FlexibleServer_Spec(desti return nil } -// Initialize_From_FlexibleServer_STATUS populates our FlexibleServer_Spec from the provided source FlexibleServer_STATUS -func (server *FlexibleServer_Spec) Initialize_From_FlexibleServer_STATUS(source *FlexibleServer_STATUS) error { - - // AdministratorLogin - server.AdministratorLogin = genruntime.ClonePointerToString(source.AdministratorLogin) - - // AvailabilityZone - server.AvailabilityZone = genruntime.ClonePointerToString(source.AvailabilityZone) - - // Backup - if source.Backup != nil { - var backup Backup - err := backup.Initialize_From_Backup_STATUS(source.Backup) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_Backup_STATUS() to populate field Backup") - } - server.Backup = &backup - } else { - server.Backup = nil - } - - // CreateMode - if source.CreateMode != nil { - createMode := genruntime.ToEnum(string(*source.CreateMode), serverProperties_CreateMode_Values) - server.CreateMode = &createMode - } else { - server.CreateMode = nil - } - - // DataEncryption - if source.DataEncryption != nil { - var dataEncryption DataEncryption - err := dataEncryption.Initialize_From_DataEncryption_STATUS(source.DataEncryption) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_DataEncryption_STATUS() to populate field DataEncryption") - } - server.DataEncryption = &dataEncryption - } else { - server.DataEncryption = nil - } - - // HighAvailability - if source.HighAvailability != nil { - var highAvailability HighAvailability - err := highAvailability.Initialize_From_HighAvailability_STATUS(source.HighAvailability) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_HighAvailability_STATUS() to populate field HighAvailability") - } - server.HighAvailability = &highAvailability - } else { - server.HighAvailability = nil - } - - // Identity - if source.Identity != nil { - var identity MySQLServerIdentity - err := identity.Initialize_From_MySQLServerIdentity_STATUS(source.Identity) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_MySQLServerIdentity_STATUS() to populate field Identity") - } - server.Identity = &identity - } else { - server.Identity = nil - } - - // ImportSourceProperties - if source.ImportSourceProperties != nil { - var importSourceProperty ImportSourceProperties - err := importSourceProperty.Initialize_From_ImportSourceProperties_STATUS(source.ImportSourceProperties) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ImportSourceProperties_STATUS() to populate field ImportSourceProperties") - } - server.ImportSourceProperties = &importSourceProperty - } else { - server.ImportSourceProperties = nil - } - - // Location - server.Location = genruntime.ClonePointerToString(source.Location) - - // MaintenanceWindow - if source.MaintenanceWindow != nil { - var maintenanceWindow MaintenanceWindow - err := maintenanceWindow.Initialize_From_MaintenanceWindow_STATUS(source.MaintenanceWindow) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_MaintenanceWindow_STATUS() to populate field MaintenanceWindow") - } - server.MaintenanceWindow = &maintenanceWindow - } else { - server.MaintenanceWindow = nil - } - - // Network - if source.Network != nil { - var network Network - err := network.Initialize_From_Network_STATUS(source.Network) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_Network_STATUS() to populate field Network") - } - server.Network = &network - } else { - server.Network = nil - } - - // ReplicationRole - if source.ReplicationRole != nil { - replicationRole := genruntime.ToEnum(string(*source.ReplicationRole), replicationRole_Values) - server.ReplicationRole = &replicationRole - } else { - server.ReplicationRole = nil - } - - // RestorePointInTime - server.RestorePointInTime = genruntime.ClonePointerToString(source.RestorePointInTime) - - // Sku - if source.Sku != nil { - var sku MySQLServerSku - err := sku.Initialize_From_MySQLServerSku_STATUS(source.Sku) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_MySQLServerSku_STATUS() to populate field Sku") - } - server.Sku = &sku - } else { - server.Sku = nil - } - - // SourceServerResourceReference - if source.SourceServerResourceId != nil { - sourceServerResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.SourceServerResourceId) - server.SourceServerResourceReference = &sourceServerResourceReference - } else { - server.SourceServerResourceReference = nil - } - - // Storage - if source.Storage != nil { - var storage Storage - err := storage.Initialize_From_Storage_STATUS(source.Storage) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_Storage_STATUS() to populate field Storage") - } - server.Storage = &storage - } else { - server.Storage = nil - } - - // Tags - server.Tags = genruntime.CloneMapOfStringToString(source.Tags) - - // Version - if source.Version != nil { - version := genruntime.ToEnum(string(*source.Version), serverVersion_Values) - server.Version = &version - } else { - server.Version = nil - } - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (server *FlexibleServer_Spec) OriginalVersion() string { return GroupVersion.Version @@ -2487,24 +2328,6 @@ func (backup *Backup) AssignProperties_To_Backup(destination *storage.Backup) er return nil } -// Initialize_From_Backup_STATUS populates our Backup from the provided source Backup_STATUS -func (backup *Backup) Initialize_From_Backup_STATUS(source *Backup_STATUS) error { - - // BackupRetentionDays - backup.BackupRetentionDays = genruntime.ClonePointerToInt(source.BackupRetentionDays) - - // GeoRedundantBackup - if source.GeoRedundantBackup != nil { - geoRedundantBackup := genruntime.ToEnum(string(*source.GeoRedundantBackup), enableStatusEnum_Values) - backup.GeoRedundantBackup = &geoRedundantBackup - } else { - backup.GeoRedundantBackup = nil - } - - // No error - return nil -} - // Storage Profile properties of a server type Backup_STATUS struct { // BackupRetentionDays: Backup retention days for the server. @@ -2801,43 +2624,6 @@ func (encryption *DataEncryption) AssignProperties_To_DataEncryption(destination return nil } -// Initialize_From_DataEncryption_STATUS populates our DataEncryption from the provided source DataEncryption_STATUS -func (encryption *DataEncryption) Initialize_From_DataEncryption_STATUS(source *DataEncryption_STATUS) error { - - // GeoBackupKeyURI - encryption.GeoBackupKeyURI = genruntime.ClonePointerToString(source.GeoBackupKeyURI) - - // GeoBackupUserAssignedIdentityReference - if source.GeoBackupUserAssignedIdentityId != nil { - geoBackupUserAssignedIdentityReference := genruntime.CreateResourceReferenceFromARMID(*source.GeoBackupUserAssignedIdentityId) - encryption.GeoBackupUserAssignedIdentityReference = &geoBackupUserAssignedIdentityReference - } else { - encryption.GeoBackupUserAssignedIdentityReference = nil - } - - // PrimaryKeyURI - encryption.PrimaryKeyURI = genruntime.ClonePointerToString(source.PrimaryKeyURI) - - // PrimaryUserAssignedIdentityReference - if source.PrimaryUserAssignedIdentityId != nil { - primaryUserAssignedIdentityReference := genruntime.CreateResourceReferenceFromARMID(*source.PrimaryUserAssignedIdentityId) - encryption.PrimaryUserAssignedIdentityReference = &primaryUserAssignedIdentityReference - } else { - encryption.PrimaryUserAssignedIdentityReference = nil - } - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), dataEncryption_Type_Values) - encryption.Type = &typeVar - } else { - encryption.Type = nil - } - - // No error - return nil -} - // The date encryption for cmk. type DataEncryption_STATUS struct { // GeoBackupKeyURI: Geo backup key uri as key vault can't cross region, need cmk in same region as geo backup @@ -3239,24 +3025,6 @@ func (availability *HighAvailability) AssignProperties_To_HighAvailability(desti return nil } -// Initialize_From_HighAvailability_STATUS populates our HighAvailability from the provided source HighAvailability_STATUS -func (availability *HighAvailability) Initialize_From_HighAvailability_STATUS(source *HighAvailability_STATUS) error { - - // Mode - if source.Mode != nil { - mode := genruntime.ToEnum(string(*source.Mode), highAvailability_Mode_Values) - availability.Mode = &mode - } else { - availability.Mode = nil - } - - // StandbyAvailabilityZone - availability.StandbyAvailabilityZone = genruntime.ClonePointerToString(source.StandbyAvailabilityZone) - - // No error - return nil -} - // Network related properties of a server type HighAvailability_STATUS struct { // Mode: High availability mode for a server. @@ -3534,27 +3302,6 @@ func (properties *ImportSourceProperties) AssignProperties_To_ImportSourceProper return nil } -// Initialize_From_ImportSourceProperties_STATUS populates our ImportSourceProperties from the provided source ImportSourceProperties_STATUS -func (properties *ImportSourceProperties) Initialize_From_ImportSourceProperties_STATUS(source *ImportSourceProperties_STATUS) error { - - // DataDirPath - properties.DataDirPath = genruntime.ClonePointerToString(source.DataDirPath) - - // StorageType - if source.StorageType != nil { - storageType := genruntime.ToEnum(string(*source.StorageType), importSourceProperties_StorageType_Values) - properties.StorageType = &storageType - } else { - properties.StorageType = nil - } - - // StorageUrl - properties.StorageUrl = genruntime.ClonePointerToString(source.StorageUrl) - - // No error - return nil -} - // Import source related properties. type ImportSourceProperties_STATUS struct { // DataDirPath: Relative path of data directory in storage. @@ -3794,25 +3541,6 @@ func (window *MaintenanceWindow) AssignProperties_To_MaintenanceWindow(destinati return nil } -// Initialize_From_MaintenanceWindow_STATUS populates our MaintenanceWindow from the provided source MaintenanceWindow_STATUS -func (window *MaintenanceWindow) Initialize_From_MaintenanceWindow_STATUS(source *MaintenanceWindow_STATUS) error { - - // CustomWindow - window.CustomWindow = genruntime.ClonePointerToString(source.CustomWindow) - - // DayOfWeek - window.DayOfWeek = genruntime.ClonePointerToInt(source.DayOfWeek) - - // StartHour - window.StartHour = genruntime.ClonePointerToInt(source.StartHour) - - // StartMinute - window.StartMinute = genruntime.ClonePointerToInt(source.StartMinute) - - // No error - return nil -} - // Maintenance window of a server. type MaintenanceWindow_STATUS struct { // CustomWindow: indicates whether custom window is enabled or disabled @@ -4058,33 +3786,6 @@ func (identity *MySQLServerIdentity) AssignProperties_To_MySQLServerIdentity(des return nil } -// Initialize_From_MySQLServerIdentity_STATUS populates our MySQLServerIdentity from the provided source MySQLServerIdentity_STATUS -func (identity *MySQLServerIdentity) Initialize_From_MySQLServerIdentity_STATUS(source *MySQLServerIdentity_STATUS) error { - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), mySQLServerIdentity_Type_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 -} - // Properties to configure Identity for Bring your Own Keys type MySQLServerIdentity_STATUS struct { // PrincipalId: ObjectId from the KeyVault @@ -4336,24 +4037,6 @@ func (serverSku *MySQLServerSku) AssignProperties_To_MySQLServerSku(destination return nil } -// Initialize_From_MySQLServerSku_STATUS populates our MySQLServerSku from the provided source MySQLServerSku_STATUS -func (serverSku *MySQLServerSku) Initialize_From_MySQLServerSku_STATUS(source *MySQLServerSku_STATUS) error { - - // Name - serverSku.Name = genruntime.ClonePointerToString(source.Name) - - // Tier - if source.Tier != nil { - tier := genruntime.ToEnum(string(*source.Tier), mySQLServerSku_Tier_Values) - serverSku.Tier = &tier - } else { - serverSku.Tier = nil - } - - // No error - return nil -} - // Billing information related properties of a server. type MySQLServerSku_STATUS struct { // Name: The name of the sku, e.g. Standard_D32s_v3. @@ -4593,37 +4276,6 @@ func (network *Network) AssignProperties_To_Network(destination *storage.Network return nil } -// Initialize_From_Network_STATUS populates our Network from the provided source Network_STATUS -func (network *Network) Initialize_From_Network_STATUS(source *Network_STATUS) error { - - // DelegatedSubnetResourceReference - if source.DelegatedSubnetResourceId != nil { - delegatedSubnetResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.DelegatedSubnetResourceId) - network.DelegatedSubnetResourceReference = &delegatedSubnetResourceReference - } else { - network.DelegatedSubnetResourceReference = nil - } - - // PrivateDnsZoneResourceReference - if source.PrivateDnsZoneResourceId != nil { - privateDnsZoneResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.PrivateDnsZoneResourceId) - network.PrivateDnsZoneResourceReference = &privateDnsZoneResourceReference - } else { - network.PrivateDnsZoneResourceReference = nil - } - - // PublicNetworkAccess - if source.PublicNetworkAccess != nil { - publicNetworkAccess := genruntime.ToEnum(string(*source.PublicNetworkAccess), enableStatusEnum_Values) - network.PublicNetworkAccess = &publicNetworkAccess - } else { - network.PublicNetworkAccess = nil - } - - // No error - return nil -} - // Network related properties of a server type Network_STATUS struct { // DelegatedSubnetResourceId: Delegated subnet resource id used to setup vnet for a server. @@ -5110,43 +4762,6 @@ func (storage *Storage) AssignProperties_To_Storage(destination *storage.Storage return nil } -// Initialize_From_Storage_STATUS populates our Storage from the provided source Storage_STATUS -func (storage *Storage) Initialize_From_Storage_STATUS(source *Storage_STATUS) error { - - // AutoGrow - if source.AutoGrow != nil { - autoGrow := genruntime.ToEnum(string(*source.AutoGrow), enableStatusEnum_Values) - storage.AutoGrow = &autoGrow - } else { - storage.AutoGrow = nil - } - - // AutoIoScaling - if source.AutoIoScaling != nil { - autoIoScaling := genruntime.ToEnum(string(*source.AutoIoScaling), enableStatusEnum_Values) - storage.AutoIoScaling = &autoIoScaling - } else { - storage.AutoIoScaling = nil - } - - // Iops - storage.Iops = genruntime.ClonePointerToInt(source.Iops) - - // LogOnDisk - if source.LogOnDisk != nil { - logOnDisk := genruntime.ToEnum(string(*source.LogOnDisk), enableStatusEnum_Values) - storage.LogOnDisk = &logOnDisk - } else { - storage.LogOnDisk = nil - } - - // StorageSizeGB - storage.StorageSizeGB = genruntime.ClonePointerToInt(source.StorageSizeGB) - - // No error - return nil -} - // Storage Profile properties of a server type Storage_STATUS struct { // AutoGrow: Enable Storage Auto Grow or not. diff --git a/v2/api/dbformysql/v1api20230630/flexible_server_types_gen_test.go b/v2/api/dbformysql/v1api20230630/flexible_server_types_gen_test.go index 7fcc9f40ea..02e57cfee3 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_server_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/flexible_server_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20230630 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -35,7 +36,7 @@ func RunPropertyAssignmentTestForBackup(subject Backup) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Backup + var other v20230630s.Backup err := copied.AssignProperties_To_Backup(&other) if err != nil { return err.Error() @@ -138,7 +139,7 @@ func RunPropertyAssignmentTestForBackup_STATUS(subject Backup_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Backup_STATUS + var other v20230630s.Backup_STATUS err := copied.AssignProperties_To_Backup_STATUS(&other) if err != nil { return err.Error() @@ -242,7 +243,7 @@ func RunPropertyAssignmentTestForDataEncryption(subject DataEncryption) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.DataEncryption + var other v20230630s.DataEncryption err := copied.AssignProperties_To_DataEncryption(&other) if err != nil { return err.Error() @@ -346,7 +347,7 @@ func RunPropertyAssignmentTestForDataEncryption_STATUS(subject DataEncryption_ST copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.DataEncryption_STATUS + var other v20230630s.DataEncryption_STATUS err := copied.AssignProperties_To_DataEncryption_STATUS(&other) if err != nil { return err.Error() @@ -454,7 +455,7 @@ func RunResourceConversionTestForFlexibleServer(subject FlexibleServer) string { copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServer + var hub v20231230s.FlexibleServer err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -496,7 +497,7 @@ func RunPropertyAssignmentTestForFlexibleServer(subject FlexibleServer) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServer + var other v20230630s.FlexibleServer err := copied.AssignProperties_To_FlexibleServer(&other) if err != nil { return err.Error() @@ -599,7 +600,7 @@ func RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps(subject Flexib copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServerOperatorConfigMaps + var other v20230630s.FlexibleServerOperatorConfigMaps err := copied.AssignProperties_To_FlexibleServerOperatorConfigMaps(&other) if err != nil { return err.Error() @@ -696,7 +697,7 @@ func RunPropertyAssignmentTestForFlexibleServerOperatorSecrets(subject FlexibleS copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServerOperatorSecrets + var other v20230630s.FlexibleServerOperatorSecrets err := copied.AssignProperties_To_FlexibleServerOperatorSecrets(&other) if err != nil { return err.Error() @@ -793,7 +794,7 @@ func RunPropertyAssignmentTestForFlexibleServerOperatorSpec(subject FlexibleServ copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServerOperatorSpec + var other v20230630s.FlexibleServerOperatorSpec err := copied.AssignProperties_To_FlexibleServerOperatorSpec(&other) if err != nil { return err.Error() @@ -897,7 +898,7 @@ func RunPropertyAssignmentTestForFlexibleServer_STATUS(subject FlexibleServer_ST copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServer_STATUS + var other v20230630s.FlexibleServer_STATUS err := copied.AssignProperties_To_FlexibleServer_STATUS(&other) if err != nil { return err.Error() @@ -1051,7 +1052,7 @@ func RunPropertyAssignmentTestForFlexibleServer_Spec(subject FlexibleServer_Spec copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServer_Spec + var other v20230630s.FlexibleServer_Spec err := copied.AssignProperties_To_FlexibleServer_Spec(&other) if err != nil { return err.Error() @@ -1191,7 +1192,7 @@ func RunPropertyAssignmentTestForHighAvailability(subject HighAvailability) stri copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.HighAvailability + var other v20230630s.HighAvailability err := copied.AssignProperties_To_HighAvailability(&other) if err != nil { return err.Error() @@ -1294,7 +1295,7 @@ func RunPropertyAssignmentTestForHighAvailability_STATUS(subject HighAvailabilit copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.HighAvailability_STATUS + var other v20230630s.HighAvailability_STATUS err := copied.AssignProperties_To_HighAvailability_STATUS(&other) if err != nil { return err.Error() @@ -1404,7 +1405,7 @@ func RunPropertyAssignmentTestForImportSourceProperties(subject ImportSourceProp copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ImportSourceProperties + var other v20230630s.ImportSourceProperties err := copied.AssignProperties_To_ImportSourceProperties(&other) if err != nil { return err.Error() @@ -1509,7 +1510,7 @@ func RunPropertyAssignmentTestForImportSourceProperties_STATUS(subject ImportSou copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ImportSourceProperties_STATUS + var other v20230630s.ImportSourceProperties_STATUS err := copied.AssignProperties_To_ImportSourceProperties_STATUS(&other) if err != nil { return err.Error() @@ -1614,7 +1615,7 @@ func RunPropertyAssignmentTestForMaintenanceWindow(subject MaintenanceWindow) st copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.MaintenanceWindow + var other v20230630s.MaintenanceWindow err := copied.AssignProperties_To_MaintenanceWindow(&other) if err != nil { return err.Error() @@ -1719,7 +1720,7 @@ func RunPropertyAssignmentTestForMaintenanceWindow_STATUS(subject MaintenanceWin copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.MaintenanceWindow_STATUS + var other v20230630s.MaintenanceWindow_STATUS err := copied.AssignProperties_To_MaintenanceWindow_STATUS(&other) if err != nil { return err.Error() @@ -1825,7 +1826,7 @@ func RunPropertyAssignmentTestForMySQLServerIdentity(subject MySQLServerIdentity copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.MySQLServerIdentity + var other v20230630s.MySQLServerIdentity err := copied.AssignProperties_To_MySQLServerIdentity(&other) if err != nil { return err.Error() @@ -1942,7 +1943,7 @@ func RunPropertyAssignmentTestForMySQLServerIdentity_STATUS(subject MySQLServerI copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.MySQLServerIdentity_STATUS + var other v20230630s.MySQLServerIdentity_STATUS err := copied.AssignProperties_To_MySQLServerIdentity_STATUS(&other) if err != nil { return err.Error() @@ -2047,7 +2048,7 @@ func RunPropertyAssignmentTestForMySQLServerSku(subject MySQLServerSku) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.MySQLServerSku + var other v20230630s.MySQLServerSku err := copied.AssignProperties_To_MySQLServerSku(&other) if err != nil { return err.Error() @@ -2150,7 +2151,7 @@ func RunPropertyAssignmentTestForMySQLServerSku_STATUS(subject MySQLServerSku_ST copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.MySQLServerSku_STATUS + var other v20230630s.MySQLServerSku_STATUS err := copied.AssignProperties_To_MySQLServerSku_STATUS(&other) if err != nil { return err.Error() @@ -2254,7 +2255,7 @@ func RunPropertyAssignmentTestForNetwork(subject Network) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Network + var other v20230630s.Network err := copied.AssignProperties_To_Network(&other) if err != nil { return err.Error() @@ -2356,7 +2357,7 @@ func RunPropertyAssignmentTestForNetwork_STATUS(subject Network_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Network_STATUS + var other v20230630s.Network_STATUS err := copied.AssignProperties_To_Network_STATUS(&other) if err != nil { return err.Error() @@ -2460,7 +2461,7 @@ func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS(subject Privat copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.PrivateEndpointConnection_STATUS + var other v20230630s.PrivateEndpointConnection_STATUS err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS(&other) if err != nil { return err.Error() @@ -2563,7 +2564,7 @@ func RunPropertyAssignmentTestForStorage(subject Storage) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Storage + var other v20230630s.Storage err := copied.AssignProperties_To_Storage(&other) if err != nil { return err.Error() @@ -2669,7 +2670,7 @@ func RunPropertyAssignmentTestForStorage_STATUS(subject Storage_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Storage_STATUS + var other v20230630s.Storage_STATUS err := copied.AssignProperties_To_Storage_STATUS(&other) if err != nil { return err.Error() @@ -2776,7 +2777,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 v20230630s.SystemData_STATUS err := copied.AssignProperties_To_SystemData_STATUS(&other) if err != nil { return err.Error() @@ -2891,7 +2892,7 @@ func RunPropertyAssignmentTestForUserAssignedIdentityDetails(subject UserAssigne copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserAssignedIdentityDetails + var other v20230630s.UserAssignedIdentityDetails err := copied.AssignProperties_To_UserAssignedIdentityDetails(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen.go b/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen.go index f5ecd7f871..5fc194f0cb 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen.go @@ -53,22 +53,36 @@ var _ conversion.Convertible = &FlexibleServersAdministrator{} // ConvertFrom populates our FlexibleServersAdministrator from the provided hub FlexibleServersAdministrator func (administrator *FlexibleServersAdministrator) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServersAdministrator) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersAdministrator but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServersAdministrator + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = administrator.AssignProperties_From_FlexibleServersAdministrator(&source) + if err != nil { + return eris.Wrap(err, "converting from source to administrator") } - return administrator.AssignProperties_From_FlexibleServersAdministrator(source) + return nil } // ConvertTo populates the provided hub FlexibleServersAdministrator from our FlexibleServersAdministrator func (administrator *FlexibleServersAdministrator) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServersAdministrator) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersAdministrator but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServersAdministrator + err := administrator.AssignProperties_To_FlexibleServersAdministrator(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from administrator") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return administrator.AssignProperties_To_FlexibleServersAdministrator(destination) + return nil } // +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20230630-flexibleserversadministrator,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversadministrators,verbs=create;update,versions=v1api20230630,name=default.v1api20230630.flexibleserversadministrators.dbformysql.azure.com,admissionReviewVersions=v1 @@ -107,17 +121,6 @@ func (administrator *FlexibleServersAdministrator) SecretDestinationExpressions( return administrator.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &FlexibleServersAdministrator{} - -// InitializeSpec initializes the spec for this resource from the given status -func (administrator *FlexibleServersAdministrator) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*FlexibleServersAdministrator_STATUS); ok { - return administrator.Spec.Initialize_From_FlexibleServersAdministrator_STATUS(s) - } - - return fmt.Errorf("expected Status of type FlexibleServersAdministrator_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &FlexibleServersAdministrator{} // AzureName returns the Azure name of the resource (always "ActiveDirectory") @@ -746,38 +749,6 @@ func (administrator *FlexibleServersAdministrator_Spec) AssignProperties_To_Flex return nil } -// Initialize_From_FlexibleServersAdministrator_STATUS populates our FlexibleServersAdministrator_Spec from the provided source FlexibleServersAdministrator_STATUS -func (administrator *FlexibleServersAdministrator_Spec) Initialize_From_FlexibleServersAdministrator_STATUS(source *FlexibleServersAdministrator_STATUS) error { - - // AdministratorType - if source.AdministratorType != nil { - administratorType := genruntime.ToEnum(string(*source.AdministratorType), administratorProperties_AdministratorType_Values) - administrator.AdministratorType = &administratorType - } else { - administrator.AdministratorType = nil - } - - // IdentityResourceReference - if source.IdentityResourceId != nil { - identityResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.IdentityResourceId) - administrator.IdentityResourceReference = &identityResourceReference - } else { - administrator.IdentityResourceReference = nil - } - - // Login - administrator.Login = genruntime.ClonePointerToString(source.Login) - - // Sid - administrator.Sid = genruntime.ClonePointerToString(source.Sid) - - // TenantId - administrator.TenantId = genruntime.ClonePointerToString(source.TenantId) - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (administrator *FlexibleServersAdministrator_Spec) OriginalVersion() string { return GroupVersion.Version diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen_test.go b/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen_test.go index 8187f66682..4040daee06 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_administrator_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20230630 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersAdministrator(subject FlexibleSe copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersAdministrator + var hub v20231230s.FlexibleServersAdministrator err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministrator(subject FlexibleSe copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministrator + var other v20230630s.FlexibleServersAdministrator err := copied.AssignProperties_To_FlexibleServersAdministrator(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec(subjec copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministratorOperatorSpec + var other v20230630s.FlexibleServersAdministratorOperatorSpec err := copied.AssignProperties_To_FlexibleServersAdministratorOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS(subject Fle copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministrator_STATUS + var other v20230630s.FlexibleServersAdministrator_STATUS err := copied.AssignProperties_To_FlexibleServersAdministrator_STATUS(&other) if err != nil { return err.Error() @@ -403,7 +404,7 @@ func RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec(subject Flexi copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersAdministrator_Spec + var other v20230630s.FlexibleServersAdministrator_Spec err := copied.AssignProperties_To_FlexibleServersAdministrator_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen.go b/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen.go index 6167460445..0f653d28fc 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen.go @@ -53,22 +53,36 @@ var _ conversion.Convertible = &FlexibleServersConfiguration{} // ConvertFrom populates our FlexibleServersConfiguration from the provided hub FlexibleServersConfiguration func (configuration *FlexibleServersConfiguration) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServersConfiguration) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersConfiguration but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServersConfiguration + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") } - return configuration.AssignProperties_From_FlexibleServersConfiguration(source) + err = configuration.AssignProperties_From_FlexibleServersConfiguration(&source) + if err != nil { + return eris.Wrap(err, "converting from source to configuration") + } + + return nil } // ConvertTo populates the provided hub FlexibleServersConfiguration from our FlexibleServersConfiguration func (configuration *FlexibleServersConfiguration) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServersConfiguration) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersConfiguration but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServersConfiguration + err := configuration.AssignProperties_To_FlexibleServersConfiguration(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from configuration") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return configuration.AssignProperties_To_FlexibleServersConfiguration(destination) + return nil } // +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20230630-flexibleserversconfiguration,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversconfigurations,verbs=create;update,versions=v1api20230630,name=default.v1api20230630.flexibleserversconfigurations.dbformysql.azure.com,admissionReviewVersions=v1 @@ -114,17 +128,6 @@ func (configuration *FlexibleServersConfiguration) SecretDestinationExpressions( return configuration.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &FlexibleServersConfiguration{} - -// InitializeSpec initializes the spec for this resource from the given status -func (configuration *FlexibleServersConfiguration) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*FlexibleServersConfiguration_STATUS); ok { - return configuration.Spec.Initialize_From_FlexibleServersConfiguration_STATUS(s) - } - - return fmt.Errorf("expected Status of type FlexibleServersConfiguration_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &FlexibleServersConfiguration{} // AzureName returns the Azure name of the resource @@ -640,27 +643,6 @@ func (configuration *FlexibleServersConfiguration_Spec) AssignProperties_To_Flex return nil } -// Initialize_From_FlexibleServersConfiguration_STATUS populates our FlexibleServersConfiguration_Spec from the provided source FlexibleServersConfiguration_STATUS -func (configuration *FlexibleServersConfiguration_Spec) Initialize_From_FlexibleServersConfiguration_STATUS(source *FlexibleServersConfiguration_STATUS) error { - - // CurrentValue - configuration.CurrentValue = genruntime.ClonePointerToString(source.CurrentValue) - - // Source - if source.Source != nil { - sourceAsConfigurationProperties_Source := genruntime.ToEnum(string(*source.Source), configurationProperties_Source_Values) - configuration.Source = &sourceAsConfigurationProperties_Source - } else { - configuration.Source = nil - } - - // Value - configuration.Value = genruntime.ClonePointerToString(source.Value) - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (configuration *FlexibleServersConfiguration_Spec) OriginalVersion() string { return GroupVersion.Version diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen_test.go b/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen_test.go index 36d232b70c..e412c46b46 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_configuration_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20230630 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersConfiguration(subject FlexibleSe copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersConfiguration + var hub v20231230s.FlexibleServersConfiguration err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfiguration(subject FlexibleSe copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfiguration + var other v20230630s.FlexibleServersConfiguration err := copied.AssignProperties_To_FlexibleServersConfiguration(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec(subjec copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfigurationOperatorSpec + var other v20230630s.FlexibleServersConfigurationOperatorSpec err := copied.AssignProperties_To_FlexibleServersConfigurationOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS(subject Fle copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfiguration_STATUS + var other v20230630s.FlexibleServersConfiguration_STATUS err := copied.AssignProperties_To_FlexibleServersConfiguration_STATUS(&other) if err != nil { return err.Error() @@ -409,7 +410,7 @@ func RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec(subject Flexi copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersConfiguration_Spec + var other v20230630s.FlexibleServersConfiguration_Spec err := copied.AssignProperties_To_FlexibleServersConfiguration_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen.go b/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen.go index d92af173d5..b4ce3d251b 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen.go @@ -53,22 +53,36 @@ var _ conversion.Convertible = &FlexibleServersDatabase{} // ConvertFrom populates our FlexibleServersDatabase from the provided hub FlexibleServersDatabase func (database *FlexibleServersDatabase) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServersDatabase) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersDatabase but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServersDatabase + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") } - return database.AssignProperties_From_FlexibleServersDatabase(source) + err = database.AssignProperties_From_FlexibleServersDatabase(&source) + if err != nil { + return eris.Wrap(err, "converting from source to database") + } + + return nil } // ConvertTo populates the provided hub FlexibleServersDatabase from our FlexibleServersDatabase func (database *FlexibleServersDatabase) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServersDatabase) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersDatabase but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServersDatabase + err := database.AssignProperties_To_FlexibleServersDatabase(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from database") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return database.AssignProperties_To_FlexibleServersDatabase(destination) + return nil } // +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20230630-flexibleserversdatabase,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversdatabases,verbs=create;update,versions=v1api20230630,name=default.v1api20230630.flexibleserversdatabases.dbformysql.azure.com,admissionReviewVersions=v1 @@ -114,17 +128,6 @@ func (database *FlexibleServersDatabase) SecretDestinationExpressions() []*core. return database.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &FlexibleServersDatabase{} - -// InitializeSpec initializes the spec for this resource from the given status -func (database *FlexibleServersDatabase) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*FlexibleServersDatabase_STATUS); ok { - return database.Spec.Initialize_From_FlexibleServersDatabase_STATUS(s) - } - - return fmt.Errorf("expected Status of type FlexibleServersDatabase_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &FlexibleServersDatabase{} // AzureName returns the Azure name of the resource @@ -602,19 +605,6 @@ func (database *FlexibleServersDatabase_Spec) AssignProperties_To_FlexibleServer return nil } -// Initialize_From_FlexibleServersDatabase_STATUS populates our FlexibleServersDatabase_Spec from the provided source FlexibleServersDatabase_STATUS -func (database *FlexibleServersDatabase_Spec) Initialize_From_FlexibleServersDatabase_STATUS(source *FlexibleServersDatabase_STATUS) error { - - // Charset - database.Charset = genruntime.ClonePointerToString(source.Charset) - - // Collation - database.Collation = genruntime.ClonePointerToString(source.Collation) - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (database *FlexibleServersDatabase_Spec) OriginalVersion() string { return GroupVersion.Version diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen_test.go b/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen_test.go index d4a167a54a..3388acad60 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_database_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20230630 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersDatabase(subject FlexibleServers copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersDatabase + var hub v20231230s.FlexibleServersDatabase err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabase(subject FlexibleServers copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabase + var other v20230630s.FlexibleServersDatabase err := copied.AssignProperties_To_FlexibleServersDatabase(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec(subject Fle copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabaseOperatorSpec + var other v20230630s.FlexibleServersDatabaseOperatorSpec err := copied.AssignProperties_To_FlexibleServersDatabaseOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS(subject Flexible copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabase_STATUS + var other v20230630s.FlexibleServersDatabase_STATUS err := copied.AssignProperties_To_FlexibleServersDatabase_STATUS(&other) if err != nil { return err.Error() @@ -400,7 +401,7 @@ func RunPropertyAssignmentTestForFlexibleServersDatabase_Spec(subject FlexibleSe copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersDatabase_Spec + var other v20230630s.FlexibleServersDatabase_Spec err := copied.AssignProperties_To_FlexibleServersDatabase_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen.go b/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen.go index 008c74a07c..bd9c74bbd5 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen.go @@ -53,22 +53,36 @@ var _ conversion.Convertible = &FlexibleServersFirewallRule{} // ConvertFrom populates our FlexibleServersFirewallRule from the provided hub FlexibleServersFirewallRule func (rule *FlexibleServersFirewallRule) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.FlexibleServersFirewallRule) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersFirewallRule but received %T instead", hub) + // intermediate variable for conversion + var source storage.FlexibleServersFirewallRule + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = rule.AssignProperties_From_FlexibleServersFirewallRule(&source) + if err != nil { + return eris.Wrap(err, "converting from source to rule") } - return rule.AssignProperties_From_FlexibleServersFirewallRule(source) + return nil } // ConvertTo populates the provided hub FlexibleServersFirewallRule from our FlexibleServersFirewallRule func (rule *FlexibleServersFirewallRule) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.FlexibleServersFirewallRule) - if !ok { - return fmt.Errorf("expected dbformysql/v1api20230630/storage/FlexibleServersFirewallRule but received %T instead", hub) + // intermediate variable for conversion + var destination storage.FlexibleServersFirewallRule + err := rule.AssignProperties_To_FlexibleServersFirewallRule(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from rule") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return rule.AssignProperties_To_FlexibleServersFirewallRule(destination) + return nil } // +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20230630-flexibleserversfirewallrule,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversfirewallrules,verbs=create;update,versions=v1api20230630,name=default.v1api20230630.flexibleserversfirewallrules.dbformysql.azure.com,admissionReviewVersions=v1 @@ -114,17 +128,6 @@ func (rule *FlexibleServersFirewallRule) SecretDestinationExpressions() []*core. return rule.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &FlexibleServersFirewallRule{} - -// InitializeSpec initializes the spec for this resource from the given status -func (rule *FlexibleServersFirewallRule) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*FlexibleServersFirewallRule_STATUS); ok { - return rule.Spec.Initialize_From_FlexibleServersFirewallRule_STATUS(s) - } - - return fmt.Errorf("expected Status of type FlexibleServersFirewallRule_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &FlexibleServersFirewallRule{} // AzureName returns the Azure name of the resource @@ -626,29 +629,6 @@ func (rule *FlexibleServersFirewallRule_Spec) AssignProperties_To_FlexibleServer return nil } -// Initialize_From_FlexibleServersFirewallRule_STATUS populates our FlexibleServersFirewallRule_Spec from the provided source FlexibleServersFirewallRule_STATUS -func (rule *FlexibleServersFirewallRule_Spec) Initialize_From_FlexibleServersFirewallRule_STATUS(source *FlexibleServersFirewallRule_STATUS) error { - - // EndIpAddress - if source.EndIpAddress != nil { - endIpAddress := *source.EndIpAddress - rule.EndIpAddress = &endIpAddress - } else { - rule.EndIpAddress = nil - } - - // StartIpAddress - if source.StartIpAddress != nil { - startIpAddress := *source.StartIpAddress - rule.StartIpAddress = &startIpAddress - } else { - rule.StartIpAddress = nil - } - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (rule *FlexibleServersFirewallRule_Spec) OriginalVersion() string { return GroupVersion.Version diff --git a/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen_test.go b/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen_test.go index 9b1cab3d4d..a0426ece97 100644 --- a/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/flexible_servers_firewall_rule_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20230630 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForFlexibleServersFirewallRule(subject FlexibleSer copied := subject.DeepCopy() // Convert to our hub version - var hub storage.FlexibleServersFirewallRule + var hub v20231230s.FlexibleServersFirewallRule err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRule(subject FlexibleSer copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRule + var other v20230630s.FlexibleServersFirewallRule err := copied.AssignProperties_To_FlexibleServersFirewallRule(&other) if err != nil { return err.Error() @@ -182,7 +183,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec(subject copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRuleOperatorSpec + var other v20230630s.FlexibleServersFirewallRuleOperatorSpec err := copied.AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(&other) if err != nil { return err.Error() @@ -279,7 +280,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS(subject Flex copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRule_STATUS + var other v20230630s.FlexibleServersFirewallRule_STATUS err := copied.AssignProperties_To_FlexibleServersFirewallRule_STATUS(&other) if err != nil { return err.Error() @@ -400,7 +401,7 @@ func RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec(subject Flexib copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.FlexibleServersFirewallRule_Spec + var other v20230630s.FlexibleServersFirewallRule_Spec err := copied.AssignProperties_To_FlexibleServersFirewallRule_Spec(&other) if err != nil { return err.Error() diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen.go b/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen.go index af1452a972..061f1c1de1 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen.go @@ -5,6 +5,8 @@ package storage import ( "context" + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/internal/genericarmclient" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" @@ -17,14 +19,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/conversion" ) -// +kubebuilder:rbac:groups=dbformysql.azure.com,resources=flexibleservers,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleservers/status,flexibleservers/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" @@ -52,6 +51,28 @@ func (server *FlexibleServer) SetConditions(conditions conditions.Conditions) { server.Status.Conditions = conditions } +var _ conversion.Convertible = &FlexibleServer{} + +// ConvertFrom populates our FlexibleServer from the provided hub FlexibleServer +func (server *FlexibleServer) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServer) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServer but received %T instead", hub) + } + + return server.AssignProperties_From_FlexibleServer(source) +} + +// ConvertTo populates the provided hub FlexibleServer from our FlexibleServer +func (server *FlexibleServer) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServer) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServer but received %T instead", hub) + } + + return server.AssignProperties_To_FlexibleServer(destination) +} + var _ configmaps.Exporter = &FlexibleServer{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -169,8 +190,75 @@ func (server *FlexibleServer) SetStatus(status genruntime.ConvertibleStatus) err return nil } -// Hub marks that this FlexibleServer is the hub type for conversion -func (server *FlexibleServer) Hub() {} +// AssignProperties_From_FlexibleServer populates our FlexibleServer from the provided source FlexibleServer +func (server *FlexibleServer) AssignProperties_From_FlexibleServer(source *storage.FlexibleServer) error { + + // ObjectMeta + server.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServer_Spec + err := spec.AssignProperties_From_FlexibleServer_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServer_Spec() to populate field Spec") + } + server.Spec = spec + + // Status + var status FlexibleServer_STATUS + err = status.AssignProperties_From_FlexibleServer_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServer_STATUS() to populate field Status") + } + server.Status = status + + // Invoke the augmentConversionForFlexibleServer interface (if implemented) to customize the conversion + var serverAsAny any = server + if augmentedServer, ok := serverAsAny.(augmentConversionForFlexibleServer); ok { + err := augmentedServer.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServer populates the provided destination FlexibleServer from our FlexibleServer +func (server *FlexibleServer) AssignProperties_To_FlexibleServer(destination *storage.FlexibleServer) error { + + // ObjectMeta + destination.ObjectMeta = *server.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServer_Spec + err := server.Spec.AssignProperties_To_FlexibleServer_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServer_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServer_STATUS + err = server.Status.AssignProperties_To_FlexibleServer_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServer_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForFlexibleServer interface (if implemented) to customize the conversion + var serverAsAny any = server + if augmentedServer, ok := serverAsAny.(augmentConversionForFlexibleServer); ok { + err := augmentedServer.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 (server *FlexibleServer) OriginalGVK() *schema.GroupVersionKind { @@ -198,6 +286,11 @@ type APIVersion string const APIVersion_Value = APIVersion("2023-06-30") +type augmentConversionForFlexibleServer interface { + AssignPropertiesFrom(src *storage.FlexibleServer) error + AssignPropertiesTo(dst *storage.FlexibleServer) error +} + // Storage version of v1api20230630.FlexibleServer_Spec type FlexibleServer_Spec struct { AdministratorLogin *string `json:"administratorLogin,omitempty"` @@ -240,20 +333,448 @@ var _ genruntime.ConvertibleSpec = &FlexibleServer_Spec{} // ConvertSpecFrom populates our FlexibleServer_Spec from the provided source func (server *FlexibleServer_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == server { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.FlexibleServer_Spec) + if ok { + // Populate our instance from source + return server.AssignProperties_From_FlexibleServer_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServer_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(server) + // Update our instance from src + err = server.AssignProperties_From_FlexibleServer_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our FlexibleServer_Spec func (server *FlexibleServer_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == server { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.FlexibleServer_Spec) + if ok { + // Populate destination from our instance + return server.AssignProperties_To_FlexibleServer_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServer_Spec{} + err := server.AssignProperties_To_FlexibleServer_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_FlexibleServer_Spec populates our FlexibleServer_Spec from the provided source FlexibleServer_Spec +func (server *FlexibleServer_Spec) AssignProperties_From_FlexibleServer_Spec(source *storage.FlexibleServer_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AdministratorLogin + server.AdministratorLogin = genruntime.ClonePointerToString(source.AdministratorLogin) + + // AdministratorLoginPassword + if source.AdministratorLoginPassword != nil { + administratorLoginPassword := source.AdministratorLoginPassword.Copy() + server.AdministratorLoginPassword = &administratorLoginPassword + } else { + server.AdministratorLoginPassword = nil + } + + // AvailabilityZone + server.AvailabilityZone = genruntime.ClonePointerToString(source.AvailabilityZone) + + // AzureName + server.AzureName = source.AzureName + + // Backup + if source.Backup != nil { + var backup Backup + err := backup.AssignProperties_From_Backup(source.Backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Backup() to populate field Backup") + } + server.Backup = &backup + } else { + server.Backup = nil + } + + // CreateMode + server.CreateMode = genruntime.ClonePointerToString(source.CreateMode) + + // DataEncryption + if source.DataEncryption != nil { + var dataEncryption DataEncryption + err := dataEncryption.AssignProperties_From_DataEncryption(source.DataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_DataEncryption() to populate field DataEncryption") + } + server.DataEncryption = &dataEncryption + } else { + server.DataEncryption = nil + } + + // HighAvailability + if source.HighAvailability != nil { + var highAvailability HighAvailability + err := highAvailability.AssignProperties_From_HighAvailability(source.HighAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_HighAvailability() to populate field HighAvailability") + } + server.HighAvailability = &highAvailability + } else { + server.HighAvailability = nil + } + + // Identity + if source.Identity != nil { + var identity MySQLServerIdentity + err := identity.AssignProperties_From_MySQLServerIdentity(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerIdentity() to populate field Identity") + } + server.Identity = &identity + } else { + server.Identity = nil + } + + // ImportSourceProperties + if source.ImportSourceProperties != nil { + var importSourceProperty ImportSourceProperties + err := importSourceProperty.AssignProperties_From_ImportSourceProperties(source.ImportSourceProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ImportSourceProperties() to populate field ImportSourceProperties") + } + server.ImportSourceProperties = &importSourceProperty + } else { + server.ImportSourceProperties = nil + } + + // Location + server.Location = genruntime.ClonePointerToString(source.Location) + + // MaintenanceWindow + if source.MaintenanceWindow != nil { + var maintenanceWindow MaintenanceWindow + err := maintenanceWindow.AssignProperties_From_MaintenanceWindow(source.MaintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MaintenanceWindow() to populate field MaintenanceWindow") + } + server.MaintenanceWindow = &maintenanceWindow + } else { + server.MaintenanceWindow = nil + } + + // Network + if source.Network != nil { + var network Network + err := network.AssignProperties_From_Network(source.Network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Network() to populate field Network") + } + server.Network = &network + } else { + server.Network = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServerOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServerOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServerOperatorSpec() to populate field OperatorSpec") + } + server.OperatorSpec = &operatorSpec + } else { + server.OperatorSpec = nil + } + + // OriginalVersion + server.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + server.Owner = &owner + } else { + server.Owner = nil + } + + // ReplicationRole + server.ReplicationRole = genruntime.ClonePointerToString(source.ReplicationRole) + + // RestorePointInTime + server.RestorePointInTime = genruntime.ClonePointerToString(source.RestorePointInTime) + + // Sku + if source.Sku != nil { + var sku MySQLServerSku + err := sku.AssignProperties_From_MySQLServerSku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerSku() to populate field Sku") + } + server.Sku = &sku + } else { + server.Sku = nil + } + + // SourceServerResourceReference + if source.SourceServerResourceReference != nil { + sourceServerResourceReference := source.SourceServerResourceReference.Copy() + server.SourceServerResourceReference = &sourceServerResourceReference + } else { + server.SourceServerResourceReference = nil + } + + // Storage + if source.Storage != nil { + var storage Storage + err := storage.AssignProperties_From_Storage(source.Storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Storage() to populate field Storage") + } + server.Storage = &storage + } else { + server.Storage = nil + } + + // Tags + server.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Version + server.Version = genruntime.ClonePointerToString(source.Version) + + // Update the property bag + if len(propertyBag) > 0 { + server.PropertyBag = propertyBag + } else { + server.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServer_Spec interface (if implemented) to customize the conversion + var serverAsAny any = server + if augmentedServer, ok := serverAsAny.(augmentConversionForFlexibleServer_Spec); ok { + err := augmentedServer.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServer_Spec populates the provided destination FlexibleServer_Spec from our FlexibleServer_Spec +func (server *FlexibleServer_Spec) AssignProperties_To_FlexibleServer_Spec(destination *storage.FlexibleServer_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(server.PropertyBag) + + // AdministratorLogin + destination.AdministratorLogin = genruntime.ClonePointerToString(server.AdministratorLogin) + + // AdministratorLoginPassword + if server.AdministratorLoginPassword != nil { + administratorLoginPassword := server.AdministratorLoginPassword.Copy() + destination.AdministratorLoginPassword = &administratorLoginPassword + } else { + destination.AdministratorLoginPassword = nil + } + + // AvailabilityZone + destination.AvailabilityZone = genruntime.ClonePointerToString(server.AvailabilityZone) + + // AzureName + destination.AzureName = server.AzureName + + // Backup + if server.Backup != nil { + var backup storage.Backup + err := server.Backup.AssignProperties_To_Backup(&backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Backup() to populate field Backup") + } + destination.Backup = &backup + } else { + destination.Backup = nil + } + + // CreateMode + destination.CreateMode = genruntime.ClonePointerToString(server.CreateMode) + + // DataEncryption + if server.DataEncryption != nil { + var dataEncryption storage.DataEncryption + err := server.DataEncryption.AssignProperties_To_DataEncryption(&dataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_DataEncryption() to populate field DataEncryption") + } + destination.DataEncryption = &dataEncryption + } else { + destination.DataEncryption = nil + } + + // HighAvailability + if server.HighAvailability != nil { + var highAvailability storage.HighAvailability + err := server.HighAvailability.AssignProperties_To_HighAvailability(&highAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_HighAvailability() to populate field HighAvailability") + } + destination.HighAvailability = &highAvailability + } else { + destination.HighAvailability = nil + } + + // Identity + if server.Identity != nil { + var identity storage.MySQLServerIdentity + err := server.Identity.AssignProperties_To_MySQLServerIdentity(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerIdentity() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // ImportSourceProperties + if server.ImportSourceProperties != nil { + var importSourceProperty storage.ImportSourceProperties + err := server.ImportSourceProperties.AssignProperties_To_ImportSourceProperties(&importSourceProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ImportSourceProperties() to populate field ImportSourceProperties") + } + destination.ImportSourceProperties = &importSourceProperty + } else { + destination.ImportSourceProperties = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(server.Location) + + // MaintenanceWindow + if server.MaintenanceWindow != nil { + var maintenanceWindow storage.MaintenanceWindow + err := server.MaintenanceWindow.AssignProperties_To_MaintenanceWindow(&maintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MaintenanceWindow() to populate field MaintenanceWindow") + } + destination.MaintenanceWindow = &maintenanceWindow + } else { + destination.MaintenanceWindow = nil + } + + // Network + if server.Network != nil { + var network storage.Network + err := server.Network.AssignProperties_To_Network(&network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Network() to populate field Network") + } + destination.Network = &network + } else { + destination.Network = nil + } + + // OperatorSpec + if server.OperatorSpec != nil { + var operatorSpec storage.FlexibleServerOperatorSpec + err := server.OperatorSpec.AssignProperties_To_FlexibleServerOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServerOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = server.OriginalVersion + + // Owner + if server.Owner != nil { + owner := server.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // ReplicationRole + destination.ReplicationRole = genruntime.ClonePointerToString(server.ReplicationRole) + + // RestorePointInTime + destination.RestorePointInTime = genruntime.ClonePointerToString(server.RestorePointInTime) + + // Sku + if server.Sku != nil { + var sku storage.MySQLServerSku + err := server.Sku.AssignProperties_To_MySQLServerSku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerSku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SourceServerResourceReference + if server.SourceServerResourceReference != nil { + sourceServerResourceReference := server.SourceServerResourceReference.Copy() + destination.SourceServerResourceReference = &sourceServerResourceReference + } else { + destination.SourceServerResourceReference = nil + } + + // Storage + if server.Storage != nil { + var storage storage.Storage + err := server.Storage.AssignProperties_To_Storage(&storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Storage() to populate field Storage") + } + destination.Storage = &storage + } else { + destination.Storage = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(server.Tags) + + // Version + destination.Version = genruntime.ClonePointerToString(server.Version) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServer_Spec interface (if implemented) to customize the conversion + var serverAsAny any = server + if augmentedServer, ok := serverAsAny.(augmentConversionForFlexibleServer_Spec); ok { + err := augmentedServer.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } } - return destination.ConvertSpecFrom(server) + // No error + return nil } // Storage version of v1api20230630.FlexibleServer_STATUS @@ -292,111 +813,1375 @@ var _ genruntime.ConvertibleStatus = &FlexibleServer_STATUS{} // ConvertStatusFrom populates our FlexibleServer_STATUS from the provided source func (server *FlexibleServer_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == server { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.FlexibleServer_STATUS) + if ok { + // Populate our instance from source + return server.AssignProperties_From_FlexibleServer_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServer_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") } - return source.ConvertStatusTo(server) + // Update our instance from src + err = server.AssignProperties_From_FlexibleServer_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil } // ConvertStatusTo populates the provided destination from our FlexibleServer_STATUS func (server *FlexibleServer_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == server { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.FlexibleServer_STATUS) + if ok { + // Populate destination from our instance + return server.AssignProperties_To_FlexibleServer_STATUS(dst) } - return destination.ConvertStatusFrom(server) -} + // Convert to an intermediate form + dst = &storage.FlexibleServer_STATUS{} + err := server.AssignProperties_To_FlexibleServer_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } -// Storage version of v1api20230630.Backup -// Storage Profile properties of a server -type Backup struct { - BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` - GeoRedundantBackup *string `json:"geoRedundantBackup,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,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 v1api20230630.Backup_STATUS -// Storage Profile properties of a server -type Backup_STATUS struct { - BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` - EarliestRestoreDate *string `json:"earliestRestoreDate,omitempty"` - GeoRedundantBackup *string `json:"geoRedundantBackup,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + return nil } -// Storage version of v1api20230630.DataEncryption -// The date encryption for cmk. -type DataEncryption struct { - GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` +// AssignProperties_From_FlexibleServer_STATUS populates our FlexibleServer_STATUS from the provided source FlexibleServer_STATUS +func (server *FlexibleServer_STATUS) AssignProperties_From_FlexibleServer_STATUS(source *storage.FlexibleServer_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) - // GeoBackupUserAssignedIdentityReference: Geo backup user identity resource id as identity can't cross region, need - // identity in same region as geo backup - GeoBackupUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"GeoBackupUserAssignedIdentityId" json:"geoBackupUserAssignedIdentityReference,omitempty"` - PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + // AdministratorLogin + server.AdministratorLogin = genruntime.ClonePointerToString(source.AdministratorLogin) - // PrimaryUserAssignedIdentityReference: Primary user identity resource id - PrimaryUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"PrimaryUserAssignedIdentityId" json:"primaryUserAssignedIdentityReference,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Type *string `json:"type,omitempty"` -} + // AvailabilityZone + server.AvailabilityZone = genruntime.ClonePointerToString(source.AvailabilityZone) -// Storage version of v1api20230630.DataEncryption_STATUS -// The date encryption for cmk. -type DataEncryption_STATUS struct { - GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` - GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"` - PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` - PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - Type *string `json:"type,omitempty"` -} + // Backup + if source.Backup != nil { + var backup Backup_STATUS + err := backup.AssignProperties_From_Backup_STATUS(source.Backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Backup_STATUS() to populate field Backup") + } + server.Backup = &backup + } else { + server.Backup = nil + } -// Storage version of v1api20230630.FlexibleServerOperatorSpec -// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure -type FlexibleServerOperatorSpec struct { - ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` - ConfigMaps *FlexibleServerOperatorConfigMaps `json:"configMaps,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` - Secrets *FlexibleServerOperatorSecrets `json:"secrets,omitempty"` -} + // Conditions + server.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) -// Storage version of v1api20230630.HighAvailability -// Network related properties of a server -type HighAvailability struct { - Mode *string `json:"mode,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` -} + // CreateMode + server.CreateMode = genruntime.ClonePointerToString(source.CreateMode) -// Storage version of v1api20230630.HighAvailability_STATUS -// Network related properties of a server -type HighAvailability_STATUS struct { - Mode *string `json:"mode,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` - State *string `json:"state,omitempty"` -} + // DataEncryption + if source.DataEncryption != nil { + var dataEncryption DataEncryption_STATUS + err := dataEncryption.AssignProperties_From_DataEncryption_STATUS(source.DataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_DataEncryption_STATUS() to populate field DataEncryption") + } + server.DataEncryption = &dataEncryption + } else { + server.DataEncryption = nil + } -// Storage version of v1api20230630.ImportSourceProperties -// Import source related properties. -type ImportSourceProperties struct { - DataDirPath *string `json:"dataDirPath,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - SasToken *genruntime.SecretReference `json:"sasToken,omitempty"` - StorageType *string `json:"storageType,omitempty"` - StorageUrl *string `json:"storageUrl,omitempty"` -} + // FullyQualifiedDomainName + server.FullyQualifiedDomainName = genruntime.ClonePointerToString(source.FullyQualifiedDomainName) -// Storage version of v1api20230630.ImportSourceProperties_STATUS -// Import source related properties. -type ImportSourceProperties_STATUS struct { - DataDirPath *string `json:"dataDirPath,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - StorageType *string `json:"storageType,omitempty"` - StorageUrl *string `json:"storageUrl,omitempty"` -} + // HighAvailability + if source.HighAvailability != nil { + var highAvailability HighAvailability_STATUS + err := highAvailability.AssignProperties_From_HighAvailability_STATUS(source.HighAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_HighAvailability_STATUS() to populate field HighAvailability") + } + server.HighAvailability = &highAvailability + } else { + server.HighAvailability = nil + } + + // Id + server.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity MySQLServerIdentity_STATUS + err := identity.AssignProperties_From_MySQLServerIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerIdentity_STATUS() to populate field Identity") + } + server.Identity = &identity + } else { + server.Identity = nil + } + + // ImportSourceProperties + if source.ImportSourceProperties != nil { + var importSourceProperty ImportSourceProperties_STATUS + err := importSourceProperty.AssignProperties_From_ImportSourceProperties_STATUS(source.ImportSourceProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ImportSourceProperties_STATUS() to populate field ImportSourceProperties") + } + server.ImportSourceProperties = &importSourceProperty + } else { + server.ImportSourceProperties = nil + } + + // Location + server.Location = genruntime.ClonePointerToString(source.Location) + + // MaintenanceWindow + if source.MaintenanceWindow != nil { + var maintenanceWindow MaintenanceWindow_STATUS + err := maintenanceWindow.AssignProperties_From_MaintenanceWindow_STATUS(source.MaintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MaintenanceWindow_STATUS() to populate field MaintenanceWindow") + } + server.MaintenanceWindow = &maintenanceWindow + } else { + server.MaintenanceWindow = nil + } + + // Name + server.Name = genruntime.ClonePointerToString(source.Name) + + // Network + if source.Network != nil { + var network Network_STATUS + err := network.AssignProperties_From_Network_STATUS(source.Network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Network_STATUS() to populate field Network") + } + server.Network = &network + } else { + server.Network = nil + } + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnection_STATUS, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection PrivateEndpointConnection_STATUS + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnection_STATUS(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + server.PrivateEndpointConnections = privateEndpointConnectionList + } else { + server.PrivateEndpointConnections = nil + } + + // ReplicaCapacity + server.ReplicaCapacity = genruntime.ClonePointerToInt(source.ReplicaCapacity) + + // ReplicationRole + server.ReplicationRole = genruntime.ClonePointerToString(source.ReplicationRole) + + // RestorePointInTime + server.RestorePointInTime = genruntime.ClonePointerToString(source.RestorePointInTime) + + // Sku + if source.Sku != nil { + var sku MySQLServerSku_STATUS + err := sku.AssignProperties_From_MySQLServerSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerSku_STATUS() to populate field Sku") + } + server.Sku = &sku + } else { + server.Sku = nil + } + + // SourceServerResourceId + server.SourceServerResourceId = genruntime.ClonePointerToString(source.SourceServerResourceId) + + // State + server.State = genruntime.ClonePointerToString(source.State) + + // Storage + if source.Storage != nil { + var storage Storage_STATUS + err := storage.AssignProperties_From_Storage_STATUS(source.Storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Storage_STATUS() to populate field Storage") + } + server.Storage = &storage + } else { + server.Storage = 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") + } + server.SystemData = &systemDatum + } else { + server.SystemData = nil + } + + // Tags + server.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + server.Type = genruntime.ClonePointerToString(source.Type) + + // Version + server.Version = genruntime.ClonePointerToString(source.Version) + + // Update the property bag + if len(propertyBag) > 0 { + server.PropertyBag = propertyBag + } else { + server.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServer_STATUS interface (if implemented) to customize the conversion + var serverAsAny any = server + if augmentedServer, ok := serverAsAny.(augmentConversionForFlexibleServer_STATUS); ok { + err := augmentedServer.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServer_STATUS populates the provided destination FlexibleServer_STATUS from our FlexibleServer_STATUS +func (server *FlexibleServer_STATUS) AssignProperties_To_FlexibleServer_STATUS(destination *storage.FlexibleServer_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(server.PropertyBag) + + // AdministratorLogin + destination.AdministratorLogin = genruntime.ClonePointerToString(server.AdministratorLogin) + + // AvailabilityZone + destination.AvailabilityZone = genruntime.ClonePointerToString(server.AvailabilityZone) + + // Backup + if server.Backup != nil { + var backup storage.Backup_STATUS + err := server.Backup.AssignProperties_To_Backup_STATUS(&backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Backup_STATUS() to populate field Backup") + } + destination.Backup = &backup + } else { + destination.Backup = nil + } + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(server.Conditions) + + // CreateMode + destination.CreateMode = genruntime.ClonePointerToString(server.CreateMode) + + // DataEncryption + if server.DataEncryption != nil { + var dataEncryption storage.DataEncryption_STATUS + err := server.DataEncryption.AssignProperties_To_DataEncryption_STATUS(&dataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_DataEncryption_STATUS() to populate field DataEncryption") + } + destination.DataEncryption = &dataEncryption + } else { + destination.DataEncryption = nil + } + + // FullyQualifiedDomainName + destination.FullyQualifiedDomainName = genruntime.ClonePointerToString(server.FullyQualifiedDomainName) + + // HighAvailability + if server.HighAvailability != nil { + var highAvailability storage.HighAvailability_STATUS + err := server.HighAvailability.AssignProperties_To_HighAvailability_STATUS(&highAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_HighAvailability_STATUS() to populate field HighAvailability") + } + destination.HighAvailability = &highAvailability + } else { + destination.HighAvailability = nil + } + + // Id + destination.Id = genruntime.ClonePointerToString(server.Id) + + // Identity + if server.Identity != nil { + var identity storage.MySQLServerIdentity_STATUS + err := server.Identity.AssignProperties_To_MySQLServerIdentity_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerIdentity_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // ImportSourceProperties + if server.ImportSourceProperties != nil { + var importSourceProperty storage.ImportSourceProperties_STATUS + err := server.ImportSourceProperties.AssignProperties_To_ImportSourceProperties_STATUS(&importSourceProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ImportSourceProperties_STATUS() to populate field ImportSourceProperties") + } + destination.ImportSourceProperties = &importSourceProperty + } else { + destination.ImportSourceProperties = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(server.Location) + + // MaintenanceWindow + if server.MaintenanceWindow != nil { + var maintenanceWindow storage.MaintenanceWindow_STATUS + err := server.MaintenanceWindow.AssignProperties_To_MaintenanceWindow_STATUS(&maintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MaintenanceWindow_STATUS() to populate field MaintenanceWindow") + } + destination.MaintenanceWindow = &maintenanceWindow + } else { + destination.MaintenanceWindow = nil + } + + // Name + destination.Name = genruntime.ClonePointerToString(server.Name) + + // Network + if server.Network != nil { + var network storage.Network_STATUS + err := server.Network.AssignProperties_To_Network_STATUS(&network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Network_STATUS() to populate field Network") + } + destination.Network = &network + } else { + destination.Network = nil + } + + // PrivateEndpointConnections + if server.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnection_STATUS, len(server.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range server.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection storage.PrivateEndpointConnection_STATUS + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnection_STATUS(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ReplicaCapacity + destination.ReplicaCapacity = genruntime.ClonePointerToInt(server.ReplicaCapacity) + + // ReplicationRole + destination.ReplicationRole = genruntime.ClonePointerToString(server.ReplicationRole) + + // RestorePointInTime + destination.RestorePointInTime = genruntime.ClonePointerToString(server.RestorePointInTime) + + // Sku + if server.Sku != nil { + var sku storage.MySQLServerSku_STATUS + err := server.Sku.AssignProperties_To_MySQLServerSku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerSku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SourceServerResourceId + destination.SourceServerResourceId = genruntime.ClonePointerToString(server.SourceServerResourceId) + + // State + destination.State = genruntime.ClonePointerToString(server.State) + + // Storage + if server.Storage != nil { + var storage storage.Storage_STATUS + err := server.Storage.AssignProperties_To_Storage_STATUS(&storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Storage_STATUS() to populate field Storage") + } + destination.Storage = &storage + } else { + destination.Storage = nil + } + + // SystemData + if server.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := server.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(server.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(server.Type) + + // Version + destination.Version = genruntime.ClonePointerToString(server.Version) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServer_STATUS interface (if implemented) to customize the conversion + var serverAsAny any = server + if augmentedServer, ok := serverAsAny.(augmentConversionForFlexibleServer_STATUS); ok { + err := augmentedServer.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServer_Spec interface { + AssignPropertiesFrom(src *storage.FlexibleServer_Spec) error + AssignPropertiesTo(dst *storage.FlexibleServer_Spec) error +} + +type augmentConversionForFlexibleServer_STATUS interface { + AssignPropertiesFrom(src *storage.FlexibleServer_STATUS) error + AssignPropertiesTo(dst *storage.FlexibleServer_STATUS) error +} + +// Storage version of v1api20230630.Backup +// Storage Profile properties of a server +type Backup struct { + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + GeoRedundantBackup *string `json:"geoRedundantBackup,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_Backup populates our Backup from the provided source Backup +func (backup *Backup) AssignProperties_From_Backup(source *storage.Backup) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // BackupIntervalHours + if source.BackupIntervalHours != nil { + propertyBag.Add("BackupIntervalHours", *source.BackupIntervalHours) + } else { + propertyBag.Remove("BackupIntervalHours") + } + + // BackupRetentionDays + backup.BackupRetentionDays = genruntime.ClonePointerToInt(source.BackupRetentionDays) + + // GeoRedundantBackup + backup.GeoRedundantBackup = genruntime.ClonePointerToString(source.GeoRedundantBackup) + + // Update the property bag + if len(propertyBag) > 0 { + backup.PropertyBag = propertyBag + } else { + backup.PropertyBag = nil + } + + // Invoke the augmentConversionForBackup interface (if implemented) to customize the conversion + var backupAsAny any = backup + if augmentedBackup, ok := backupAsAny.(augmentConversionForBackup); ok { + err := augmentedBackup.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Backup populates the provided destination Backup from our Backup +func (backup *Backup) AssignProperties_To_Backup(destination *storage.Backup) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(backup.PropertyBag) + + // BackupIntervalHours + if propertyBag.Contains("BackupIntervalHours") { + var backupIntervalHour int + err := propertyBag.Pull("BackupIntervalHours", &backupIntervalHour) + if err != nil { + return eris.Wrap(err, "pulling 'BackupIntervalHours' from propertyBag") + } + + destination.BackupIntervalHours = &backupIntervalHour + } else { + destination.BackupIntervalHours = nil + } + + // BackupRetentionDays + destination.BackupRetentionDays = genruntime.ClonePointerToInt(backup.BackupRetentionDays) + + // GeoRedundantBackup + destination.GeoRedundantBackup = genruntime.ClonePointerToString(backup.GeoRedundantBackup) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForBackup interface (if implemented) to customize the conversion + var backupAsAny any = backup + if augmentedBackup, ok := backupAsAny.(augmentConversionForBackup); ok { + err := augmentedBackup.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.Backup_STATUS +// Storage Profile properties of a server +type Backup_STATUS struct { + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + EarliestRestoreDate *string `json:"earliestRestoreDate,omitempty"` + GeoRedundantBackup *string `json:"geoRedundantBackup,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_Backup_STATUS populates our Backup_STATUS from the provided source Backup_STATUS +func (backup *Backup_STATUS) AssignProperties_From_Backup_STATUS(source *storage.Backup_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // BackupIntervalHours + if source.BackupIntervalHours != nil { + propertyBag.Add("BackupIntervalHours", *source.BackupIntervalHours) + } else { + propertyBag.Remove("BackupIntervalHours") + } + + // BackupRetentionDays + backup.BackupRetentionDays = genruntime.ClonePointerToInt(source.BackupRetentionDays) + + // EarliestRestoreDate + backup.EarliestRestoreDate = genruntime.ClonePointerToString(source.EarliestRestoreDate) + + // GeoRedundantBackup + backup.GeoRedundantBackup = genruntime.ClonePointerToString(source.GeoRedundantBackup) + + // Update the property bag + if len(propertyBag) > 0 { + backup.PropertyBag = propertyBag + } else { + backup.PropertyBag = nil + } + + // Invoke the augmentConversionForBackup_STATUS interface (if implemented) to customize the conversion + var backupAsAny any = backup + if augmentedBackup, ok := backupAsAny.(augmentConversionForBackup_STATUS); ok { + err := augmentedBackup.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Backup_STATUS populates the provided destination Backup_STATUS from our Backup_STATUS +func (backup *Backup_STATUS) AssignProperties_To_Backup_STATUS(destination *storage.Backup_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(backup.PropertyBag) + + // BackupIntervalHours + if propertyBag.Contains("BackupIntervalHours") { + var backupIntervalHour int + err := propertyBag.Pull("BackupIntervalHours", &backupIntervalHour) + if err != nil { + return eris.Wrap(err, "pulling 'BackupIntervalHours' from propertyBag") + } + + destination.BackupIntervalHours = &backupIntervalHour + } else { + destination.BackupIntervalHours = nil + } + + // BackupRetentionDays + destination.BackupRetentionDays = genruntime.ClonePointerToInt(backup.BackupRetentionDays) + + // EarliestRestoreDate + destination.EarliestRestoreDate = genruntime.ClonePointerToString(backup.EarliestRestoreDate) + + // GeoRedundantBackup + destination.GeoRedundantBackup = genruntime.ClonePointerToString(backup.GeoRedundantBackup) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForBackup_STATUS interface (if implemented) to customize the conversion + var backupAsAny any = backup + if augmentedBackup, ok := backupAsAny.(augmentConversionForBackup_STATUS); ok { + err := augmentedBackup.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.DataEncryption +// The date encryption for cmk. +type DataEncryption struct { + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + + // GeoBackupUserAssignedIdentityReference: Geo backup user identity resource id as identity can't cross region, need + // identity in same region as geo backup + GeoBackupUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"GeoBackupUserAssignedIdentityId" json:"geoBackupUserAssignedIdentityReference,omitempty"` + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + + // PrimaryUserAssignedIdentityReference: Primary user identity resource id + PrimaryUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"PrimaryUserAssignedIdentityId" json:"primaryUserAssignedIdentityReference,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` +} + +// AssignProperties_From_DataEncryption populates our DataEncryption from the provided source DataEncryption +func (encryption *DataEncryption) AssignProperties_From_DataEncryption(source *storage.DataEncryption) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // GeoBackupKeyURI + encryption.GeoBackupKeyURI = genruntime.ClonePointerToString(source.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityReference + if source.GeoBackupUserAssignedIdentityReference != nil { + geoBackupUserAssignedIdentityReference := source.GeoBackupUserAssignedIdentityReference.Copy() + encryption.GeoBackupUserAssignedIdentityReference = &geoBackupUserAssignedIdentityReference + } else { + encryption.GeoBackupUserAssignedIdentityReference = nil + } + + // PrimaryKeyURI + encryption.PrimaryKeyURI = genruntime.ClonePointerToString(source.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityReference + if source.PrimaryUserAssignedIdentityReference != nil { + primaryUserAssignedIdentityReference := source.PrimaryUserAssignedIdentityReference.Copy() + encryption.PrimaryUserAssignedIdentityReference = &primaryUserAssignedIdentityReference + } else { + encryption.PrimaryUserAssignedIdentityReference = nil + } + + // Type + encryption.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + encryption.PropertyBag = propertyBag + } else { + encryption.PropertyBag = nil + } + + // Invoke the augmentConversionForDataEncryption interface (if implemented) to customize the conversion + var encryptionAsAny any = encryption + if augmentedEncryption, ok := encryptionAsAny.(augmentConversionForDataEncryption); ok { + err := augmentedEncryption.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_DataEncryption populates the provided destination DataEncryption from our DataEncryption +func (encryption *DataEncryption) AssignProperties_To_DataEncryption(destination *storage.DataEncryption) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(encryption.PropertyBag) + + // GeoBackupKeyURI + destination.GeoBackupKeyURI = genruntime.ClonePointerToString(encryption.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityReference + if encryption.GeoBackupUserAssignedIdentityReference != nil { + geoBackupUserAssignedIdentityReference := encryption.GeoBackupUserAssignedIdentityReference.Copy() + destination.GeoBackupUserAssignedIdentityReference = &geoBackupUserAssignedIdentityReference + } else { + destination.GeoBackupUserAssignedIdentityReference = nil + } + + // PrimaryKeyURI + destination.PrimaryKeyURI = genruntime.ClonePointerToString(encryption.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityReference + if encryption.PrimaryUserAssignedIdentityReference != nil { + primaryUserAssignedIdentityReference := encryption.PrimaryUserAssignedIdentityReference.Copy() + destination.PrimaryUserAssignedIdentityReference = &primaryUserAssignedIdentityReference + } else { + destination.PrimaryUserAssignedIdentityReference = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(encryption.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForDataEncryption interface (if implemented) to customize the conversion + var encryptionAsAny any = encryption + if augmentedEncryption, ok := encryptionAsAny.(augmentConversionForDataEncryption); ok { + err := augmentedEncryption.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.DataEncryption_STATUS +// The date encryption for cmk. +type DataEncryption_STATUS struct { + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"` + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` +} + +// AssignProperties_From_DataEncryption_STATUS populates our DataEncryption_STATUS from the provided source DataEncryption_STATUS +func (encryption *DataEncryption_STATUS) AssignProperties_From_DataEncryption_STATUS(source *storage.DataEncryption_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // GeoBackupKeyURI + encryption.GeoBackupKeyURI = genruntime.ClonePointerToString(source.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityId + encryption.GeoBackupUserAssignedIdentityId = genruntime.ClonePointerToString(source.GeoBackupUserAssignedIdentityId) + + // PrimaryKeyURI + encryption.PrimaryKeyURI = genruntime.ClonePointerToString(source.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityId + encryption.PrimaryUserAssignedIdentityId = genruntime.ClonePointerToString(source.PrimaryUserAssignedIdentityId) + + // Type + encryption.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + encryption.PropertyBag = propertyBag + } else { + encryption.PropertyBag = nil + } + + // Invoke the augmentConversionForDataEncryption_STATUS interface (if implemented) to customize the conversion + var encryptionAsAny any = encryption + if augmentedEncryption, ok := encryptionAsAny.(augmentConversionForDataEncryption_STATUS); ok { + err := augmentedEncryption.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_DataEncryption_STATUS populates the provided destination DataEncryption_STATUS from our DataEncryption_STATUS +func (encryption *DataEncryption_STATUS) AssignProperties_To_DataEncryption_STATUS(destination *storage.DataEncryption_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(encryption.PropertyBag) + + // GeoBackupKeyURI + destination.GeoBackupKeyURI = genruntime.ClonePointerToString(encryption.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityId + destination.GeoBackupUserAssignedIdentityId = genruntime.ClonePointerToString(encryption.GeoBackupUserAssignedIdentityId) + + // PrimaryKeyURI + destination.PrimaryKeyURI = genruntime.ClonePointerToString(encryption.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityId + destination.PrimaryUserAssignedIdentityId = genruntime.ClonePointerToString(encryption.PrimaryUserAssignedIdentityId) + + // Type + destination.Type = genruntime.ClonePointerToString(encryption.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForDataEncryption_STATUS interface (if implemented) to customize the conversion + var encryptionAsAny any = encryption + if augmentedEncryption, ok := encryptionAsAny.(augmentConversionForDataEncryption_STATUS); ok { + err := augmentedEncryption.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.FlexibleServerOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServerOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + ConfigMaps *FlexibleServerOperatorConfigMaps `json:"configMaps,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` + Secrets *FlexibleServerOperatorSecrets `json:"secrets,omitempty"` +} + +// AssignProperties_From_FlexibleServerOperatorSpec populates our FlexibleServerOperatorSpec from the provided source FlexibleServerOperatorSpec +func (operator *FlexibleServerOperatorSpec) AssignProperties_From_FlexibleServerOperatorSpec(source *storage.FlexibleServerOperatorSpec) 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 + } + + // ConfigMaps + if source.ConfigMaps != nil { + var configMap FlexibleServerOperatorConfigMaps + err := configMap.AssignProperties_From_FlexibleServerOperatorConfigMaps(source.ConfigMaps) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServerOperatorConfigMaps() to populate field ConfigMaps") + } + operator.ConfigMaps = &configMap + } else { + operator.ConfigMaps = 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 FlexibleServerOperatorSecrets + err := secret.AssignProperties_From_FlexibleServerOperatorSecrets(source.Secrets) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServerOperatorSecrets() 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 augmentConversionForFlexibleServerOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServerOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServerOperatorSpec populates the provided destination FlexibleServerOperatorSpec from our FlexibleServerOperatorSpec +func (operator *FlexibleServerOperatorSpec) AssignProperties_To_FlexibleServerOperatorSpec(destination *storage.FlexibleServerOperatorSpec) 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 + } + + // ConfigMaps + if operator.ConfigMaps != nil { + var configMap storage.FlexibleServerOperatorConfigMaps + err := operator.ConfigMaps.AssignProperties_To_FlexibleServerOperatorConfigMaps(&configMap) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServerOperatorConfigMaps() to populate field ConfigMaps") + } + destination.ConfigMaps = &configMap + } else { + destination.ConfigMaps = 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.FlexibleServerOperatorSecrets + err := operator.Secrets.AssignProperties_To_FlexibleServerOperatorSecrets(&secret) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServerOperatorSecrets() 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 augmentConversionForFlexibleServerOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServerOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.HighAvailability +// Network related properties of a server +type HighAvailability struct { + Mode *string `json:"mode,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` +} + +// AssignProperties_From_HighAvailability populates our HighAvailability from the provided source HighAvailability +func (availability *HighAvailability) AssignProperties_From_HighAvailability(source *storage.HighAvailability) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Mode + availability.Mode = genruntime.ClonePointerToString(source.Mode) + + // StandbyAvailabilityZone + availability.StandbyAvailabilityZone = genruntime.ClonePointerToString(source.StandbyAvailabilityZone) + + // Update the property bag + if len(propertyBag) > 0 { + availability.PropertyBag = propertyBag + } else { + availability.PropertyBag = nil + } + + // Invoke the augmentConversionForHighAvailability interface (if implemented) to customize the conversion + var availabilityAsAny any = availability + if augmentedAvailability, ok := availabilityAsAny.(augmentConversionForHighAvailability); ok { + err := augmentedAvailability.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_HighAvailability populates the provided destination HighAvailability from our HighAvailability +func (availability *HighAvailability) AssignProperties_To_HighAvailability(destination *storage.HighAvailability) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(availability.PropertyBag) + + // Mode + destination.Mode = genruntime.ClonePointerToString(availability.Mode) + + // StandbyAvailabilityZone + destination.StandbyAvailabilityZone = genruntime.ClonePointerToString(availability.StandbyAvailabilityZone) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForHighAvailability interface (if implemented) to customize the conversion + var availabilityAsAny any = availability + if augmentedAvailability, ok := availabilityAsAny.(augmentConversionForHighAvailability); ok { + err := augmentedAvailability.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.HighAvailability_STATUS +// Network related properties of a server +type HighAvailability_STATUS struct { + Mode *string `json:"mode,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` + State *string `json:"state,omitempty"` +} + +// AssignProperties_From_HighAvailability_STATUS populates our HighAvailability_STATUS from the provided source HighAvailability_STATUS +func (availability *HighAvailability_STATUS) AssignProperties_From_HighAvailability_STATUS(source *storage.HighAvailability_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Mode + availability.Mode = genruntime.ClonePointerToString(source.Mode) + + // StandbyAvailabilityZone + availability.StandbyAvailabilityZone = genruntime.ClonePointerToString(source.StandbyAvailabilityZone) + + // State + availability.State = genruntime.ClonePointerToString(source.State) + + // Update the property bag + if len(propertyBag) > 0 { + availability.PropertyBag = propertyBag + } else { + availability.PropertyBag = nil + } + + // Invoke the augmentConversionForHighAvailability_STATUS interface (if implemented) to customize the conversion + var availabilityAsAny any = availability + if augmentedAvailability, ok := availabilityAsAny.(augmentConversionForHighAvailability_STATUS); ok { + err := augmentedAvailability.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_HighAvailability_STATUS populates the provided destination HighAvailability_STATUS from our HighAvailability_STATUS +func (availability *HighAvailability_STATUS) AssignProperties_To_HighAvailability_STATUS(destination *storage.HighAvailability_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(availability.PropertyBag) + + // Mode + destination.Mode = genruntime.ClonePointerToString(availability.Mode) + + // StandbyAvailabilityZone + destination.StandbyAvailabilityZone = genruntime.ClonePointerToString(availability.StandbyAvailabilityZone) + + // State + destination.State = genruntime.ClonePointerToString(availability.State) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForHighAvailability_STATUS interface (if implemented) to customize the conversion + var availabilityAsAny any = availability + if augmentedAvailability, ok := availabilityAsAny.(augmentConversionForHighAvailability_STATUS); ok { + err := augmentedAvailability.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.ImportSourceProperties +// Import source related properties. +type ImportSourceProperties struct { + DataDirPath *string `json:"dataDirPath,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SasToken *genruntime.SecretReference `json:"sasToken,omitempty"` + StorageType *string `json:"storageType,omitempty"` + StorageUrl *string `json:"storageUrl,omitempty"` +} + +// AssignProperties_From_ImportSourceProperties populates our ImportSourceProperties from the provided source ImportSourceProperties +func (properties *ImportSourceProperties) AssignProperties_From_ImportSourceProperties(source *storage.ImportSourceProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DataDirPath + properties.DataDirPath = genruntime.ClonePointerToString(source.DataDirPath) + + // SasToken + if source.SasToken != nil { + sasToken := source.SasToken.Copy() + properties.SasToken = &sasToken + } else { + properties.SasToken = nil + } + + // StorageType + properties.StorageType = genruntime.ClonePointerToString(source.StorageType) + + // StorageUrl + properties.StorageUrl = genruntime.ClonePointerToString(source.StorageUrl) + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForImportSourceProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForImportSourceProperties); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ImportSourceProperties populates the provided destination ImportSourceProperties from our ImportSourceProperties +func (properties *ImportSourceProperties) AssignProperties_To_ImportSourceProperties(destination *storage.ImportSourceProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // DataDirPath + destination.DataDirPath = genruntime.ClonePointerToString(properties.DataDirPath) + + // SasToken + if properties.SasToken != nil { + sasToken := properties.SasToken.Copy() + destination.SasToken = &sasToken + } else { + destination.SasToken = nil + } + + // StorageType + destination.StorageType = genruntime.ClonePointerToString(properties.StorageType) + + // StorageUrl + destination.StorageUrl = genruntime.ClonePointerToString(properties.StorageUrl) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForImportSourceProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForImportSourceProperties); ok { + err := augmentedProperties.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.ImportSourceProperties_STATUS +// Import source related properties. +type ImportSourceProperties_STATUS struct { + DataDirPath *string `json:"dataDirPath,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StorageType *string `json:"storageType,omitempty"` + StorageUrl *string `json:"storageUrl,omitempty"` +} + +// AssignProperties_From_ImportSourceProperties_STATUS populates our ImportSourceProperties_STATUS from the provided source ImportSourceProperties_STATUS +func (properties *ImportSourceProperties_STATUS) AssignProperties_From_ImportSourceProperties_STATUS(source *storage.ImportSourceProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DataDirPath + properties.DataDirPath = genruntime.ClonePointerToString(source.DataDirPath) + + // StorageType + properties.StorageType = genruntime.ClonePointerToString(source.StorageType) + + // StorageUrl + properties.StorageUrl = genruntime.ClonePointerToString(source.StorageUrl) + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForImportSourceProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForImportSourceProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ImportSourceProperties_STATUS populates the provided destination ImportSourceProperties_STATUS from our ImportSourceProperties_STATUS +func (properties *ImportSourceProperties_STATUS) AssignProperties_To_ImportSourceProperties_STATUS(destination *storage.ImportSourceProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // DataDirPath + destination.DataDirPath = genruntime.ClonePointerToString(properties.DataDirPath) + + // StorageType + destination.StorageType = genruntime.ClonePointerToString(properties.StorageType) + + // StorageUrl + destination.StorageUrl = genruntime.ClonePointerToString(properties.StorageUrl) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForImportSourceProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForImportSourceProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} // Storage version of v1api20230630.MaintenanceWindow // Maintenance window of a server. @@ -408,6 +2193,80 @@ type MaintenanceWindow struct { StartMinute *int `json:"startMinute,omitempty"` } +// AssignProperties_From_MaintenanceWindow populates our MaintenanceWindow from the provided source MaintenanceWindow +func (window *MaintenanceWindow) AssignProperties_From_MaintenanceWindow(source *storage.MaintenanceWindow) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // CustomWindow + window.CustomWindow = genruntime.ClonePointerToString(source.CustomWindow) + + // DayOfWeek + window.DayOfWeek = genruntime.ClonePointerToInt(source.DayOfWeek) + + // StartHour + window.StartHour = genruntime.ClonePointerToInt(source.StartHour) + + // StartMinute + window.StartMinute = genruntime.ClonePointerToInt(source.StartMinute) + + // Update the property bag + if len(propertyBag) > 0 { + window.PropertyBag = propertyBag + } else { + window.PropertyBag = nil + } + + // Invoke the augmentConversionForMaintenanceWindow interface (if implemented) to customize the conversion + var windowAsAny any = window + if augmentedWindow, ok := windowAsAny.(augmentConversionForMaintenanceWindow); ok { + err := augmentedWindow.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_MaintenanceWindow populates the provided destination MaintenanceWindow from our MaintenanceWindow +func (window *MaintenanceWindow) AssignProperties_To_MaintenanceWindow(destination *storage.MaintenanceWindow) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(window.PropertyBag) + + // CustomWindow + destination.CustomWindow = genruntime.ClonePointerToString(window.CustomWindow) + + // DayOfWeek + destination.DayOfWeek = genruntime.ClonePointerToInt(window.DayOfWeek) + + // StartHour + destination.StartHour = genruntime.ClonePointerToInt(window.StartHour) + + // StartMinute + destination.StartMinute = genruntime.ClonePointerToInt(window.StartMinute) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForMaintenanceWindow interface (if implemented) to customize the conversion + var windowAsAny any = window + if augmentedWindow, ok := windowAsAny.(augmentConversionForMaintenanceWindow); ok { + err := augmentedWindow.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.MaintenanceWindow_STATUS // Maintenance window of a server. type MaintenanceWindow_STATUS struct { @@ -418,6 +2277,80 @@ type MaintenanceWindow_STATUS struct { StartMinute *int `json:"startMinute,omitempty"` } +// AssignProperties_From_MaintenanceWindow_STATUS populates our MaintenanceWindow_STATUS from the provided source MaintenanceWindow_STATUS +func (window *MaintenanceWindow_STATUS) AssignProperties_From_MaintenanceWindow_STATUS(source *storage.MaintenanceWindow_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // CustomWindow + window.CustomWindow = genruntime.ClonePointerToString(source.CustomWindow) + + // DayOfWeek + window.DayOfWeek = genruntime.ClonePointerToInt(source.DayOfWeek) + + // StartHour + window.StartHour = genruntime.ClonePointerToInt(source.StartHour) + + // StartMinute + window.StartMinute = genruntime.ClonePointerToInt(source.StartMinute) + + // Update the property bag + if len(propertyBag) > 0 { + window.PropertyBag = propertyBag + } else { + window.PropertyBag = nil + } + + // Invoke the augmentConversionForMaintenanceWindow_STATUS interface (if implemented) to customize the conversion + var windowAsAny any = window + if augmentedWindow, ok := windowAsAny.(augmentConversionForMaintenanceWindow_STATUS); ok { + err := augmentedWindow.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_MaintenanceWindow_STATUS populates the provided destination MaintenanceWindow_STATUS from our MaintenanceWindow_STATUS +func (window *MaintenanceWindow_STATUS) AssignProperties_To_MaintenanceWindow_STATUS(destination *storage.MaintenanceWindow_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(window.PropertyBag) + + // CustomWindow + destination.CustomWindow = genruntime.ClonePointerToString(window.CustomWindow) + + // DayOfWeek + destination.DayOfWeek = genruntime.ClonePointerToInt(window.DayOfWeek) + + // StartHour + destination.StartHour = genruntime.ClonePointerToInt(window.StartHour) + + // StartMinute + destination.StartMinute = genruntime.ClonePointerToInt(window.StartMinute) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForMaintenanceWindow_STATUS interface (if implemented) to customize the conversion + var windowAsAny any = window + if augmentedWindow, ok := windowAsAny.(augmentConversionForMaintenanceWindow_STATUS); ok { + err := augmentedWindow.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.MySQLServerIdentity // Properties to configure Identity for Bring your Own Keys type MySQLServerIdentity struct { @@ -426,6 +2359,98 @@ type MySQLServerIdentity struct { UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` } +// AssignProperties_From_MySQLServerIdentity populates our MySQLServerIdentity from the provided source MySQLServerIdentity +func (identity *MySQLServerIdentity) AssignProperties_From_MySQLServerIdentity(source *storage.MySQLServerIdentity) 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 augmentConversionForMySQLServerIdentity interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForMySQLServerIdentity); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerIdentity populates the provided destination MySQLServerIdentity from our MySQLServerIdentity +func (identity *MySQLServerIdentity) AssignProperties_To_MySQLServerIdentity(destination *storage.MySQLServerIdentity) 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 augmentConversionForMySQLServerIdentity interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForMySQLServerIdentity); ok { + err := augmentedIdentity.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.MySQLServerIdentity_STATUS // Properties to configure Identity for Bring your Own Keys type MySQLServerIdentity_STATUS struct { @@ -436,6 +2461,100 @@ type MySQLServerIdentity_STATUS struct { UserAssignedIdentities map[string]v1.JSON `json:"userAssignedIdentities,omitempty"` } +// AssignProperties_From_MySQLServerIdentity_STATUS populates our MySQLServerIdentity_STATUS from the provided source MySQLServerIdentity_STATUS +func (identity *MySQLServerIdentity_STATUS) AssignProperties_From_MySQLServerIdentity_STATUS(source *storage.MySQLServerIdentity_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]v1.JSON, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + userAssignedIdentityMap[userAssignedIdentityKey] = *userAssignedIdentityValue.DeepCopy() + } + identity.UserAssignedIdentities = userAssignedIdentityMap + } else { + identity.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + identity.PropertyBag = propertyBag + } else { + identity.PropertyBag = nil + } + + // Invoke the augmentConversionForMySQLServerIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForMySQLServerIdentity_STATUS); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerIdentity_STATUS populates the provided destination MySQLServerIdentity_STATUS from our MySQLServerIdentity_STATUS +func (identity *MySQLServerIdentity_STATUS) AssignProperties_To_MySQLServerIdentity_STATUS(destination *storage.MySQLServerIdentity_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]v1.JSON, len(identity.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range identity.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + userAssignedIdentityMap[userAssignedIdentityKey] = *userAssignedIdentityValue.DeepCopy() + } + destination.UserAssignedIdentities = userAssignedIdentityMap + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForMySQLServerIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForMySQLServerIdentity_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 v1api20230630.MySQLServerSku // Billing information related properties of a server. type MySQLServerSku struct { @@ -444,6 +2563,68 @@ type MySQLServerSku struct { Tier *string `json:"tier,omitempty"` } +// AssignProperties_From_MySQLServerSku populates our MySQLServerSku from the provided source MySQLServerSku +func (serverSku *MySQLServerSku) AssignProperties_From_MySQLServerSku(source *storage.MySQLServerSku) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Name + serverSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + serverSku.Tier = genruntime.ClonePointerToString(source.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + serverSku.PropertyBag = propertyBag + } else { + serverSku.PropertyBag = nil + } + + // Invoke the augmentConversionForMySQLServerSku interface (if implemented) to customize the conversion + var serverSkuAsAny any = serverSku + if augmentedServerSku, ok := serverSkuAsAny.(augmentConversionForMySQLServerSku); ok { + err := augmentedServerSku.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerSku populates the provided destination MySQLServerSku from our MySQLServerSku +func (serverSku *MySQLServerSku) AssignProperties_To_MySQLServerSku(destination *storage.MySQLServerSku) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(serverSku.PropertyBag) + + // Name + destination.Name = genruntime.ClonePointerToString(serverSku.Name) + + // Tier + destination.Tier = genruntime.ClonePointerToString(serverSku.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForMySQLServerSku interface (if implemented) to customize the conversion + var serverSkuAsAny any = serverSku + if augmentedServerSku, ok := serverSkuAsAny.(augmentConversionForMySQLServerSku); ok { + err := augmentedServerSku.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.MySQLServerSku_STATUS // Billing information related properties of a server. type MySQLServerSku_STATUS struct { @@ -452,16 +2633,166 @@ type MySQLServerSku_STATUS struct { Tier *string `json:"tier,omitempty"` } -// Storage version of v1api20230630.Network -// Network related properties of a server -type Network struct { - // DelegatedSubnetResourceReference: Delegated subnet resource id used to setup vnet for a server. - DelegatedSubnetResourceReference *genruntime.ResourceReference `armReference:"DelegatedSubnetResourceId" json:"delegatedSubnetResourceReference,omitempty"` +// AssignProperties_From_MySQLServerSku_STATUS populates our MySQLServerSku_STATUS from the provided source MySQLServerSku_STATUS +func (serverSku *MySQLServerSku_STATUS) AssignProperties_From_MySQLServerSku_STATUS(source *storage.MySQLServerSku_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Name + serverSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + serverSku.Tier = genruntime.ClonePointerToString(source.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + serverSku.PropertyBag = propertyBag + } else { + serverSku.PropertyBag = nil + } + + // Invoke the augmentConversionForMySQLServerSku_STATUS interface (if implemented) to customize the conversion + var serverSkuAsAny any = serverSku + if augmentedServerSku, ok := serverSkuAsAny.(augmentConversionForMySQLServerSku_STATUS); ok { + err := augmentedServerSku.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerSku_STATUS populates the provided destination MySQLServerSku_STATUS from our MySQLServerSku_STATUS +func (serverSku *MySQLServerSku_STATUS) AssignProperties_To_MySQLServerSku_STATUS(destination *storage.MySQLServerSku_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(serverSku.PropertyBag) + + // Name + destination.Name = genruntime.ClonePointerToString(serverSku.Name) + + // Tier + destination.Tier = genruntime.ClonePointerToString(serverSku.Tier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForMySQLServerSku_STATUS interface (if implemented) to customize the conversion + var serverSkuAsAny any = serverSku + if augmentedServerSku, ok := serverSkuAsAny.(augmentConversionForMySQLServerSku_STATUS); ok { + err := augmentedServerSku.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20230630.Network +// Network related properties of a server +type Network struct { + // DelegatedSubnetResourceReference: Delegated subnet resource id used to setup vnet for a server. + DelegatedSubnetResourceReference *genruntime.ResourceReference `armReference:"DelegatedSubnetResourceId" json:"delegatedSubnetResourceReference,omitempty"` + + // PrivateDnsZoneResourceReference: Private DNS zone resource id. + PrivateDnsZoneResourceReference *genruntime.ResourceReference `armReference:"PrivateDnsZoneResourceId" json:"privateDnsZoneResourceReference,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` +} + +// AssignProperties_From_Network populates our Network from the provided source Network +func (network *Network) AssignProperties_From_Network(source *storage.Network) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DelegatedSubnetResourceReference + if source.DelegatedSubnetResourceReference != nil { + delegatedSubnetResourceReference := source.DelegatedSubnetResourceReference.Copy() + network.DelegatedSubnetResourceReference = &delegatedSubnetResourceReference + } else { + network.DelegatedSubnetResourceReference = nil + } + + // PrivateDnsZoneResourceReference + if source.PrivateDnsZoneResourceReference != nil { + privateDnsZoneResourceReference := source.PrivateDnsZoneResourceReference.Copy() + network.PrivateDnsZoneResourceReference = &privateDnsZoneResourceReference + } else { + network.PrivateDnsZoneResourceReference = nil + } + + // PublicNetworkAccess + network.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // Update the property bag + if len(propertyBag) > 0 { + network.PropertyBag = propertyBag + } else { + network.PropertyBag = nil + } + + // Invoke the augmentConversionForNetwork interface (if implemented) to customize the conversion + var networkAsAny any = network + if augmentedNetwork, ok := networkAsAny.(augmentConversionForNetwork); ok { + err := augmentedNetwork.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Network populates the provided destination Network from our Network +func (network *Network) AssignProperties_To_Network(destination *storage.Network) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(network.PropertyBag) + + // DelegatedSubnetResourceReference + if network.DelegatedSubnetResourceReference != nil { + delegatedSubnetResourceReference := network.DelegatedSubnetResourceReference.Copy() + destination.DelegatedSubnetResourceReference = &delegatedSubnetResourceReference + } else { + destination.DelegatedSubnetResourceReference = nil + } + + // PrivateDnsZoneResourceReference + if network.PrivateDnsZoneResourceReference != nil { + privateDnsZoneResourceReference := network.PrivateDnsZoneResourceReference.Copy() + destination.PrivateDnsZoneResourceReference = &privateDnsZoneResourceReference + } else { + destination.PrivateDnsZoneResourceReference = nil + } + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(network.PublicNetworkAccess) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForNetwork interface (if implemented) to customize the conversion + var networkAsAny any = network + if augmentedNetwork, ok := networkAsAny.(augmentConversionForNetwork); ok { + err := augmentedNetwork.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } - // PrivateDnsZoneResourceReference: Private DNS zone resource id. - PrivateDnsZoneResourceReference *genruntime.ResourceReference `armReference:"PrivateDnsZoneResourceId" json:"privateDnsZoneResourceReference,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` - PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + // No error + return nil } // Storage version of v1api20230630.Network_STATUS @@ -473,6 +2804,74 @@ type Network_STATUS struct { PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` } +// AssignProperties_From_Network_STATUS populates our Network_STATUS from the provided source Network_STATUS +func (network *Network_STATUS) AssignProperties_From_Network_STATUS(source *storage.Network_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DelegatedSubnetResourceId + network.DelegatedSubnetResourceId = genruntime.ClonePointerToString(source.DelegatedSubnetResourceId) + + // PrivateDnsZoneResourceId + network.PrivateDnsZoneResourceId = genruntime.ClonePointerToString(source.PrivateDnsZoneResourceId) + + // PublicNetworkAccess + network.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // Update the property bag + if len(propertyBag) > 0 { + network.PropertyBag = propertyBag + } else { + network.PropertyBag = nil + } + + // Invoke the augmentConversionForNetwork_STATUS interface (if implemented) to customize the conversion + var networkAsAny any = network + if augmentedNetwork, ok := networkAsAny.(augmentConversionForNetwork_STATUS); ok { + err := augmentedNetwork.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Network_STATUS populates the provided destination Network_STATUS from our Network_STATUS +func (network *Network_STATUS) AssignProperties_To_Network_STATUS(destination *storage.Network_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(network.PropertyBag) + + // DelegatedSubnetResourceId + destination.DelegatedSubnetResourceId = genruntime.ClonePointerToString(network.DelegatedSubnetResourceId) + + // PrivateDnsZoneResourceId + destination.PrivateDnsZoneResourceId = genruntime.ClonePointerToString(network.PrivateDnsZoneResourceId) + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(network.PublicNetworkAccess) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForNetwork_STATUS interface (if implemented) to customize the conversion + var networkAsAny any = network + if augmentedNetwork, ok := networkAsAny.(augmentConversionForNetwork_STATUS); ok { + err := augmentedNetwork.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.PrivateEndpointConnection_STATUS // The private endpoint connection resource. type PrivateEndpointConnection_STATUS struct { @@ -480,6 +2879,62 @@ type PrivateEndpointConnection_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_PrivateEndpointConnection_STATUS populates our PrivateEndpointConnection_STATUS from the provided source PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_From_PrivateEndpointConnection_STATUS(source *storage.PrivateEndpointConnection_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Id + connection.Id = genruntime.ClonePointerToString(source.Id) + + // Update the property bag + if len(propertyBag) > 0 { + connection.PropertyBag = propertyBag + } else { + connection.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnection_STATUS interface (if implemented) to customize the conversion + var connectionAsAny any = connection + if augmentedConnection, ok := connectionAsAny.(augmentConversionForPrivateEndpointConnection_STATUS); ok { + err := augmentedConnection.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnection_STATUS populates the provided destination PrivateEndpointConnection_STATUS from our PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_To_PrivateEndpointConnection_STATUS(destination *storage.PrivateEndpointConnection_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(connection.PropertyBag) + + // Id + destination.Id = genruntime.ClonePointerToString(connection.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnection_STATUS interface (if implemented) to customize the conversion + var connectionAsAny any = connection + if augmentedConnection, ok := connectionAsAny.(augmentConversionForPrivateEndpointConnection_STATUS); ok { + err := augmentedConnection.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.Storage // Storage Profile properties of a server type Storage struct { @@ -491,6 +2946,86 @@ type Storage struct { StorageSizeGB *int `json:"storageSizeGB,omitempty"` } +// AssignProperties_From_Storage populates our Storage from the provided source Storage +func (storage *Storage) AssignProperties_From_Storage(source *storage.Storage) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AutoGrow + storage.AutoGrow = genruntime.ClonePointerToString(source.AutoGrow) + + // AutoIoScaling + storage.AutoIoScaling = genruntime.ClonePointerToString(source.AutoIoScaling) + + // Iops + storage.Iops = genruntime.ClonePointerToInt(source.Iops) + + // LogOnDisk + storage.LogOnDisk = genruntime.ClonePointerToString(source.LogOnDisk) + + // StorageSizeGB + storage.StorageSizeGB = genruntime.ClonePointerToInt(source.StorageSizeGB) + + // Update the property bag + if len(propertyBag) > 0 { + storage.PropertyBag = propertyBag + } else { + storage.PropertyBag = nil + } + + // Invoke the augmentConversionForStorage interface (if implemented) to customize the conversion + var storageAsAny any = storage + if augmentedStorage, ok := storageAsAny.(augmentConversionForStorage); ok { + err := augmentedStorage.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Storage populates the provided destination Storage from our Storage +func (storage *Storage) AssignProperties_To_Storage(destination *storage.Storage) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(storage.PropertyBag) + + // AutoGrow + destination.AutoGrow = genruntime.ClonePointerToString(storage.AutoGrow) + + // AutoIoScaling + destination.AutoIoScaling = genruntime.ClonePointerToString(storage.AutoIoScaling) + + // Iops + destination.Iops = genruntime.ClonePointerToInt(storage.Iops) + + // LogOnDisk + destination.LogOnDisk = genruntime.ClonePointerToString(storage.LogOnDisk) + + // StorageSizeGB + destination.StorageSizeGB = genruntime.ClonePointerToInt(storage.StorageSizeGB) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForStorage interface (if implemented) to customize the conversion + var storageAsAny any = storage + if augmentedStorage, ok := storageAsAny.(augmentConversionForStorage); ok { + err := augmentedStorage.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.Storage_STATUS // Storage Profile properties of a server type Storage_STATUS struct { @@ -503,6 +3038,92 @@ type Storage_STATUS struct { StorageSku *string `json:"storageSku,omitempty"` } +// AssignProperties_From_Storage_STATUS populates our Storage_STATUS from the provided source Storage_STATUS +func (storage *Storage_STATUS) AssignProperties_From_Storage_STATUS(source *storage.Storage_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AutoGrow + storage.AutoGrow = genruntime.ClonePointerToString(source.AutoGrow) + + // AutoIoScaling + storage.AutoIoScaling = genruntime.ClonePointerToString(source.AutoIoScaling) + + // Iops + storage.Iops = genruntime.ClonePointerToInt(source.Iops) + + // LogOnDisk + storage.LogOnDisk = genruntime.ClonePointerToString(source.LogOnDisk) + + // StorageSizeGB + storage.StorageSizeGB = genruntime.ClonePointerToInt(source.StorageSizeGB) + + // StorageSku + storage.StorageSku = genruntime.ClonePointerToString(source.StorageSku) + + // Update the property bag + if len(propertyBag) > 0 { + storage.PropertyBag = propertyBag + } else { + storage.PropertyBag = nil + } + + // Invoke the augmentConversionForStorage_STATUS interface (if implemented) to customize the conversion + var storageAsAny any = storage + if augmentedStorage, ok := storageAsAny.(augmentConversionForStorage_STATUS); ok { + err := augmentedStorage.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Storage_STATUS populates the provided destination Storage_STATUS from our Storage_STATUS +func (storage *Storage_STATUS) AssignProperties_To_Storage_STATUS(destination *storage.Storage_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(storage.PropertyBag) + + // AutoGrow + destination.AutoGrow = genruntime.ClonePointerToString(storage.AutoGrow) + + // AutoIoScaling + destination.AutoIoScaling = genruntime.ClonePointerToString(storage.AutoIoScaling) + + // Iops + destination.Iops = genruntime.ClonePointerToInt(storage.Iops) + + // LogOnDisk + destination.LogOnDisk = genruntime.ClonePointerToString(storage.LogOnDisk) + + // StorageSizeGB + destination.StorageSizeGB = genruntime.ClonePointerToInt(storage.StorageSizeGB) + + // StorageSku + destination.StorageSku = genruntime.ClonePointerToString(storage.StorageSku) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForStorage_STATUS interface (if implemented) to customize the conversion + var storageAsAny any = storage + if augmentedStorage, ok := storageAsAny.(augmentConversionForStorage_STATUS); ok { + err := augmentedStorage.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.SystemData_STATUS // Metadata pertaining to creation and last modification of the resource. type SystemData_STATUS struct { @@ -515,6 +3136,197 @@ 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 augmentConversionForBackup interface { + AssignPropertiesFrom(src *storage.Backup) error + AssignPropertiesTo(dst *storage.Backup) error +} + +type augmentConversionForBackup_STATUS interface { + AssignPropertiesFrom(src *storage.Backup_STATUS) error + AssignPropertiesTo(dst *storage.Backup_STATUS) error +} + +type augmentConversionForDataEncryption interface { + AssignPropertiesFrom(src *storage.DataEncryption) error + AssignPropertiesTo(dst *storage.DataEncryption) error +} + +type augmentConversionForDataEncryption_STATUS interface { + AssignPropertiesFrom(src *storage.DataEncryption_STATUS) error + AssignPropertiesTo(dst *storage.DataEncryption_STATUS) error +} + +type augmentConversionForFlexibleServerOperatorSpec interface { + AssignPropertiesFrom(src *storage.FlexibleServerOperatorSpec) error + AssignPropertiesTo(dst *storage.FlexibleServerOperatorSpec) error +} + +type augmentConversionForHighAvailability interface { + AssignPropertiesFrom(src *storage.HighAvailability) error + AssignPropertiesTo(dst *storage.HighAvailability) error +} + +type augmentConversionForHighAvailability_STATUS interface { + AssignPropertiesFrom(src *storage.HighAvailability_STATUS) error + AssignPropertiesTo(dst *storage.HighAvailability_STATUS) error +} + +type augmentConversionForImportSourceProperties interface { + AssignPropertiesFrom(src *storage.ImportSourceProperties) error + AssignPropertiesTo(dst *storage.ImportSourceProperties) error +} + +type augmentConversionForImportSourceProperties_STATUS interface { + AssignPropertiesFrom(src *storage.ImportSourceProperties_STATUS) error + AssignPropertiesTo(dst *storage.ImportSourceProperties_STATUS) error +} + +type augmentConversionForMaintenanceWindow interface { + AssignPropertiesFrom(src *storage.MaintenanceWindow) error + AssignPropertiesTo(dst *storage.MaintenanceWindow) error +} + +type augmentConversionForMaintenanceWindow_STATUS interface { + AssignPropertiesFrom(src *storage.MaintenanceWindow_STATUS) error + AssignPropertiesTo(dst *storage.MaintenanceWindow_STATUS) error +} + +type augmentConversionForMySQLServerIdentity interface { + AssignPropertiesFrom(src *storage.MySQLServerIdentity) error + AssignPropertiesTo(dst *storage.MySQLServerIdentity) error +} + +type augmentConversionForMySQLServerIdentity_STATUS interface { + AssignPropertiesFrom(src *storage.MySQLServerIdentity_STATUS) error + AssignPropertiesTo(dst *storage.MySQLServerIdentity_STATUS) error +} + +type augmentConversionForMySQLServerSku interface { + AssignPropertiesFrom(src *storage.MySQLServerSku) error + AssignPropertiesTo(dst *storage.MySQLServerSku) error +} + +type augmentConversionForMySQLServerSku_STATUS interface { + AssignPropertiesFrom(src *storage.MySQLServerSku_STATUS) error + AssignPropertiesTo(dst *storage.MySQLServerSku_STATUS) error +} + +type augmentConversionForNetwork interface { + AssignPropertiesFrom(src *storage.Network) error + AssignPropertiesTo(dst *storage.Network) error +} + +type augmentConversionForNetwork_STATUS interface { + AssignPropertiesFrom(src *storage.Network_STATUS) error + AssignPropertiesTo(dst *storage.Network_STATUS) error +} + +type augmentConversionForPrivateEndpointConnection_STATUS interface { + AssignPropertiesFrom(src *storage.PrivateEndpointConnection_STATUS) error + AssignPropertiesTo(dst *storage.PrivateEndpointConnection_STATUS) error +} + +type augmentConversionForStorage interface { + AssignPropertiesFrom(src *storage.Storage) error + AssignPropertiesTo(dst *storage.Storage) error +} + +type augmentConversionForStorage_STATUS interface { + AssignPropertiesFrom(src *storage.Storage_STATUS) error + AssignPropertiesTo(dst *storage.Storage_STATUS) error +} + +type augmentConversionForSystemData_STATUS interface { + AssignPropertiesFrom(src *storage.SystemData_STATUS) error + AssignPropertiesTo(dst *storage.SystemData_STATUS) error +} + // Storage version of v1api20230630.FlexibleServerOperatorConfigMaps type FlexibleServerOperatorConfigMaps struct { AdministratorLogin *genruntime.ConfigMapDestination `json:"administratorLogin,omitempty"` @@ -522,12 +3334,160 @@ type FlexibleServerOperatorConfigMaps struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_FlexibleServerOperatorConfigMaps populates our FlexibleServerOperatorConfigMaps from the provided source FlexibleServerOperatorConfigMaps +func (maps *FlexibleServerOperatorConfigMaps) AssignProperties_From_FlexibleServerOperatorConfigMaps(source *storage.FlexibleServerOperatorConfigMaps) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AdministratorLogin + if source.AdministratorLogin != nil { + administratorLogin := source.AdministratorLogin.Copy() + maps.AdministratorLogin = &administratorLogin + } else { + maps.AdministratorLogin = nil + } + + // FullyQualifiedDomainName + if source.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := source.FullyQualifiedDomainName.Copy() + maps.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + maps.FullyQualifiedDomainName = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + maps.PropertyBag = propertyBag + } else { + maps.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServerOperatorConfigMaps interface (if implemented) to customize the conversion + var mapsAsAny any = maps + if augmentedMaps, ok := mapsAsAny.(augmentConversionForFlexibleServerOperatorConfigMaps); ok { + err := augmentedMaps.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServerOperatorConfigMaps populates the provided destination FlexibleServerOperatorConfigMaps from our FlexibleServerOperatorConfigMaps +func (maps *FlexibleServerOperatorConfigMaps) AssignProperties_To_FlexibleServerOperatorConfigMaps(destination *storage.FlexibleServerOperatorConfigMaps) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(maps.PropertyBag) + + // AdministratorLogin + if maps.AdministratorLogin != nil { + administratorLogin := maps.AdministratorLogin.Copy() + destination.AdministratorLogin = &administratorLogin + } else { + destination.AdministratorLogin = nil + } + + // FullyQualifiedDomainName + if maps.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := maps.FullyQualifiedDomainName.Copy() + destination.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + destination.FullyQualifiedDomainName = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServerOperatorConfigMaps interface (if implemented) to customize the conversion + var mapsAsAny any = maps + if augmentedMaps, ok := mapsAsAny.(augmentConversionForFlexibleServerOperatorConfigMaps); ok { + err := augmentedMaps.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.FlexibleServerOperatorSecrets type FlexibleServerOperatorSecrets struct { FullyQualifiedDomainName *genruntime.SecretDestination `json:"fullyQualifiedDomainName,omitempty"` PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_FlexibleServerOperatorSecrets populates our FlexibleServerOperatorSecrets from the provided source FlexibleServerOperatorSecrets +func (secrets *FlexibleServerOperatorSecrets) AssignProperties_From_FlexibleServerOperatorSecrets(source *storage.FlexibleServerOperatorSecrets) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // FullyQualifiedDomainName + if source.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := source.FullyQualifiedDomainName.Copy() + secrets.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + secrets.FullyQualifiedDomainName = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + secrets.PropertyBag = propertyBag + } else { + secrets.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServerOperatorSecrets interface (if implemented) to customize the conversion + var secretsAsAny any = secrets + if augmentedSecrets, ok := secretsAsAny.(augmentConversionForFlexibleServerOperatorSecrets); ok { + err := augmentedSecrets.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServerOperatorSecrets populates the provided destination FlexibleServerOperatorSecrets from our FlexibleServerOperatorSecrets +func (secrets *FlexibleServerOperatorSecrets) AssignProperties_To_FlexibleServerOperatorSecrets(destination *storage.FlexibleServerOperatorSecrets) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(secrets.PropertyBag) + + // FullyQualifiedDomainName + if secrets.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := secrets.FullyQualifiedDomainName.Copy() + destination.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + destination.FullyQualifiedDomainName = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServerOperatorSecrets interface (if implemented) to customize the conversion + var secretsAsAny any = secrets + if augmentedSecrets, ok := secretsAsAny.(augmentConversionForFlexibleServerOperatorSecrets); ok { + err := augmentedSecrets.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20230630.UserAssignedIdentityDetails // Information about the user assigned identity for the resource type UserAssignedIdentityDetails struct { @@ -535,6 +3495,77 @@ 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 +} + +type augmentConversionForFlexibleServerOperatorConfigMaps interface { + AssignPropertiesFrom(src *storage.FlexibleServerOperatorConfigMaps) error + AssignPropertiesTo(dst *storage.FlexibleServerOperatorConfigMaps) error +} + +type augmentConversionForFlexibleServerOperatorSecrets interface { + AssignPropertiesFrom(src *storage.FlexibleServerOperatorSecrets) error + AssignPropertiesTo(dst *storage.FlexibleServerOperatorSecrets) error +} + +type augmentConversionForUserAssignedIdentityDetails interface { + AssignPropertiesFrom(src *storage.UserAssignedIdentityDetails) error + AssignPropertiesTo(dst *storage.UserAssignedIdentityDetails) error +} + func init() { SchemeBuilder.Register(&FlexibleServer{}, &FlexibleServerList{}) } diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen_test.go b/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen_test.go index c018b17855..a5cfb6f71c 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_server_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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_Backup_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Backup to Backup via AssignProperties_To_Backup & AssignProperties_From_Backup returns original", + prop.ForAll(RunPropertyAssignmentTestForBackup, BackupGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForBackup tests if a specific instance of Backup can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForBackup(subject Backup) 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.Backup + err := copied.AssignProperties_To_Backup(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Backup + err = actual.AssignProperties_From_Backup(&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_Backup_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -78,6 +121,48 @@ func AddIndependentPropertyGeneratorsForBackup(gens map[string]gopter.Gen) { gens["GeoRedundantBackup"] = gen.PtrOf(gen.AlphaString()) } +func Test_Backup_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Backup_STATUS to Backup_STATUS via AssignProperties_To_Backup_STATUS & AssignProperties_From_Backup_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForBackup_STATUS, Backup_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForBackup_STATUS tests if a specific instance of Backup_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForBackup_STATUS(subject Backup_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.Backup_STATUS + err := copied.AssignProperties_To_Backup_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Backup_STATUS + err = actual.AssignProperties_From_Backup_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_Backup_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -140,6 +225,48 @@ func AddIndependentPropertyGeneratorsForBackup_STATUS(gens map[string]gopter.Gen gens["GeoRedundantBackup"] = gen.PtrOf(gen.AlphaString()) } +func Test_DataEncryption_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataEncryption to DataEncryption via AssignProperties_To_DataEncryption & AssignProperties_From_DataEncryption returns original", + prop.ForAll(RunPropertyAssignmentTestForDataEncryption, DataEncryptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataEncryption tests if a specific instance of DataEncryption can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForDataEncryption(subject DataEncryption) 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.DataEncryption + err := copied.AssignProperties_To_DataEncryption(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataEncryption + err = actual.AssignProperties_From_DataEncryption(&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_DataEncryption_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -202,6 +329,48 @@ func AddIndependentPropertyGeneratorsForDataEncryption(gens map[string]gopter.Ge gens["Type"] = gen.PtrOf(gen.AlphaString()) } +func Test_DataEncryption_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataEncryption_STATUS to DataEncryption_STATUS via AssignProperties_To_DataEncryption_STATUS & AssignProperties_From_DataEncryption_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForDataEncryption_STATUS, DataEncryption_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataEncryption_STATUS tests if a specific instance of DataEncryption_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForDataEncryption_STATUS(subject DataEncryption_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.DataEncryption_STATUS + err := copied.AssignProperties_To_DataEncryption_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataEncryption_STATUS + err = actual.AssignProperties_From_DataEncryption_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_DataEncryption_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -267,6 +436,91 @@ func AddIndependentPropertyGeneratorsForDataEncryption_STATUS(gens map[string]go gens["Type"] = gen.PtrOf(gen.AlphaString()) } +func Test_FlexibleServer_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 FlexibleServer to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServer, FlexibleServerGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServer tests if a specific instance of FlexibleServer round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServer(subject FlexibleServer) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServer + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServer + 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_FlexibleServer_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServer to FlexibleServer via AssignProperties_To_FlexibleServer & AssignProperties_From_FlexibleServer returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServer, FlexibleServerGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServer tests if a specific instance of FlexibleServer can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServer(subject FlexibleServer) 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.FlexibleServer + err := copied.AssignProperties_To_FlexibleServer(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServer + err = actual.AssignProperties_From_FlexibleServer(&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_FlexibleServer_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -328,6 +582,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServer(gens map[string]gopter.Gen) { gens["Status"] = FlexibleServer_STATUSGenerator() } +func Test_FlexibleServerOperatorConfigMaps_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServerOperatorConfigMaps to FlexibleServerOperatorConfigMaps via AssignProperties_To_FlexibleServerOperatorConfigMaps & AssignProperties_From_FlexibleServerOperatorConfigMaps returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps, FlexibleServerOperatorConfigMapsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps tests if a specific instance of FlexibleServerOperatorConfigMaps can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps(subject FlexibleServerOperatorConfigMaps) 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.FlexibleServerOperatorConfigMaps + err := copied.AssignProperties_To_FlexibleServerOperatorConfigMaps(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServerOperatorConfigMaps + err = actual.AssignProperties_From_FlexibleServerOperatorConfigMaps(&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_FlexibleServerOperatorConfigMaps_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -383,6 +679,48 @@ func FlexibleServerOperatorConfigMapsGenerator() gopter.Gen { return flexibleServerOperatorConfigMapsGenerator } +func Test_FlexibleServerOperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServerOperatorSecrets to FlexibleServerOperatorSecrets via AssignProperties_To_FlexibleServerOperatorSecrets & AssignProperties_From_FlexibleServerOperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServerOperatorSecrets, FlexibleServerOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServerOperatorSecrets tests if a specific instance of FlexibleServerOperatorSecrets can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServerOperatorSecrets(subject FlexibleServerOperatorSecrets) 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.FlexibleServerOperatorSecrets + err := copied.AssignProperties_To_FlexibleServerOperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServerOperatorSecrets + err = actual.AssignProperties_From_FlexibleServerOperatorSecrets(&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_FlexibleServerOperatorSecrets_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -438,6 +776,48 @@ func FlexibleServerOperatorSecretsGenerator() gopter.Gen { return flexibleServerOperatorSecretsGenerator } +func Test_FlexibleServerOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServerOperatorSpec to FlexibleServerOperatorSpec via AssignProperties_To_FlexibleServerOperatorSpec & AssignProperties_From_FlexibleServerOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServerOperatorSpec, FlexibleServerOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServerOperatorSpec tests if a specific instance of FlexibleServerOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServerOperatorSpec(subject FlexibleServerOperatorSpec) 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.FlexibleServerOperatorSpec + err := copied.AssignProperties_To_FlexibleServerOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServerOperatorSpec + err = actual.AssignProperties_From_FlexibleServerOperatorSpec(&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_FlexibleServerOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -500,6 +880,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec(gens map[string]g gens["Secrets"] = gen.PtrOf(FlexibleServerOperatorSecretsGenerator()) } +func Test_FlexibleServer_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServer_STATUS to FlexibleServer_STATUS via AssignProperties_To_FlexibleServer_STATUS & AssignProperties_From_FlexibleServer_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServer_STATUS, FlexibleServer_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServer_STATUS tests if a specific instance of FlexibleServer_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServer_STATUS(subject FlexibleServer_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.FlexibleServer_STATUS + err := copied.AssignProperties_To_FlexibleServer_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServer_STATUS + err = actual.AssignProperties_From_FlexibleServer_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_FlexibleServer_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -601,6 +1023,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(gens map[string]gopter gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_FlexibleServer_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServer_Spec to FlexibleServer_Spec via AssignProperties_To_FlexibleServer_Spec & AssignProperties_From_FlexibleServer_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServer_Spec, FlexibleServer_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServer_Spec tests if a specific instance of FlexibleServer_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServer_Spec(subject FlexibleServer_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.FlexibleServer_Spec + err := copied.AssignProperties_To_FlexibleServer_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServer_Spec + err = actual.AssignProperties_From_FlexibleServer_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_FlexibleServer_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -696,6 +1160,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.G gens["Storage"] = gen.PtrOf(StorageGenerator()) } +func Test_HighAvailability_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from HighAvailability to HighAvailability via AssignProperties_To_HighAvailability & AssignProperties_From_HighAvailability returns original", + prop.ForAll(RunPropertyAssignmentTestForHighAvailability, HighAvailabilityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForHighAvailability tests if a specific instance of HighAvailability can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForHighAvailability(subject HighAvailability) 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.HighAvailability + err := copied.AssignProperties_To_HighAvailability(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual HighAvailability + err = actual.AssignProperties_From_HighAvailability(&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_HighAvailability_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -757,6 +1263,48 @@ func AddIndependentPropertyGeneratorsForHighAvailability(gens map[string]gopter. gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) } +func Test_HighAvailability_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from HighAvailability_STATUS to HighAvailability_STATUS via AssignProperties_To_HighAvailability_STATUS & AssignProperties_From_HighAvailability_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForHighAvailability_STATUS, HighAvailability_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForHighAvailability_STATUS tests if a specific instance of HighAvailability_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForHighAvailability_STATUS(subject HighAvailability_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.HighAvailability_STATUS + err := copied.AssignProperties_To_HighAvailability_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual HighAvailability_STATUS + err = actual.AssignProperties_From_HighAvailability_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_HighAvailability_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -820,6 +1368,48 @@ func AddIndependentPropertyGeneratorsForHighAvailability_STATUS(gens map[string] gens["State"] = gen.PtrOf(gen.AlphaString()) } +func Test_ImportSourceProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ImportSourceProperties to ImportSourceProperties via AssignProperties_To_ImportSourceProperties & AssignProperties_From_ImportSourceProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForImportSourceProperties, ImportSourcePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForImportSourceProperties tests if a specific instance of ImportSourceProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForImportSourceProperties(subject ImportSourceProperties) 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.ImportSourceProperties + err := copied.AssignProperties_To_ImportSourceProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ImportSourceProperties + err = actual.AssignProperties_From_ImportSourceProperties(&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_ImportSourceProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -883,6 +1473,48 @@ func AddIndependentPropertyGeneratorsForImportSourceProperties(gens map[string]g gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) } +func Test_ImportSourceProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ImportSourceProperties_STATUS to ImportSourceProperties_STATUS via AssignProperties_To_ImportSourceProperties_STATUS & AssignProperties_From_ImportSourceProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForImportSourceProperties_STATUS, ImportSourceProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForImportSourceProperties_STATUS tests if a specific instance of ImportSourceProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForImportSourceProperties_STATUS(subject ImportSourceProperties_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.ImportSourceProperties_STATUS + err := copied.AssignProperties_To_ImportSourceProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ImportSourceProperties_STATUS + err = actual.AssignProperties_From_ImportSourceProperties_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_ImportSourceProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -946,6 +1578,48 @@ func AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(gens map[s gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) } +func Test_MaintenanceWindow_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MaintenanceWindow to MaintenanceWindow via AssignProperties_To_MaintenanceWindow & AssignProperties_From_MaintenanceWindow returns original", + prop.ForAll(RunPropertyAssignmentTestForMaintenanceWindow, MaintenanceWindowGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMaintenanceWindow tests if a specific instance of MaintenanceWindow can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMaintenanceWindow(subject MaintenanceWindow) 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.MaintenanceWindow + err := copied.AssignProperties_To_MaintenanceWindow(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MaintenanceWindow + err = actual.AssignProperties_From_MaintenanceWindow(&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_MaintenanceWindow_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1009,6 +1683,48 @@ func AddIndependentPropertyGeneratorsForMaintenanceWindow(gens map[string]gopter gens["StartMinute"] = gen.PtrOf(gen.Int()) } +func Test_MaintenanceWindow_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MaintenanceWindow_STATUS to MaintenanceWindow_STATUS via AssignProperties_To_MaintenanceWindow_STATUS & AssignProperties_From_MaintenanceWindow_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForMaintenanceWindow_STATUS, MaintenanceWindow_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMaintenanceWindow_STATUS tests if a specific instance of MaintenanceWindow_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMaintenanceWindow_STATUS(subject MaintenanceWindow_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.MaintenanceWindow_STATUS + err := copied.AssignProperties_To_MaintenanceWindow_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MaintenanceWindow_STATUS + err = actual.AssignProperties_From_MaintenanceWindow_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_MaintenanceWindow_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1073,6 +1789,48 @@ func AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(gens map[string gens["StartMinute"] = gen.PtrOf(gen.Int()) } +func Test_MySQLServerIdentity_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerIdentity to MySQLServerIdentity via AssignProperties_To_MySQLServerIdentity & AssignProperties_From_MySQLServerIdentity returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerIdentity, MySQLServerIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerIdentity tests if a specific instance of MySQLServerIdentity can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerIdentity(subject MySQLServerIdentity) 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.MySQLServerIdentity + err := copied.AssignProperties_To_MySQLServerIdentity(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerIdentity + err = actual.AssignProperties_From_MySQLServerIdentity(&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_MySQLServerIdentity_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1143,9 +1901,51 @@ func AddIndependentPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopt gens["Type"] = gen.PtrOf(gen.AlphaString()) } -// AddRelatedPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators -func AddRelatedPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { - gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +// AddRelatedPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_MySQLServerIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerIdentity_STATUS to MySQLServerIdentity_STATUS via AssignProperties_To_MySQLServerIdentity_STATUS & AssignProperties_From_MySQLServerIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerIdentity_STATUS, MySQLServerIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerIdentity_STATUS tests if a specific instance of MySQLServerIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerIdentity_STATUS(subject MySQLServerIdentity_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.MySQLServerIdentity_STATUS + err := copied.AssignProperties_To_MySQLServerIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerIdentity_STATUS + err = actual.AssignProperties_From_MySQLServerIdentity_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_MySQLServerIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { @@ -1211,6 +2011,48 @@ func AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(gens map[stri gens["Type"] = gen.PtrOf(gen.AlphaString()) } +func Test_MySQLServerSku_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerSku to MySQLServerSku via AssignProperties_To_MySQLServerSku & AssignProperties_From_MySQLServerSku returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerSku, MySQLServerSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerSku tests if a specific instance of MySQLServerSku can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerSku(subject MySQLServerSku) 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.MySQLServerSku + err := copied.AssignProperties_To_MySQLServerSku(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerSku + err = actual.AssignProperties_From_MySQLServerSku(&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_MySQLServerSku_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1272,6 +2114,48 @@ func AddIndependentPropertyGeneratorsForMySQLServerSku(gens map[string]gopter.Ge gens["Tier"] = gen.PtrOf(gen.AlphaString()) } +func Test_MySQLServerSku_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerSku_STATUS to MySQLServerSku_STATUS via AssignProperties_To_MySQLServerSku_STATUS & AssignProperties_From_MySQLServerSku_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerSku_STATUS, MySQLServerSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerSku_STATUS tests if a specific instance of MySQLServerSku_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerSku_STATUS(subject MySQLServerSku_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.MySQLServerSku_STATUS + err := copied.AssignProperties_To_MySQLServerSku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerSku_STATUS + err = actual.AssignProperties_From_MySQLServerSku_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_MySQLServerSku_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1334,6 +2218,48 @@ func AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(gens map[string]go gens["Tier"] = gen.PtrOf(gen.AlphaString()) } +func Test_Network_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Network to Network via AssignProperties_To_Network & AssignProperties_From_Network returns original", + prop.ForAll(RunPropertyAssignmentTestForNetwork, NetworkGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetwork tests if a specific instance of Network can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetwork(subject Network) 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.Network + err := copied.AssignProperties_To_Network(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Network + err = actual.AssignProperties_From_Network(&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_Network_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1394,6 +2320,48 @@ func AddIndependentPropertyGeneratorsForNetwork(gens map[string]gopter.Gen) { gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) } +func Test_Network_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Network_STATUS to Network_STATUS via AssignProperties_To_Network_STATUS & AssignProperties_From_Network_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForNetwork_STATUS, Network_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetwork_STATUS tests if a specific instance of Network_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetwork_STATUS(subject Network_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.Network_STATUS + err := copied.AssignProperties_To_Network_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Network_STATUS + err = actual.AssignProperties_From_Network_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_Network_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1456,6 +2424,48 @@ func AddIndependentPropertyGeneratorsForNetwork_STATUS(gens map[string]gopter.Ge gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) } +func Test_PrivateEndpointConnection_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnection_STATUS to PrivateEndpointConnection_STATUS via AssignProperties_To_PrivateEndpointConnection_STATUS & AssignProperties_From_PrivateEndpointConnection_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS tests if a specific instance of PrivateEndpointConnection_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_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.PrivateEndpointConnection_STATUS + err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnection_STATUS + err = actual.AssignProperties_From_PrivateEndpointConnection_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_PrivateEndpointConnection_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1517,6 +2527,48 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens ma gens["Id"] = gen.PtrOf(gen.AlphaString()) } +func Test_Storage_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Storage to Storage via AssignProperties_To_Storage & AssignProperties_From_Storage returns original", + prop.ForAll(RunPropertyAssignmentTestForStorage, StorageGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForStorage tests if a specific instance of Storage can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForStorage(subject Storage) 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.Storage + err := copied.AssignProperties_To_Storage(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Storage + err = actual.AssignProperties_From_Storage(&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_Storage_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1581,6 +2633,48 @@ func AddIndependentPropertyGeneratorsForStorage(gens map[string]gopter.Gen) { gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) } +func Test_Storage_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Storage_STATUS to Storage_STATUS via AssignProperties_To_Storage_STATUS & AssignProperties_From_Storage_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForStorage_STATUS, Storage_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForStorage_STATUS tests if a specific instance of Storage_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForStorage_STATUS(subject Storage_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.Storage_STATUS + err := copied.AssignProperties_To_Storage_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Storage_STATUS + err = actual.AssignProperties_From_Storage_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_Storage_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1646,6 +2740,48 @@ func AddIndependentPropertyGeneratorsForStorage_STATUS(gens map[string]gopter.Ge gens["StorageSku"] = gen.PtrOf(gen.AlphaString()) } +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() @@ -1711,6 +2847,48 @@ func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter gens["LastModifiedByType"] = gen.PtrOf(gen.AlphaString()) } +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() diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen.go index f5b754b726..cd08b00449 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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=dbformysql.azure.com,resources=flexibleserversadministrators,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversadministrators/status,flexibleserversadministrators/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 (administrator *FlexibleServersAdministrator) SetConditions(conditions cond administrator.Status.Conditions = conditions } +var _ conversion.Convertible = &FlexibleServersAdministrator{} + +// ConvertFrom populates our FlexibleServersAdministrator from the provided hub FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersAdministrator) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersAdministrator but received %T instead", hub) + } + + return administrator.AssignProperties_From_FlexibleServersAdministrator(source) +} + +// ConvertTo populates the provided hub FlexibleServersAdministrator from our FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersAdministrator) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersAdministrator but received %T instead", hub) + } + + return administrator.AssignProperties_To_FlexibleServersAdministrator(destination) +} + var _ configmaps.Exporter = &FlexibleServersAdministrator{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -142,8 +163,75 @@ func (administrator *FlexibleServersAdministrator) SetStatus(status genruntime.C return nil } -// Hub marks that this FlexibleServersAdministrator is the hub type for conversion -func (administrator *FlexibleServersAdministrator) Hub() {} +// AssignProperties_From_FlexibleServersAdministrator populates our FlexibleServersAdministrator from the provided source FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) AssignProperties_From_FlexibleServersAdministrator(source *storage.FlexibleServersAdministrator) error { + + // ObjectMeta + administrator.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersAdministrator_Spec + err := spec.AssignProperties_From_FlexibleServersAdministrator_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersAdministrator_Spec() to populate field Spec") + } + administrator.Spec = spec + + // Status + var status FlexibleServersAdministrator_STATUS + err = status.AssignProperties_From_FlexibleServersAdministrator_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersAdministrator_STATUS() to populate field Status") + } + administrator.Status = status + + // Invoke the augmentConversionForFlexibleServersAdministrator interface (if implemented) to customize the conversion + var administratorAsAny any = administrator + if augmentedAdministrator, ok := administratorAsAny.(augmentConversionForFlexibleServersAdministrator); ok { + err := augmentedAdministrator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministrator populates the provided destination FlexibleServersAdministrator from our FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) AssignProperties_To_FlexibleServersAdministrator(destination *storage.FlexibleServersAdministrator) error { + + // ObjectMeta + destination.ObjectMeta = *administrator.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersAdministrator_Spec + err := administrator.Spec.AssignProperties_To_FlexibleServersAdministrator_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersAdministrator_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersAdministrator_STATUS + err = administrator.Status.AssignProperties_To_FlexibleServersAdministrator_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersAdministrator_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForFlexibleServersAdministrator interface (if implemented) to customize the conversion + var administratorAsAny any = administrator + if augmentedAdministrator, ok := administratorAsAny.(augmentConversionForFlexibleServersAdministrator); ok { + err := augmentedAdministrator.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 (administrator *FlexibleServersAdministrator) OriginalGVK() *schema.GroupVersionKind { @@ -165,6 +253,11 @@ type FlexibleServersAdministratorList struct { Items []FlexibleServersAdministrator `json:"items"` } +type augmentConversionForFlexibleServersAdministrator interface { + AssignPropertiesFrom(src *storage.FlexibleServersAdministrator) error + AssignPropertiesTo(dst *storage.FlexibleServersAdministrator) error +} + // Storage version of v1api20230630.FlexibleServersAdministrator_Spec type FlexibleServersAdministrator_Spec struct { AdministratorType *string `json:"administratorType,omitempty"` @@ -191,20 +284,218 @@ var _ genruntime.ConvertibleSpec = &FlexibleServersAdministrator_Spec{} // ConvertSpecFrom populates our FlexibleServersAdministrator_Spec from the provided source func (administrator *FlexibleServersAdministrator_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == administrator { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.FlexibleServersAdministrator_Spec) + if ok { + // Populate our instance from source + return administrator.AssignProperties_From_FlexibleServersAdministrator_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersAdministrator_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(administrator) + // Update our instance from src + err = administrator.AssignProperties_From_FlexibleServersAdministrator_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our FlexibleServersAdministrator_Spec func (administrator *FlexibleServersAdministrator_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == administrator { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.FlexibleServersAdministrator_Spec) + if ok { + // Populate destination from our instance + return administrator.AssignProperties_To_FlexibleServersAdministrator_Spec(dst) } - return destination.ConvertSpecFrom(administrator) + // Convert to an intermediate form + dst = &storage.FlexibleServersAdministrator_Spec{} + err := administrator.AssignProperties_To_FlexibleServersAdministrator_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_FlexibleServersAdministrator_Spec populates our FlexibleServersAdministrator_Spec from the provided source FlexibleServersAdministrator_Spec +func (administrator *FlexibleServersAdministrator_Spec) AssignProperties_From_FlexibleServersAdministrator_Spec(source *storage.FlexibleServersAdministrator_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AdministratorType + administrator.AdministratorType = genruntime.ClonePointerToString(source.AdministratorType) + + // IdentityResourceReference + if source.IdentityResourceReference != nil { + identityResourceReference := source.IdentityResourceReference.Copy() + administrator.IdentityResourceReference = &identityResourceReference + } else { + administrator.IdentityResourceReference = nil + } + + // Login + administrator.Login = genruntime.ClonePointerToString(source.Login) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersAdministratorOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersAdministratorOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersAdministratorOperatorSpec() to populate field OperatorSpec") + } + administrator.OperatorSpec = &operatorSpec + } else { + administrator.OperatorSpec = nil + } + + // OriginalVersion + administrator.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + administrator.Owner = &owner + } else { + administrator.Owner = nil + } + + // Sid + administrator.Sid = genruntime.ClonePointerToString(source.Sid) + + // SidFromConfig + if source.SidFromConfig != nil { + sidFromConfig := source.SidFromConfig.Copy() + administrator.SidFromConfig = &sidFromConfig + } else { + administrator.SidFromConfig = nil + } + + // TenantId + administrator.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // TenantIdFromConfig + if source.TenantIdFromConfig != nil { + tenantIdFromConfig := source.TenantIdFromConfig.Copy() + administrator.TenantIdFromConfig = &tenantIdFromConfig + } else { + administrator.TenantIdFromConfig = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + administrator.PropertyBag = propertyBag + } else { + administrator.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersAdministrator_Spec interface (if implemented) to customize the conversion + var administratorAsAny any = administrator + if augmentedAdministrator, ok := administratorAsAny.(augmentConversionForFlexibleServersAdministrator_Spec); ok { + err := augmentedAdministrator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministrator_Spec populates the provided destination FlexibleServersAdministrator_Spec from our FlexibleServersAdministrator_Spec +func (administrator *FlexibleServersAdministrator_Spec) AssignProperties_To_FlexibleServersAdministrator_Spec(destination *storage.FlexibleServersAdministrator_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(administrator.PropertyBag) + + // AdministratorType + destination.AdministratorType = genruntime.ClonePointerToString(administrator.AdministratorType) + + // IdentityResourceReference + if administrator.IdentityResourceReference != nil { + identityResourceReference := administrator.IdentityResourceReference.Copy() + destination.IdentityResourceReference = &identityResourceReference + } else { + destination.IdentityResourceReference = nil + } + + // Login + destination.Login = genruntime.ClonePointerToString(administrator.Login) + + // OperatorSpec + if administrator.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersAdministratorOperatorSpec + err := administrator.OperatorSpec.AssignProperties_To_FlexibleServersAdministratorOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersAdministratorOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = administrator.OriginalVersion + + // Owner + if administrator.Owner != nil { + owner := administrator.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Sid + destination.Sid = genruntime.ClonePointerToString(administrator.Sid) + + // SidFromConfig + if administrator.SidFromConfig != nil { + sidFromConfig := administrator.SidFromConfig.Copy() + destination.SidFromConfig = &sidFromConfig + } else { + destination.SidFromConfig = nil + } + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(administrator.TenantId) + + // TenantIdFromConfig + if administrator.TenantIdFromConfig != nil { + tenantIdFromConfig := administrator.TenantIdFromConfig.Copy() + destination.TenantIdFromConfig = &tenantIdFromConfig + } else { + destination.TenantIdFromConfig = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersAdministrator_Spec interface (if implemented) to customize the conversion + var administratorAsAny any = administrator + if augmentedAdministrator, ok := administratorAsAny.(augmentConversionForFlexibleServersAdministrator_Spec); ok { + err := augmentedAdministrator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20230630.FlexibleServersAdministrator_STATUS @@ -226,20 +517,188 @@ var _ genruntime.ConvertibleStatus = &FlexibleServersAdministrator_STATUS{} // ConvertStatusFrom populates our FlexibleServersAdministrator_STATUS from the provided source func (administrator *FlexibleServersAdministrator_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == administrator { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.FlexibleServersAdministrator_STATUS) + if ok { + // Populate our instance from source + return administrator.AssignProperties_From_FlexibleServersAdministrator_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersAdministrator_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = administrator.AssignProperties_From_FlexibleServersAdministrator_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") } - return source.ConvertStatusTo(administrator) + return nil } // ConvertStatusTo populates the provided destination from our FlexibleServersAdministrator_STATUS func (administrator *FlexibleServersAdministrator_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == administrator { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.FlexibleServersAdministrator_STATUS) + if ok { + // Populate destination from our instance + return administrator.AssignProperties_To_FlexibleServersAdministrator_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersAdministrator_STATUS{} + err := administrator.AssignProperties_To_FlexibleServersAdministrator_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 +} + +// AssignProperties_From_FlexibleServersAdministrator_STATUS populates our FlexibleServersAdministrator_STATUS from the provided source FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_STATUS) AssignProperties_From_FlexibleServersAdministrator_STATUS(source *storage.FlexibleServersAdministrator_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AdministratorType + administrator.AdministratorType = genruntime.ClonePointerToString(source.AdministratorType) + + // Conditions + administrator.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + administrator.Id = genruntime.ClonePointerToString(source.Id) + + // IdentityResourceId + administrator.IdentityResourceId = genruntime.ClonePointerToString(source.IdentityResourceId) + + // Login + administrator.Login = genruntime.ClonePointerToString(source.Login) + + // Name + administrator.Name = genruntime.ClonePointerToString(source.Name) + + // Sid + administrator.Sid = genruntime.ClonePointerToString(source.Sid) + + // 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") + } + administrator.SystemData = &systemDatum + } else { + administrator.SystemData = nil + } + + // TenantId + administrator.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // Type + administrator.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + administrator.PropertyBag = propertyBag + } else { + administrator.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersAdministrator_STATUS interface (if implemented) to customize the conversion + var administratorAsAny any = administrator + if augmentedAdministrator, ok := administratorAsAny.(augmentConversionForFlexibleServersAdministrator_STATUS); ok { + err := augmentedAdministrator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministrator_STATUS populates the provided destination FlexibleServersAdministrator_STATUS from our FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_STATUS) AssignProperties_To_FlexibleServersAdministrator_STATUS(destination *storage.FlexibleServersAdministrator_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(administrator.PropertyBag) + + // AdministratorType + destination.AdministratorType = genruntime.ClonePointerToString(administrator.AdministratorType) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(administrator.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(administrator.Id) + + // IdentityResourceId + destination.IdentityResourceId = genruntime.ClonePointerToString(administrator.IdentityResourceId) + + // Login + destination.Login = genruntime.ClonePointerToString(administrator.Login) + + // Name + destination.Name = genruntime.ClonePointerToString(administrator.Name) + + // Sid + destination.Sid = genruntime.ClonePointerToString(administrator.Sid) + + // SystemData + if administrator.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := administrator.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 + } + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(administrator.TenantId) + + // Type + destination.Type = genruntime.ClonePointerToString(administrator.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersAdministrator_STATUS interface (if implemented) to customize the conversion + var administratorAsAny any = administrator + if augmentedAdministrator, ok := administratorAsAny.(augmentConversionForFlexibleServersAdministrator_STATUS); ok { + err := augmentedAdministrator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } } - return destination.ConvertStatusFrom(administrator) + // No error + return nil +} + +type augmentConversionForFlexibleServersAdministrator_Spec interface { + AssignPropertiesFrom(src *storage.FlexibleServersAdministrator_Spec) error + AssignPropertiesTo(dst *storage.FlexibleServersAdministrator_Spec) error +} + +type augmentConversionForFlexibleServersAdministrator_STATUS interface { + AssignPropertiesFrom(src *storage.FlexibleServersAdministrator_STATUS) error + AssignPropertiesTo(dst *storage.FlexibleServersAdministrator_STATUS) error } // Storage version of v1api20230630.FlexibleServersAdministratorOperatorSpec @@ -250,6 +709,133 @@ type FlexibleServersAdministratorOperatorSpec struct { SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` } +// AssignProperties_From_FlexibleServersAdministratorOperatorSpec populates our FlexibleServersAdministratorOperatorSpec from the provided source FlexibleServersAdministratorOperatorSpec +func (operator *FlexibleServersAdministratorOperatorSpec) AssignProperties_From_FlexibleServersAdministratorOperatorSpec(source *storage.FlexibleServersAdministratorOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + operator.PropertyBag = propertyBag + } else { + operator.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersAdministratorOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersAdministratorOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministratorOperatorSpec populates the provided destination FlexibleServersAdministratorOperatorSpec from our FlexibleServersAdministratorOperatorSpec +func (operator *FlexibleServersAdministratorOperatorSpec) AssignProperties_To_FlexibleServersAdministratorOperatorSpec(destination *storage.FlexibleServersAdministratorOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersAdministratorOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersAdministratorOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServersAdministratorOperatorSpec interface { + AssignPropertiesFrom(src *storage.FlexibleServersAdministratorOperatorSpec) error + AssignPropertiesTo(dst *storage.FlexibleServersAdministratorOperatorSpec) error +} + func init() { SchemeBuilder.Register(&FlexibleServersAdministrator{}, &FlexibleServersAdministratorList{}) } diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen_test.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen_test.go index c06cdd5710..af5dbaf299 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_administrator_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -17,6 +18,91 @@ import ( "testing" ) +func Test_FlexibleServersAdministrator_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 FlexibleServersAdministrator to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersAdministrator, FlexibleServersAdministratorGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersAdministrator tests if a specific instance of FlexibleServersAdministrator round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersAdministrator(subject FlexibleServersAdministrator) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersAdministrator + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersAdministrator + 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_FlexibleServersAdministrator_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministrator to FlexibleServersAdministrator via AssignProperties_To_FlexibleServersAdministrator & AssignProperties_From_FlexibleServersAdministrator returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministrator, FlexibleServersAdministratorGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministrator tests if a specific instance of FlexibleServersAdministrator can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministrator(subject FlexibleServersAdministrator) 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.FlexibleServersAdministrator + err := copied.AssignProperties_To_FlexibleServersAdministrator(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministrator + err = actual.AssignProperties_From_FlexibleServersAdministrator(&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_FlexibleServersAdministrator_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -79,6 +165,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator(gens map[string gens["Status"] = FlexibleServersAdministrator_STATUSGenerator() } +func Test_FlexibleServersAdministratorOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministratorOperatorSpec to FlexibleServersAdministratorOperatorSpec via AssignProperties_To_FlexibleServersAdministratorOperatorSpec & AssignProperties_From_FlexibleServersAdministratorOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec, FlexibleServersAdministratorOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec tests if a specific instance of FlexibleServersAdministratorOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec(subject FlexibleServersAdministratorOperatorSpec) 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.FlexibleServersAdministratorOperatorSpec + err := copied.AssignProperties_To_FlexibleServersAdministratorOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministratorOperatorSpec + err = actual.AssignProperties_From_FlexibleServersAdministratorOperatorSpec(&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_FlexibleServersAdministratorOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -134,6 +262,48 @@ func FlexibleServersAdministratorOperatorSpecGenerator() gopter.Gen { return flexibleServersAdministratorOperatorSpecGenerator } +func Test_FlexibleServersAdministrator_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministrator_STATUS to FlexibleServersAdministrator_STATUS via AssignProperties_To_FlexibleServersAdministrator_STATUS & AssignProperties_From_FlexibleServersAdministrator_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS, FlexibleServersAdministrator_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS tests if a specific instance of FlexibleServersAdministrator_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS(subject FlexibleServersAdministrator_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.FlexibleServersAdministrator_STATUS + err := copied.AssignProperties_To_FlexibleServersAdministrator_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministrator_STATUS + err = actual.AssignProperties_From_FlexibleServersAdministrator_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_FlexibleServersAdministrator_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -216,6 +386,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_FlexibleServersAdministrator_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministrator_Spec to FlexibleServersAdministrator_Spec via AssignProperties_To_FlexibleServersAdministrator_Spec & AssignProperties_From_FlexibleServersAdministrator_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec, FlexibleServersAdministrator_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec tests if a specific instance of FlexibleServersAdministrator_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec(subject FlexibleServersAdministrator_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.FlexibleServersAdministrator_Spec + err := copied.AssignProperties_To_FlexibleServersAdministrator_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministrator_Spec + err = actual.AssignProperties_From_FlexibleServersAdministrator_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_FlexibleServersAdministrator_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen.go index 1e11d8ed2d..2825cef03d 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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=dbformysql.azure.com,resources=flexibleserversconfigurations,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversconfigurations/status,flexibleserversconfigurations/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 (configuration *FlexibleServersConfiguration) SetConditions(conditions cond configuration.Status.Conditions = conditions } +var _ conversion.Convertible = &FlexibleServersConfiguration{} + +// ConvertFrom populates our FlexibleServersConfiguration from the provided hub FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersConfiguration) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersConfiguration but received %T instead", hub) + } + + return configuration.AssignProperties_From_FlexibleServersConfiguration(source) +} + +// ConvertTo populates the provided hub FlexibleServersConfiguration from our FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersConfiguration) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersConfiguration but received %T instead", hub) + } + + return configuration.AssignProperties_To_FlexibleServersConfiguration(destination) +} + var _ configmaps.Exporter = &FlexibleServersConfiguration{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -141,8 +162,75 @@ func (configuration *FlexibleServersConfiguration) SetStatus(status genruntime.C return nil } -// Hub marks that this FlexibleServersConfiguration is the hub type for conversion -func (configuration *FlexibleServersConfiguration) Hub() {} +// AssignProperties_From_FlexibleServersConfiguration populates our FlexibleServersConfiguration from the provided source FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) AssignProperties_From_FlexibleServersConfiguration(source *storage.FlexibleServersConfiguration) error { + + // ObjectMeta + configuration.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersConfiguration_Spec + err := spec.AssignProperties_From_FlexibleServersConfiguration_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersConfiguration_Spec() to populate field Spec") + } + configuration.Spec = spec + + // Status + var status FlexibleServersConfiguration_STATUS + err = status.AssignProperties_From_FlexibleServersConfiguration_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersConfiguration_STATUS() to populate field Status") + } + configuration.Status = status + + // Invoke the augmentConversionForFlexibleServersConfiguration interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForFlexibleServersConfiguration); ok { + err := augmentedConfiguration.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfiguration populates the provided destination FlexibleServersConfiguration from our FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) AssignProperties_To_FlexibleServersConfiguration(destination *storage.FlexibleServersConfiguration) error { + + // ObjectMeta + destination.ObjectMeta = *configuration.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersConfiguration_Spec + err := configuration.Spec.AssignProperties_To_FlexibleServersConfiguration_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersConfiguration_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersConfiguration_STATUS + err = configuration.Status.AssignProperties_To_FlexibleServersConfiguration_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersConfiguration_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForFlexibleServersConfiguration interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForFlexibleServersConfiguration); ok { + err := augmentedConfiguration.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 (configuration *FlexibleServersConfiguration) OriginalGVK() *schema.GroupVersionKind { @@ -164,6 +252,11 @@ type FlexibleServersConfigurationList struct { Items []FlexibleServersConfiguration `json:"items"` } +type augmentConversionForFlexibleServersConfiguration interface { + AssignPropertiesFrom(src *storage.FlexibleServersConfiguration) error + AssignPropertiesTo(dst *storage.FlexibleServersConfiguration) error +} + // Storage version of v1api20230630.FlexibleServersConfiguration_Spec type FlexibleServersConfiguration_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 @@ -187,20 +280,170 @@ var _ genruntime.ConvertibleSpec = &FlexibleServersConfiguration_Spec{} // ConvertSpecFrom populates our FlexibleServersConfiguration_Spec from the provided source func (configuration *FlexibleServersConfiguration_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == configuration { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.FlexibleServersConfiguration_Spec) + if ok { + // Populate our instance from source + return configuration.AssignProperties_From_FlexibleServersConfiguration_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersConfiguration_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(configuration) + // Update our instance from src + err = configuration.AssignProperties_From_FlexibleServersConfiguration_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our FlexibleServersConfiguration_Spec func (configuration *FlexibleServersConfiguration_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == configuration { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.FlexibleServersConfiguration_Spec) + if ok { + // Populate destination from our instance + return configuration.AssignProperties_To_FlexibleServersConfiguration_Spec(dst) } - return destination.ConvertSpecFrom(configuration) + // Convert to an intermediate form + dst = &storage.FlexibleServersConfiguration_Spec{} + err := configuration.AssignProperties_To_FlexibleServersConfiguration_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_FlexibleServersConfiguration_Spec populates our FlexibleServersConfiguration_Spec from the provided source FlexibleServersConfiguration_Spec +func (configuration *FlexibleServersConfiguration_Spec) AssignProperties_From_FlexibleServersConfiguration_Spec(source *storage.FlexibleServersConfiguration_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AzureName + configuration.AzureName = source.AzureName + + // CurrentValue + configuration.CurrentValue = genruntime.ClonePointerToString(source.CurrentValue) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersConfigurationOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersConfigurationOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersConfigurationOperatorSpec() to populate field OperatorSpec") + } + configuration.OperatorSpec = &operatorSpec + } else { + configuration.OperatorSpec = nil + } + + // OriginalVersion + configuration.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + configuration.Owner = &owner + } else { + configuration.Owner = nil + } + + // Source + configuration.Source = genruntime.ClonePointerToString(source.Source) + + // Value + configuration.Value = genruntime.ClonePointerToString(source.Value) + + // Update the property bag + if len(propertyBag) > 0 { + configuration.PropertyBag = propertyBag + } else { + configuration.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersConfiguration_Spec interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForFlexibleServersConfiguration_Spec); ok { + err := augmentedConfiguration.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfiguration_Spec populates the provided destination FlexibleServersConfiguration_Spec from our FlexibleServersConfiguration_Spec +func (configuration *FlexibleServersConfiguration_Spec) AssignProperties_To_FlexibleServersConfiguration_Spec(destination *storage.FlexibleServersConfiguration_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(configuration.PropertyBag) + + // AzureName + destination.AzureName = configuration.AzureName + + // CurrentValue + destination.CurrentValue = genruntime.ClonePointerToString(configuration.CurrentValue) + + // OperatorSpec + if configuration.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersConfigurationOperatorSpec + err := configuration.OperatorSpec.AssignProperties_To_FlexibleServersConfigurationOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersConfigurationOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = configuration.OriginalVersion + + // Owner + if configuration.Owner != nil { + owner := configuration.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Source + destination.Source = genruntime.ClonePointerToString(configuration.Source) + + // Value + destination.Value = genruntime.ClonePointerToString(configuration.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersConfiguration_Spec interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForFlexibleServersConfiguration_Spec); ok { + err := augmentedConfiguration.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20230630.FlexibleServersConfiguration_STATUS @@ -228,20 +471,224 @@ var _ genruntime.ConvertibleStatus = &FlexibleServersConfiguration_STATUS{} // ConvertStatusFrom populates our FlexibleServersConfiguration_STATUS from the provided source func (configuration *FlexibleServersConfiguration_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == configuration { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.FlexibleServersConfiguration_STATUS) + if ok { + // Populate our instance from source + return configuration.AssignProperties_From_FlexibleServersConfiguration_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersConfiguration_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") } - return source.ConvertStatusTo(configuration) + // Update our instance from src + err = configuration.AssignProperties_From_FlexibleServersConfiguration_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil } // ConvertStatusTo populates the provided destination from our FlexibleServersConfiguration_STATUS func (configuration *FlexibleServersConfiguration_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == configuration { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.FlexibleServersConfiguration_STATUS) + if ok { + // Populate destination from our instance + return configuration.AssignProperties_To_FlexibleServersConfiguration_STATUS(dst) } - return destination.ConvertStatusFrom(configuration) + // Convert to an intermediate form + dst = &storage.FlexibleServersConfiguration_STATUS{} + err := configuration.AssignProperties_To_FlexibleServersConfiguration_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 +} + +// AssignProperties_From_FlexibleServersConfiguration_STATUS populates our FlexibleServersConfiguration_STATUS from the provided source FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_STATUS) AssignProperties_From_FlexibleServersConfiguration_STATUS(source *storage.FlexibleServersConfiguration_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AllowedValues + configuration.AllowedValues = genruntime.ClonePointerToString(source.AllowedValues) + + // Conditions + configuration.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CurrentValue + configuration.CurrentValue = genruntime.ClonePointerToString(source.CurrentValue) + + // DataType + configuration.DataType = genruntime.ClonePointerToString(source.DataType) + + // DefaultValue + configuration.DefaultValue = genruntime.ClonePointerToString(source.DefaultValue) + + // Description + configuration.Description = genruntime.ClonePointerToString(source.Description) + + // DocumentationLink + configuration.DocumentationLink = genruntime.ClonePointerToString(source.DocumentationLink) + + // Id + configuration.Id = genruntime.ClonePointerToString(source.Id) + + // IsConfigPendingRestart + configuration.IsConfigPendingRestart = genruntime.ClonePointerToString(source.IsConfigPendingRestart) + + // IsDynamicConfig + configuration.IsDynamicConfig = genruntime.ClonePointerToString(source.IsDynamicConfig) + + // IsReadOnly + configuration.IsReadOnly = genruntime.ClonePointerToString(source.IsReadOnly) + + // Name + configuration.Name = genruntime.ClonePointerToString(source.Name) + + // Source + configuration.Source = genruntime.ClonePointerToString(source.Source) + + // 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") + } + configuration.SystemData = &systemDatum + } else { + configuration.SystemData = nil + } + + // Type + configuration.Type = genruntime.ClonePointerToString(source.Type) + + // Value + configuration.Value = genruntime.ClonePointerToString(source.Value) + + // Update the property bag + if len(propertyBag) > 0 { + configuration.PropertyBag = propertyBag + } else { + configuration.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersConfiguration_STATUS interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForFlexibleServersConfiguration_STATUS); ok { + err := augmentedConfiguration.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfiguration_STATUS populates the provided destination FlexibleServersConfiguration_STATUS from our FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_STATUS) AssignProperties_To_FlexibleServersConfiguration_STATUS(destination *storage.FlexibleServersConfiguration_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(configuration.PropertyBag) + + // AllowedValues + destination.AllowedValues = genruntime.ClonePointerToString(configuration.AllowedValues) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(configuration.Conditions) + + // CurrentValue + destination.CurrentValue = genruntime.ClonePointerToString(configuration.CurrentValue) + + // DataType + destination.DataType = genruntime.ClonePointerToString(configuration.DataType) + + // DefaultValue + destination.DefaultValue = genruntime.ClonePointerToString(configuration.DefaultValue) + + // Description + destination.Description = genruntime.ClonePointerToString(configuration.Description) + + // DocumentationLink + destination.DocumentationLink = genruntime.ClonePointerToString(configuration.DocumentationLink) + + // Id + destination.Id = genruntime.ClonePointerToString(configuration.Id) + + // IsConfigPendingRestart + destination.IsConfigPendingRestart = genruntime.ClonePointerToString(configuration.IsConfigPendingRestart) + + // IsDynamicConfig + destination.IsDynamicConfig = genruntime.ClonePointerToString(configuration.IsDynamicConfig) + + // IsReadOnly + destination.IsReadOnly = genruntime.ClonePointerToString(configuration.IsReadOnly) + + // Name + destination.Name = genruntime.ClonePointerToString(configuration.Name) + + // Source + destination.Source = genruntime.ClonePointerToString(configuration.Source) + + // SystemData + if configuration.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := configuration.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(configuration.Type) + + // Value + destination.Value = genruntime.ClonePointerToString(configuration.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersConfiguration_STATUS interface (if implemented) to customize the conversion + var configurationAsAny any = configuration + if augmentedConfiguration, ok := configurationAsAny.(augmentConversionForFlexibleServersConfiguration_STATUS); ok { + err := augmentedConfiguration.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServersConfiguration_Spec interface { + AssignPropertiesFrom(src *storage.FlexibleServersConfiguration_Spec) error + AssignPropertiesTo(dst *storage.FlexibleServersConfiguration_Spec) error +} + +type augmentConversionForFlexibleServersConfiguration_STATUS interface { + AssignPropertiesFrom(src *storage.FlexibleServersConfiguration_STATUS) error + AssignPropertiesTo(dst *storage.FlexibleServersConfiguration_STATUS) error } // Storage version of v1api20230630.FlexibleServersConfigurationOperatorSpec @@ -252,6 +699,133 @@ type FlexibleServersConfigurationOperatorSpec struct { SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` } +// AssignProperties_From_FlexibleServersConfigurationOperatorSpec populates our FlexibleServersConfigurationOperatorSpec from the provided source FlexibleServersConfigurationOperatorSpec +func (operator *FlexibleServersConfigurationOperatorSpec) AssignProperties_From_FlexibleServersConfigurationOperatorSpec(source *storage.FlexibleServersConfigurationOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + operator.PropertyBag = propertyBag + } else { + operator.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersConfigurationOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersConfigurationOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfigurationOperatorSpec populates the provided destination FlexibleServersConfigurationOperatorSpec from our FlexibleServersConfigurationOperatorSpec +func (operator *FlexibleServersConfigurationOperatorSpec) AssignProperties_To_FlexibleServersConfigurationOperatorSpec(destination *storage.FlexibleServersConfigurationOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersConfigurationOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersConfigurationOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServersConfigurationOperatorSpec interface { + AssignPropertiesFrom(src *storage.FlexibleServersConfigurationOperatorSpec) error + AssignPropertiesTo(dst *storage.FlexibleServersConfigurationOperatorSpec) error +} + func init() { SchemeBuilder.Register(&FlexibleServersConfiguration{}, &FlexibleServersConfigurationList{}) } diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen_test.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen_test.go index e6fa648785..ff01557276 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_configuration_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -17,6 +18,91 @@ import ( "testing" ) +func Test_FlexibleServersConfiguration_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 FlexibleServersConfiguration to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersConfiguration, FlexibleServersConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersConfiguration tests if a specific instance of FlexibleServersConfiguration round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersConfiguration(subject FlexibleServersConfiguration) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersConfiguration + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersConfiguration + 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_FlexibleServersConfiguration_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfiguration to FlexibleServersConfiguration via AssignProperties_To_FlexibleServersConfiguration & AssignProperties_From_FlexibleServersConfiguration returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfiguration, FlexibleServersConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfiguration tests if a specific instance of FlexibleServersConfiguration can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfiguration(subject FlexibleServersConfiguration) 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.FlexibleServersConfiguration + err := copied.AssignProperties_To_FlexibleServersConfiguration(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfiguration + err = actual.AssignProperties_From_FlexibleServersConfiguration(&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_FlexibleServersConfiguration_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -79,6 +165,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration(gens map[string gens["Status"] = FlexibleServersConfiguration_STATUSGenerator() } +func Test_FlexibleServersConfigurationOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfigurationOperatorSpec to FlexibleServersConfigurationOperatorSpec via AssignProperties_To_FlexibleServersConfigurationOperatorSpec & AssignProperties_From_FlexibleServersConfigurationOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec, FlexibleServersConfigurationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec tests if a specific instance of FlexibleServersConfigurationOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec(subject FlexibleServersConfigurationOperatorSpec) 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.FlexibleServersConfigurationOperatorSpec + err := copied.AssignProperties_To_FlexibleServersConfigurationOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfigurationOperatorSpec + err = actual.AssignProperties_From_FlexibleServersConfigurationOperatorSpec(&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_FlexibleServersConfigurationOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -134,6 +262,48 @@ func FlexibleServersConfigurationOperatorSpecGenerator() gopter.Gen { return flexibleServersConfigurationOperatorSpecGenerator } +func Test_FlexibleServersConfiguration_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfiguration_STATUS to FlexibleServersConfiguration_STATUS via AssignProperties_To_FlexibleServersConfiguration_STATUS & AssignProperties_From_FlexibleServersConfiguration_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS, FlexibleServersConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS tests if a specific instance of FlexibleServersConfiguration_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS(subject FlexibleServersConfiguration_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.FlexibleServersConfiguration_STATUS + err := copied.AssignProperties_To_FlexibleServersConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfiguration_STATUS + err = actual.AssignProperties_From_FlexibleServersConfiguration_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_FlexibleServersConfiguration_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -222,6 +392,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_FlexibleServersConfiguration_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfiguration_Spec to FlexibleServersConfiguration_Spec via AssignProperties_To_FlexibleServersConfiguration_Spec & AssignProperties_From_FlexibleServersConfiguration_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec, FlexibleServersConfiguration_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec tests if a specific instance of FlexibleServersConfiguration_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec(subject FlexibleServersConfiguration_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.FlexibleServersConfiguration_Spec + err := copied.AssignProperties_To_FlexibleServersConfiguration_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfiguration_Spec + err = actual.AssignProperties_From_FlexibleServersConfiguration_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_FlexibleServersConfiguration_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen.go index d8c093f809..393ba28592 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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=dbformysql.azure.com,resources=flexibleserversdatabases,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversdatabases/status,flexibleserversdatabases/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 (database *FlexibleServersDatabase) SetConditions(conditions conditions.Con database.Status.Conditions = conditions } +var _ conversion.Convertible = &FlexibleServersDatabase{} + +// ConvertFrom populates our FlexibleServersDatabase from the provided hub FlexibleServersDatabase +func (database *FlexibleServersDatabase) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersDatabase) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersDatabase but received %T instead", hub) + } + + return database.AssignProperties_From_FlexibleServersDatabase(source) +} + +// ConvertTo populates the provided hub FlexibleServersDatabase from our FlexibleServersDatabase +func (database *FlexibleServersDatabase) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersDatabase) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersDatabase but received %T instead", hub) + } + + return database.AssignProperties_To_FlexibleServersDatabase(destination) +} + var _ configmaps.Exporter = &FlexibleServersDatabase{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -142,8 +163,75 @@ func (database *FlexibleServersDatabase) SetStatus(status genruntime.Convertible return nil } -// Hub marks that this FlexibleServersDatabase is the hub type for conversion -func (database *FlexibleServersDatabase) Hub() {} +// AssignProperties_From_FlexibleServersDatabase populates our FlexibleServersDatabase from the provided source FlexibleServersDatabase +func (database *FlexibleServersDatabase) AssignProperties_From_FlexibleServersDatabase(source *storage.FlexibleServersDatabase) error { + + // ObjectMeta + database.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersDatabase_Spec + err := spec.AssignProperties_From_FlexibleServersDatabase_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersDatabase_Spec() to populate field Spec") + } + database.Spec = spec + + // Status + var status FlexibleServersDatabase_STATUS + err = status.AssignProperties_From_FlexibleServersDatabase_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersDatabase_STATUS() to populate field Status") + } + database.Status = status + + // Invoke the augmentConversionForFlexibleServersDatabase interface (if implemented) to customize the conversion + var databaseAsAny any = database + if augmentedDatabase, ok := databaseAsAny.(augmentConversionForFlexibleServersDatabase); ok { + err := augmentedDatabase.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabase populates the provided destination FlexibleServersDatabase from our FlexibleServersDatabase +func (database *FlexibleServersDatabase) AssignProperties_To_FlexibleServersDatabase(destination *storage.FlexibleServersDatabase) error { + + // ObjectMeta + destination.ObjectMeta = *database.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersDatabase_Spec + err := database.Spec.AssignProperties_To_FlexibleServersDatabase_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersDatabase_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersDatabase_STATUS + err = database.Status.AssignProperties_To_FlexibleServersDatabase_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersDatabase_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForFlexibleServersDatabase interface (if implemented) to customize the conversion + var databaseAsAny any = database + if augmentedDatabase, ok := databaseAsAny.(augmentConversionForFlexibleServersDatabase); ok { + err := augmentedDatabase.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 (database *FlexibleServersDatabase) OriginalGVK() *schema.GroupVersionKind { @@ -165,6 +253,11 @@ type FlexibleServersDatabaseList struct { Items []FlexibleServersDatabase `json:"items"` } +type augmentConversionForFlexibleServersDatabase interface { + AssignPropertiesFrom(src *storage.FlexibleServersDatabase) error + AssignPropertiesTo(dst *storage.FlexibleServersDatabase) error +} + // Storage version of v1api20230630.FlexibleServersDatabase_Spec type FlexibleServersDatabase_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 @@ -187,20 +280,164 @@ var _ genruntime.ConvertibleSpec = &FlexibleServersDatabase_Spec{} // ConvertSpecFrom populates our FlexibleServersDatabase_Spec from the provided source func (database *FlexibleServersDatabase_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == database { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.FlexibleServersDatabase_Spec) + if ok { + // Populate our instance from source + return database.AssignProperties_From_FlexibleServersDatabase_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersDatabase_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(database) + // Update our instance from src + err = database.AssignProperties_From_FlexibleServersDatabase_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our FlexibleServersDatabase_Spec func (database *FlexibleServersDatabase_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == database { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.FlexibleServersDatabase_Spec) + if ok { + // Populate destination from our instance + return database.AssignProperties_To_FlexibleServersDatabase_Spec(dst) } - return destination.ConvertSpecFrom(database) + // Convert to an intermediate form + dst = &storage.FlexibleServersDatabase_Spec{} + err := database.AssignProperties_To_FlexibleServersDatabase_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_FlexibleServersDatabase_Spec populates our FlexibleServersDatabase_Spec from the provided source FlexibleServersDatabase_Spec +func (database *FlexibleServersDatabase_Spec) AssignProperties_From_FlexibleServersDatabase_Spec(source *storage.FlexibleServersDatabase_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AzureName + database.AzureName = source.AzureName + + // Charset + database.Charset = genruntime.ClonePointerToString(source.Charset) + + // Collation + database.Collation = genruntime.ClonePointerToString(source.Collation) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersDatabaseOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersDatabaseOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersDatabaseOperatorSpec() to populate field OperatorSpec") + } + database.OperatorSpec = &operatorSpec + } else { + database.OperatorSpec = nil + } + + // OriginalVersion + database.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + database.Owner = &owner + } else { + database.Owner = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + database.PropertyBag = propertyBag + } else { + database.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersDatabase_Spec interface (if implemented) to customize the conversion + var databaseAsAny any = database + if augmentedDatabase, ok := databaseAsAny.(augmentConversionForFlexibleServersDatabase_Spec); ok { + err := augmentedDatabase.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabase_Spec populates the provided destination FlexibleServersDatabase_Spec from our FlexibleServersDatabase_Spec +func (database *FlexibleServersDatabase_Spec) AssignProperties_To_FlexibleServersDatabase_Spec(destination *storage.FlexibleServersDatabase_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(database.PropertyBag) + + // AzureName + destination.AzureName = database.AzureName + + // Charset + destination.Charset = genruntime.ClonePointerToString(database.Charset) + + // Collation + destination.Collation = genruntime.ClonePointerToString(database.Collation) + + // OperatorSpec + if database.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersDatabaseOperatorSpec + err := database.OperatorSpec.AssignProperties_To_FlexibleServersDatabaseOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersDatabaseOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = database.OriginalVersion + + // Owner + if database.Owner != nil { + owner := database.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersDatabase_Spec interface (if implemented) to customize the conversion + var databaseAsAny any = database + if augmentedDatabase, ok := databaseAsAny.(augmentConversionForFlexibleServersDatabase_Spec); ok { + err := augmentedDatabase.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20230630.FlexibleServersDatabase_STATUS @@ -219,20 +456,170 @@ var _ genruntime.ConvertibleStatus = &FlexibleServersDatabase_STATUS{} // ConvertStatusFrom populates our FlexibleServersDatabase_STATUS from the provided source func (database *FlexibleServersDatabase_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == database { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.FlexibleServersDatabase_STATUS) + if ok { + // Populate our instance from source + return database.AssignProperties_From_FlexibleServersDatabase_STATUS(src) } - return source.ConvertStatusTo(database) + // Convert to an intermediate form + src = &storage.FlexibleServersDatabase_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = database.AssignProperties_From_FlexibleServersDatabase_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil } // ConvertStatusTo populates the provided destination from our FlexibleServersDatabase_STATUS func (database *FlexibleServersDatabase_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == database { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.FlexibleServersDatabase_STATUS) + if ok { + // Populate destination from our instance + return database.AssignProperties_To_FlexibleServersDatabase_STATUS(dst) } - return destination.ConvertStatusFrom(database) + // Convert to an intermediate form + dst = &storage.FlexibleServersDatabase_STATUS{} + err := database.AssignProperties_To_FlexibleServersDatabase_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 +} + +// AssignProperties_From_FlexibleServersDatabase_STATUS populates our FlexibleServersDatabase_STATUS from the provided source FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_STATUS) AssignProperties_From_FlexibleServersDatabase_STATUS(source *storage.FlexibleServersDatabase_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Charset + database.Charset = genruntime.ClonePointerToString(source.Charset) + + // Collation + database.Collation = genruntime.ClonePointerToString(source.Collation) + + // Conditions + database.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + database.Id = genruntime.ClonePointerToString(source.Id) + + // Name + database.Name = genruntime.ClonePointerToString(source.Name) + + // 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") + } + database.SystemData = &systemDatum + } else { + database.SystemData = nil + } + + // Type + database.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + database.PropertyBag = propertyBag + } else { + database.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersDatabase_STATUS interface (if implemented) to customize the conversion + var databaseAsAny any = database + if augmentedDatabase, ok := databaseAsAny.(augmentConversionForFlexibleServersDatabase_STATUS); ok { + err := augmentedDatabase.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabase_STATUS populates the provided destination FlexibleServersDatabase_STATUS from our FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_STATUS) AssignProperties_To_FlexibleServersDatabase_STATUS(destination *storage.FlexibleServersDatabase_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(database.PropertyBag) + + // Charset + destination.Charset = genruntime.ClonePointerToString(database.Charset) + + // Collation + destination.Collation = genruntime.ClonePointerToString(database.Collation) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(database.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(database.Id) + + // Name + destination.Name = genruntime.ClonePointerToString(database.Name) + + // SystemData + if database.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := database.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(database.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersDatabase_STATUS interface (if implemented) to customize the conversion + var databaseAsAny any = database + if augmentedDatabase, ok := databaseAsAny.(augmentConversionForFlexibleServersDatabase_STATUS); ok { + err := augmentedDatabase.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServersDatabase_Spec interface { + AssignPropertiesFrom(src *storage.FlexibleServersDatabase_Spec) error + AssignPropertiesTo(dst *storage.FlexibleServersDatabase_Spec) error +} + +type augmentConversionForFlexibleServersDatabase_STATUS interface { + AssignPropertiesFrom(src *storage.FlexibleServersDatabase_STATUS) error + AssignPropertiesTo(dst *storage.FlexibleServersDatabase_STATUS) error } // Storage version of v1api20230630.FlexibleServersDatabaseOperatorSpec @@ -243,6 +630,133 @@ type FlexibleServersDatabaseOperatorSpec struct { SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` } +// AssignProperties_From_FlexibleServersDatabaseOperatorSpec populates our FlexibleServersDatabaseOperatorSpec from the provided source FlexibleServersDatabaseOperatorSpec +func (operator *FlexibleServersDatabaseOperatorSpec) AssignProperties_From_FlexibleServersDatabaseOperatorSpec(source *storage.FlexibleServersDatabaseOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + operator.PropertyBag = propertyBag + } else { + operator.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersDatabaseOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersDatabaseOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabaseOperatorSpec populates the provided destination FlexibleServersDatabaseOperatorSpec from our FlexibleServersDatabaseOperatorSpec +func (operator *FlexibleServersDatabaseOperatorSpec) AssignProperties_To_FlexibleServersDatabaseOperatorSpec(destination *storage.FlexibleServersDatabaseOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersDatabaseOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersDatabaseOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServersDatabaseOperatorSpec interface { + AssignPropertiesFrom(src *storage.FlexibleServersDatabaseOperatorSpec) error + AssignPropertiesTo(dst *storage.FlexibleServersDatabaseOperatorSpec) error +} + func init() { SchemeBuilder.Register(&FlexibleServersDatabase{}, &FlexibleServersDatabaseList{}) } diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen_test.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen_test.go index ef0e449475..003e84544d 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_database_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -17,6 +18,91 @@ import ( "testing" ) +func Test_FlexibleServersDatabase_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 FlexibleServersDatabase to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersDatabase, FlexibleServersDatabaseGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersDatabase tests if a specific instance of FlexibleServersDatabase round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersDatabase(subject FlexibleServersDatabase) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersDatabase + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersDatabase + 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_FlexibleServersDatabase_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabase to FlexibleServersDatabase via AssignProperties_To_FlexibleServersDatabase & AssignProperties_From_FlexibleServersDatabase returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabase, FlexibleServersDatabaseGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabase tests if a specific instance of FlexibleServersDatabase can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabase(subject FlexibleServersDatabase) 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.FlexibleServersDatabase + err := copied.AssignProperties_To_FlexibleServersDatabase(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabase + err = actual.AssignProperties_From_FlexibleServersDatabase(&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_FlexibleServersDatabase_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -79,6 +165,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersDatabase(gens map[string]gopt gens["Status"] = FlexibleServersDatabase_STATUSGenerator() } +func Test_FlexibleServersDatabaseOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabaseOperatorSpec to FlexibleServersDatabaseOperatorSpec via AssignProperties_To_FlexibleServersDatabaseOperatorSpec & AssignProperties_From_FlexibleServersDatabaseOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec, FlexibleServersDatabaseOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec tests if a specific instance of FlexibleServersDatabaseOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec(subject FlexibleServersDatabaseOperatorSpec) 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.FlexibleServersDatabaseOperatorSpec + err := copied.AssignProperties_To_FlexibleServersDatabaseOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabaseOperatorSpec + err = actual.AssignProperties_From_FlexibleServersDatabaseOperatorSpec(&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_FlexibleServersDatabaseOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -134,6 +262,48 @@ func FlexibleServersDatabaseOperatorSpecGenerator() gopter.Gen { return flexibleServersDatabaseOperatorSpecGenerator } +func Test_FlexibleServersDatabase_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabase_STATUS to FlexibleServersDatabase_STATUS via AssignProperties_To_FlexibleServersDatabase_STATUS & AssignProperties_From_FlexibleServersDatabase_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS, FlexibleServersDatabase_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS tests if a specific instance of FlexibleServersDatabase_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS(subject FlexibleServersDatabase_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.FlexibleServersDatabase_STATUS + err := copied.AssignProperties_To_FlexibleServersDatabase_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabase_STATUS + err = actual.AssignProperties_From_FlexibleServersDatabase_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_FlexibleServersDatabase_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -213,6 +383,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[stri gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_FlexibleServersDatabase_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabase_Spec to FlexibleServersDatabase_Spec via AssignProperties_To_FlexibleServersDatabase_Spec & AssignProperties_From_FlexibleServersDatabase_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabase_Spec, FlexibleServersDatabase_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabase_Spec tests if a specific instance of FlexibleServersDatabase_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabase_Spec(subject FlexibleServersDatabase_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.FlexibleServersDatabase_Spec + err := copied.AssignProperties_To_FlexibleServersDatabase_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabase_Spec + err = actual.AssignProperties_From_FlexibleServersDatabase_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_FlexibleServersDatabase_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen.go index 0171d6650e..124b7f57d7 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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=dbformysql.azure.com,resources=flexibleserversfirewallrules,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversfirewallrules/status,flexibleserversfirewallrules/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 (rule *FlexibleServersFirewallRule) SetConditions(conditions conditions.Con rule.Status.Conditions = conditions } +var _ conversion.Convertible = &FlexibleServersFirewallRule{} + +// ConvertFrom populates our FlexibleServersFirewallRule from the provided hub FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersFirewallRule) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersFirewallRule but received %T instead", hub) + } + + return rule.AssignProperties_From_FlexibleServersFirewallRule(source) +} + +// ConvertTo populates the provided hub FlexibleServersFirewallRule from our FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersFirewallRule) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersFirewallRule but received %T instead", hub) + } + + return rule.AssignProperties_To_FlexibleServersFirewallRule(destination) +} + var _ configmaps.Exporter = &FlexibleServersFirewallRule{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -142,8 +163,75 @@ func (rule *FlexibleServersFirewallRule) SetStatus(status genruntime.Convertible return nil } -// Hub marks that this FlexibleServersFirewallRule is the hub type for conversion -func (rule *FlexibleServersFirewallRule) Hub() {} +// AssignProperties_From_FlexibleServersFirewallRule populates our FlexibleServersFirewallRule from the provided source FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) AssignProperties_From_FlexibleServersFirewallRule(source *storage.FlexibleServersFirewallRule) error { + + // ObjectMeta + rule.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersFirewallRule_Spec + err := spec.AssignProperties_From_FlexibleServersFirewallRule_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersFirewallRule_Spec() to populate field Spec") + } + rule.Spec = spec + + // Status + var status FlexibleServersFirewallRule_STATUS + err = status.AssignProperties_From_FlexibleServersFirewallRule_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersFirewallRule_STATUS() to populate field Status") + } + rule.Status = status + + // Invoke the augmentConversionForFlexibleServersFirewallRule interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForFlexibleServersFirewallRule); ok { + err := augmentedRule.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRule populates the provided destination FlexibleServersFirewallRule from our FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) AssignProperties_To_FlexibleServersFirewallRule(destination *storage.FlexibleServersFirewallRule) error { + + // ObjectMeta + destination.ObjectMeta = *rule.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersFirewallRule_Spec + err := rule.Spec.AssignProperties_To_FlexibleServersFirewallRule_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersFirewallRule_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersFirewallRule_STATUS + err = rule.Status.AssignProperties_To_FlexibleServersFirewallRule_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersFirewallRule_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForFlexibleServersFirewallRule interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForFlexibleServersFirewallRule); ok { + err := augmentedRule.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 (rule *FlexibleServersFirewallRule) OriginalGVK() *schema.GroupVersionKind { @@ -165,6 +253,11 @@ type FlexibleServersFirewallRuleList struct { Items []FlexibleServersFirewallRule `json:"items"` } +type augmentConversionForFlexibleServersFirewallRule interface { + AssignPropertiesFrom(src *storage.FlexibleServersFirewallRule) error + AssignPropertiesTo(dst *storage.FlexibleServersFirewallRule) error +} + // Storage version of v1api20230630.FlexibleServersFirewallRule_Spec type FlexibleServersFirewallRule_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 @@ -187,20 +280,164 @@ var _ genruntime.ConvertibleSpec = &FlexibleServersFirewallRule_Spec{} // ConvertSpecFrom populates our FlexibleServersFirewallRule_Spec from the provided source func (rule *FlexibleServersFirewallRule_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == rule { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.FlexibleServersFirewallRule_Spec) + if ok { + // Populate our instance from source + return rule.AssignProperties_From_FlexibleServersFirewallRule_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersFirewallRule_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(rule) + // Update our instance from src + err = rule.AssignProperties_From_FlexibleServersFirewallRule_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our FlexibleServersFirewallRule_Spec func (rule *FlexibleServersFirewallRule_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == rule { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.FlexibleServersFirewallRule_Spec) + if ok { + // Populate destination from our instance + return rule.AssignProperties_To_FlexibleServersFirewallRule_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersFirewallRule_Spec{} + err := rule.AssignProperties_To_FlexibleServersFirewallRule_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 destination.ConvertSpecFrom(rule) + return nil +} + +// AssignProperties_From_FlexibleServersFirewallRule_Spec populates our FlexibleServersFirewallRule_Spec from the provided source FlexibleServersFirewallRule_Spec +func (rule *FlexibleServersFirewallRule_Spec) AssignProperties_From_FlexibleServersFirewallRule_Spec(source *storage.FlexibleServersFirewallRule_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AzureName + rule.AzureName = source.AzureName + + // EndIpAddress + rule.EndIpAddress = genruntime.ClonePointerToString(source.EndIpAddress) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersFirewallRuleOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec() to populate field OperatorSpec") + } + rule.OperatorSpec = &operatorSpec + } else { + rule.OperatorSpec = nil + } + + // OriginalVersion + rule.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + rule.Owner = &owner + } else { + rule.Owner = nil + } + + // StartIpAddress + rule.StartIpAddress = genruntime.ClonePointerToString(source.StartIpAddress) + + // Update the property bag + if len(propertyBag) > 0 { + rule.PropertyBag = propertyBag + } else { + rule.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersFirewallRule_Spec interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForFlexibleServersFirewallRule_Spec); ok { + err := augmentedRule.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRule_Spec populates the provided destination FlexibleServersFirewallRule_Spec from our FlexibleServersFirewallRule_Spec +func (rule *FlexibleServersFirewallRule_Spec) AssignProperties_To_FlexibleServersFirewallRule_Spec(destination *storage.FlexibleServersFirewallRule_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(rule.PropertyBag) + + // AzureName + destination.AzureName = rule.AzureName + + // EndIpAddress + destination.EndIpAddress = genruntime.ClonePointerToString(rule.EndIpAddress) + + // OperatorSpec + if rule.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersFirewallRuleOperatorSpec + err := rule.OperatorSpec.AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = rule.OriginalVersion + + // Owner + if rule.Owner != nil { + owner := rule.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // StartIpAddress + destination.StartIpAddress = genruntime.ClonePointerToString(rule.StartIpAddress) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersFirewallRule_Spec interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForFlexibleServersFirewallRule_Spec); ok { + err := augmentedRule.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20230630.FlexibleServersFirewallRule_STATUS @@ -219,20 +456,170 @@ var _ genruntime.ConvertibleStatus = &FlexibleServersFirewallRule_STATUS{} // ConvertStatusFrom populates our FlexibleServersFirewallRule_STATUS from the provided source func (rule *FlexibleServersFirewallRule_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == rule { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.FlexibleServersFirewallRule_STATUS) + if ok { + // Populate our instance from source + return rule.AssignProperties_From_FlexibleServersFirewallRule_STATUS(src) } - return source.ConvertStatusTo(rule) + // Convert to an intermediate form + src = &storage.FlexibleServersFirewallRule_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = rule.AssignProperties_From_FlexibleServersFirewallRule_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil } // ConvertStatusTo populates the provided destination from our FlexibleServersFirewallRule_STATUS func (rule *FlexibleServersFirewallRule_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == rule { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.FlexibleServersFirewallRule_STATUS) + if ok { + // Populate destination from our instance + return rule.AssignProperties_To_FlexibleServersFirewallRule_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersFirewallRule_STATUS{} + err := rule.AssignProperties_To_FlexibleServersFirewallRule_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 +} + +// AssignProperties_From_FlexibleServersFirewallRule_STATUS populates our FlexibleServersFirewallRule_STATUS from the provided source FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_STATUS) AssignProperties_From_FlexibleServersFirewallRule_STATUS(source *storage.FlexibleServersFirewallRule_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Conditions + rule.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // EndIpAddress + rule.EndIpAddress = genruntime.ClonePointerToString(source.EndIpAddress) + + // Id + rule.Id = genruntime.ClonePointerToString(source.Id) + + // Name + rule.Name = genruntime.ClonePointerToString(source.Name) + + // StartIpAddress + rule.StartIpAddress = genruntime.ClonePointerToString(source.StartIpAddress) + + // 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") + } + rule.SystemData = &systemDatum + } else { + rule.SystemData = nil + } + + // Type + rule.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + rule.PropertyBag = propertyBag + } else { + rule.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersFirewallRule_STATUS interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForFlexibleServersFirewallRule_STATUS); ok { + err := augmentedRule.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRule_STATUS populates the provided destination FlexibleServersFirewallRule_STATUS from our FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_STATUS) AssignProperties_To_FlexibleServersFirewallRule_STATUS(destination *storage.FlexibleServersFirewallRule_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(rule.PropertyBag) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(rule.Conditions) + + // EndIpAddress + destination.EndIpAddress = genruntime.ClonePointerToString(rule.EndIpAddress) + + // Id + destination.Id = genruntime.ClonePointerToString(rule.Id) + + // Name + destination.Name = genruntime.ClonePointerToString(rule.Name) + + // StartIpAddress + destination.StartIpAddress = genruntime.ClonePointerToString(rule.StartIpAddress) + + // SystemData + if rule.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := rule.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(rule.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersFirewallRule_STATUS interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForFlexibleServersFirewallRule_STATUS); ok { + err := augmentedRule.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } } - return destination.ConvertStatusFrom(rule) + // No error + return nil +} + +type augmentConversionForFlexibleServersFirewallRule_Spec interface { + AssignPropertiesFrom(src *storage.FlexibleServersFirewallRule_Spec) error + AssignPropertiesTo(dst *storage.FlexibleServersFirewallRule_Spec) error +} + +type augmentConversionForFlexibleServersFirewallRule_STATUS interface { + AssignPropertiesFrom(src *storage.FlexibleServersFirewallRule_STATUS) error + AssignPropertiesTo(dst *storage.FlexibleServersFirewallRule_STATUS) error } // Storage version of v1api20230630.FlexibleServersFirewallRuleOperatorSpec @@ -243,6 +630,133 @@ type FlexibleServersFirewallRuleOperatorSpec struct { SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` } +// AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec populates our FlexibleServersFirewallRuleOperatorSpec from the provided source FlexibleServersFirewallRuleOperatorSpec +func (operator *FlexibleServersFirewallRuleOperatorSpec) AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec(source *storage.FlexibleServersFirewallRuleOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + operator.PropertyBag = propertyBag + } else { + operator.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersFirewallRuleOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersFirewallRuleOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec populates the provided destination FlexibleServersFirewallRuleOperatorSpec from our FlexibleServersFirewallRuleOperatorSpec +func (operator *FlexibleServersFirewallRuleOperatorSpec) AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(destination *storage.FlexibleServersFirewallRuleOperatorSpec) 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 + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForFlexibleServersFirewallRuleOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForFlexibleServersFirewallRuleOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForFlexibleServersFirewallRuleOperatorSpec interface { + AssignPropertiesFrom(src *storage.FlexibleServersFirewallRuleOperatorSpec) error + AssignPropertiesTo(dst *storage.FlexibleServersFirewallRuleOperatorSpec) error +} + func init() { SchemeBuilder.Register(&FlexibleServersFirewallRule{}, &FlexibleServersFirewallRuleList{}) } diff --git a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen_test.go b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen_test.go index 6130a5e364..80f90a65d3 100644 --- a/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen_test.go +++ b/v2/api/dbformysql/v1api20230630/storage/flexible_servers_firewall_rule_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -17,6 +18,91 @@ import ( "testing" ) +func Test_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersFirewallRule, FlexibleServersFirewallRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersFirewallRule tests if a specific instance of FlexibleServersFirewallRule round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersFirewallRule(subject FlexibleServersFirewallRule) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersFirewallRule + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersFirewallRule + 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_FlexibleServersFirewallRule_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRule to FlexibleServersFirewallRule via AssignProperties_To_FlexibleServersFirewallRule & AssignProperties_From_FlexibleServersFirewallRule returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRule, FlexibleServersFirewallRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRule tests if a specific instance of FlexibleServersFirewallRule can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRule(subject FlexibleServersFirewallRule) 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.FlexibleServersFirewallRule + err := copied.AssignProperties_To_FlexibleServersFirewallRule(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRule + err = actual.AssignProperties_From_FlexibleServersFirewallRule(&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_FlexibleServersFirewallRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -79,6 +165,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule(gens map[string] gens["Status"] = FlexibleServersFirewallRule_STATUSGenerator() } +func Test_FlexibleServersFirewallRuleOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRuleOperatorSpec to FlexibleServersFirewallRuleOperatorSpec via AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec & AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec, FlexibleServersFirewallRuleOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec tests if a specific instance of FlexibleServersFirewallRuleOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec(subject FlexibleServersFirewallRuleOperatorSpec) 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.FlexibleServersFirewallRuleOperatorSpec + err := copied.AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRuleOperatorSpec + err = actual.AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec(&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_FlexibleServersFirewallRuleOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -134,6 +262,48 @@ func FlexibleServersFirewallRuleOperatorSpecGenerator() gopter.Gen { return flexibleServersFirewallRuleOperatorSpecGenerator } +func Test_FlexibleServersFirewallRule_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRule_STATUS to FlexibleServersFirewallRule_STATUS via AssignProperties_To_FlexibleServersFirewallRule_STATUS & AssignProperties_From_FlexibleServersFirewallRule_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS, FlexibleServersFirewallRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS tests if a specific instance of FlexibleServersFirewallRule_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS(subject FlexibleServersFirewallRule_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.FlexibleServersFirewallRule_STATUS + err := copied.AssignProperties_To_FlexibleServersFirewallRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRule_STATUS + err = actual.AssignProperties_From_FlexibleServersFirewallRule_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_FlexibleServersFirewallRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -213,6 +383,48 @@ func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[ gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_FlexibleServersFirewallRule_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRule_Spec to FlexibleServersFirewallRule_Spec via AssignProperties_To_FlexibleServersFirewallRule_Spec & AssignProperties_From_FlexibleServersFirewallRule_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec, FlexibleServersFirewallRule_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec tests if a specific instance of FlexibleServersFirewallRule_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec(subject FlexibleServersFirewallRule_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.FlexibleServersFirewallRule_Spec + err := copied.AssignProperties_To_FlexibleServersFirewallRule_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRule_Spec + err = actual.AssignProperties_From_FlexibleServersFirewallRule_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_FlexibleServersFirewallRule_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/dbformysql/v1api20230630/storage/structure.txt b/v2/api/dbformysql/v1api20230630/storage/structure.txt index 455a02bf7c..f45a94ec4f 100644 --- a/v2/api/dbformysql/v1api20230630/storage/structure.txt +++ b/v2/api/dbformysql/v1api20230630/storage/structure.txt @@ -293,3 +293,46 @@ FlexibleServersFirewallRule: Resource │ ├── LastModifiedByType: *string │ └── PropertyBag: genruntime.PropertyBag └── Type: *string +augmentConversionForBackup: Interface +augmentConversionForBackup_STATUS: Interface +augmentConversionForDataEncryption: Interface +augmentConversionForDataEncryption_STATUS: Interface +augmentConversionForFlexibleServer: Interface +augmentConversionForFlexibleServerOperatorConfigMaps: Interface +augmentConversionForFlexibleServerOperatorSecrets: Interface +augmentConversionForFlexibleServerOperatorSpec: Interface +augmentConversionForFlexibleServer_STATUS: Interface +augmentConversionForFlexibleServer_Spec: Interface +augmentConversionForFlexibleServersAdministrator: Interface +augmentConversionForFlexibleServersAdministratorOperatorSpec: Interface +augmentConversionForFlexibleServersAdministrator_STATUS: Interface +augmentConversionForFlexibleServersAdministrator_Spec: Interface +augmentConversionForFlexibleServersConfiguration: Interface +augmentConversionForFlexibleServersConfigurationOperatorSpec: Interface +augmentConversionForFlexibleServersConfiguration_STATUS: Interface +augmentConversionForFlexibleServersConfiguration_Spec: Interface +augmentConversionForFlexibleServersDatabase: Interface +augmentConversionForFlexibleServersDatabaseOperatorSpec: Interface +augmentConversionForFlexibleServersDatabase_STATUS: Interface +augmentConversionForFlexibleServersDatabase_Spec: Interface +augmentConversionForFlexibleServersFirewallRule: Interface +augmentConversionForFlexibleServersFirewallRuleOperatorSpec: Interface +augmentConversionForFlexibleServersFirewallRule_STATUS: Interface +augmentConversionForFlexibleServersFirewallRule_Spec: Interface +augmentConversionForHighAvailability: Interface +augmentConversionForHighAvailability_STATUS: Interface +augmentConversionForImportSourceProperties: Interface +augmentConversionForImportSourceProperties_STATUS: Interface +augmentConversionForMaintenanceWindow: Interface +augmentConversionForMaintenanceWindow_STATUS: Interface +augmentConversionForMySQLServerIdentity: Interface +augmentConversionForMySQLServerIdentity_STATUS: Interface +augmentConversionForMySQLServerSku: Interface +augmentConversionForMySQLServerSku_STATUS: Interface +augmentConversionForNetwork: Interface +augmentConversionForNetwork_STATUS: Interface +augmentConversionForPrivateEndpointConnection_STATUS: Interface +augmentConversionForStorage: Interface +augmentConversionForStorage_STATUS: Interface +augmentConversionForSystemData_STATUS: Interface +augmentConversionForUserAssignedIdentityDetails: Interface diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen.go new file mode 100644 index 0000000000..5b67c60463 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen.go @@ -0,0 +1,332 @@ +// 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 FlexibleServer_Spec struct { + // Identity: The cmk identity for the server. + Identity *MySQLServerIdentity `json:"identity,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + + // Properties: Properties of the server. + Properties *ServerProperties `json:"properties,omitempty"` + + // Sku: The SKU (pricing tier) of the server. + Sku *MySQLServerSku `json:"sku,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &FlexibleServer_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (server FlexibleServer_Spec) GetAPIVersion() string { + return "2023-12-30" +} + +// GetName returns the Name of the resource +func (server *FlexibleServer_Spec) GetName() string { + return server.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers" +func (server *FlexibleServer_Spec) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers" +} + +// Properties to configure Identity for Bring your Own Keys +type MySQLServerIdentity struct { + // Type: Type of managed service identity. + Type *MySQLServerIdentity_Type `json:"type,omitempty"` + UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// Billing information related properties of a server. +type MySQLServerSku struct { + // Name: The name of the sku, e.g. Standard_D32s_v3. + Name *string `json:"name,omitempty"` + + // Tier: The tier of the particular SKU, e.g. GeneralPurpose. + Tier *MySQLServerSku_Tier `json:"tier,omitempty"` +} + +// The properties of a server. +type ServerProperties struct { + // AdministratorLogin: The administrator's login name of a server. Can only be specified when the server is being created + // (and is required for creation). + AdministratorLogin *string `json:"administratorLogin,omitempty"` + + // AdministratorLoginPassword: The password of the administrator login (required for server creation). + AdministratorLoginPassword *string `json:"administratorLoginPassword,omitempty"` + + // AvailabilityZone: availability Zone information of the server. + AvailabilityZone *string `json:"availabilityZone,omitempty"` + + // Backup: Backup related properties of a server. + Backup *Backup `json:"backup,omitempty"` + + // CreateMode: The mode to create a new MySQL server. + CreateMode *ServerProperties_CreateMode `json:"createMode,omitempty"` + + // DataEncryption: The Data Encryption for CMK. + DataEncryption *DataEncryption `json:"dataEncryption,omitempty"` + + // HighAvailability: High availability related properties of a server. + HighAvailability *HighAvailability `json:"highAvailability,omitempty"` + + // ImportSourceProperties: Source properties for import from storage. + ImportSourceProperties *ImportSourceProperties `json:"importSourceProperties,omitempty"` + + // MaintenanceWindow: Maintenance window of a server. + MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"` + + // Network: Network related properties of a server. + Network *Network `json:"network,omitempty"` + + // ReplicationRole: The replication role. + ReplicationRole *ReplicationRole `json:"replicationRole,omitempty"` + + // RestorePointInTime: Restore point creation time (ISO8601 format), specifying the time to restore from. + RestorePointInTime *string `json:"restorePointInTime,omitempty"` + SourceServerResourceId *string `json:"sourceServerResourceId,omitempty"` + + // Storage: Storage related properties of a server. + Storage *Storage `json:"storage,omitempty"` + + // Version: Server version. + Version *ServerVersion `json:"version,omitempty"` +} + +// Storage Profile properties of a server +type Backup struct { + // BackupIntervalHours: Backup interval hours for the server. + BackupIntervalHours *int `json:"backupIntervalHours,omitempty"` + + // BackupRetentionDays: Backup retention days for the server. + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + + // GeoRedundantBackup: Whether or not geo redundant backup is enabled. + GeoRedundantBackup *EnableStatusEnum `json:"geoRedundantBackup,omitempty"` +} + +// The date encryption for cmk. +type DataEncryption struct { + // GeoBackupKeyURI: Geo backup key uri as key vault can't cross region, need cmk in same region as geo backup + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"` + + // PrimaryKeyURI: Primary key uri + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"` + + // Type: The key type, AzureKeyVault for enable cmk, SystemManaged for disable cmk. + Type *DataEncryption_Type `json:"type,omitempty"` +} + +// High availability properties of a server +type HighAvailability struct { + // Mode: High availability mode for a server. + Mode *HighAvailability_Mode `json:"mode,omitempty"` + + // StandbyAvailabilityZone: Availability zone of the standby server. + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` +} + +// Import source related properties. +type ImportSourceProperties struct { + // DataDirPath: Relative path of data directory in storage. + DataDirPath *string `json:"dataDirPath,omitempty"` + + // SasToken: Sas token for accessing source storage. Read and list permissions are required for sas token. + SasToken *string `json:"sasToken,omitempty"` + + // StorageType: Storage type of import source. + StorageType *ImportSourceProperties_StorageType `json:"storageType,omitempty"` + + // StorageUrl: Uri of the import source storage. + StorageUrl *string `json:"storageUrl,omitempty"` +} + +// Maintenance window of a server. +type MaintenanceWindow struct { + // CustomWindow: indicates whether custom window is enabled or disabled + CustomWindow *string `json:"customWindow,omitempty"` + + // DayOfWeek: day of week for maintenance window + DayOfWeek *int `json:"dayOfWeek,omitempty"` + + // StartHour: start hour for maintenance window + StartHour *int `json:"startHour,omitempty"` + + // StartMinute: start minute for maintenance window + StartMinute *int `json:"startMinute,omitempty"` +} + +// +kubebuilder:validation:Enum={"UserAssigned"} +type MySQLServerIdentity_Type string + +const MySQLServerIdentity_Type_UserAssigned = MySQLServerIdentity_Type("UserAssigned") + +// Mapping from string to MySQLServerIdentity_Type +var mySQLServerIdentity_Type_Values = map[string]MySQLServerIdentity_Type{ + "userassigned": MySQLServerIdentity_Type_UserAssigned, +} + +// +kubebuilder:validation:Enum={"Burstable","GeneralPurpose","MemoryOptimized"} +type MySQLServerSku_Tier string + +const ( + MySQLServerSku_Tier_Burstable = MySQLServerSku_Tier("Burstable") + MySQLServerSku_Tier_GeneralPurpose = MySQLServerSku_Tier("GeneralPurpose") + MySQLServerSku_Tier_MemoryOptimized = MySQLServerSku_Tier("MemoryOptimized") +) + +// Mapping from string to MySQLServerSku_Tier +var mySQLServerSku_Tier_Values = map[string]MySQLServerSku_Tier{ + "burstable": MySQLServerSku_Tier_Burstable, + "generalpurpose": MySQLServerSku_Tier_GeneralPurpose, + "memoryoptimized": MySQLServerSku_Tier_MemoryOptimized, +} + +// Network related properties of a server +type Network struct { + DelegatedSubnetResourceId *string `json:"delegatedSubnetResourceId,omitempty"` + PrivateDnsZoneResourceId *string `json:"privateDnsZoneResourceId,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for this server. Value is 'Disabled' when server + // has VNet integration. + PublicNetworkAccess *EnableStatusEnum `json:"publicNetworkAccess,omitempty"` +} + +// The replication role. +// +kubebuilder:validation:Enum={"None","Replica","Source"} +type ReplicationRole string + +const ( + ReplicationRole_None = ReplicationRole("None") + ReplicationRole_Replica = ReplicationRole("Replica") + ReplicationRole_Source = ReplicationRole("Source") +) + +// Mapping from string to ReplicationRole +var replicationRole_Values = map[string]ReplicationRole{ + "none": ReplicationRole_None, + "replica": ReplicationRole_Replica, + "source": ReplicationRole_Source, +} + +// +kubebuilder:validation:Enum={"Default","GeoRestore","PointInTimeRestore","Replica"} +type ServerProperties_CreateMode string + +const ( + ServerProperties_CreateMode_Default = ServerProperties_CreateMode("Default") + ServerProperties_CreateMode_GeoRestore = ServerProperties_CreateMode("GeoRestore") + ServerProperties_CreateMode_PointInTimeRestore = ServerProperties_CreateMode("PointInTimeRestore") + ServerProperties_CreateMode_Replica = ServerProperties_CreateMode("Replica") +) + +// Mapping from string to ServerProperties_CreateMode +var serverProperties_CreateMode_Values = map[string]ServerProperties_CreateMode{ + "default": ServerProperties_CreateMode_Default, + "georestore": ServerProperties_CreateMode_GeoRestore, + "pointintimerestore": ServerProperties_CreateMode_PointInTimeRestore, + "replica": ServerProperties_CreateMode_Replica, +} + +// The version of a server. +// +kubebuilder:validation:Enum={"5.7","8.0.21"} +type ServerVersion string + +const ( + ServerVersion_57 = ServerVersion("5.7") + ServerVersion_8021 = ServerVersion("8.0.21") +) + +// Mapping from string to ServerVersion +var serverVersion_Values = map[string]ServerVersion{ + "5.7": ServerVersion_57, + "8.0.21": ServerVersion_8021, +} + +// Storage Profile properties of a server +type Storage struct { + // AutoGrow: Enable Storage Auto Grow or not. + AutoGrow *EnableStatusEnum `json:"autoGrow,omitempty"` + + // AutoIoScaling: Enable IO Auto Scaling or not. + AutoIoScaling *EnableStatusEnum `json:"autoIoScaling,omitempty"` + + // Iops: Storage IOPS for a server. + Iops *int `json:"iops,omitempty"` + + // LogOnDisk: Enable Log On Disk or not. + LogOnDisk *EnableStatusEnum `json:"logOnDisk,omitempty"` + + // StorageSizeGB: Max storage size allowed for a server. + StorageSizeGB *int `json:"storageSizeGB,omitempty"` +} + +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { +} + +// +kubebuilder:validation:Enum={"AzureKeyVault","SystemManaged"} +type DataEncryption_Type string + +const ( + DataEncryption_Type_AzureKeyVault = DataEncryption_Type("AzureKeyVault") + DataEncryption_Type_SystemManaged = DataEncryption_Type("SystemManaged") +) + +// Mapping from string to DataEncryption_Type +var dataEncryption_Type_Values = map[string]DataEncryption_Type{ + "azurekeyvault": DataEncryption_Type_AzureKeyVault, + "systemmanaged": DataEncryption_Type_SystemManaged, +} + +// Enum to indicate whether value is 'Enabled' or 'Disabled' +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type EnableStatusEnum string + +const ( + EnableStatusEnum_Disabled = EnableStatusEnum("Disabled") + EnableStatusEnum_Enabled = EnableStatusEnum("Enabled") +) + +// Mapping from string to EnableStatusEnum +var enableStatusEnum_Values = map[string]EnableStatusEnum{ + "disabled": EnableStatusEnum_Disabled, + "enabled": EnableStatusEnum_Enabled, +} + +// +kubebuilder:validation:Enum={"Disabled","SameZone","ZoneRedundant"} +type HighAvailability_Mode string + +const ( + HighAvailability_Mode_Disabled = HighAvailability_Mode("Disabled") + HighAvailability_Mode_SameZone = HighAvailability_Mode("SameZone") + HighAvailability_Mode_ZoneRedundant = HighAvailability_Mode("ZoneRedundant") +) + +// Mapping from string to HighAvailability_Mode +var highAvailability_Mode_Values = map[string]HighAvailability_Mode{ + "disabled": HighAvailability_Mode_Disabled, + "samezone": HighAvailability_Mode_SameZone, + "zoneredundant": HighAvailability_Mode_ZoneRedundant, +} + +// +kubebuilder:validation:Enum={"AzureBlob"} +type ImportSourceProperties_StorageType string + +const ImportSourceProperties_StorageType_AzureBlob = ImportSourceProperties_StorageType("AzureBlob") + +// Mapping from string to ImportSourceProperties_StorageType +var importSourceProperties_StorageType_Values = map[string]ImportSourceProperties_StorageType{ + "azureblob": ImportSourceProperties_StorageType_AzureBlob, +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen_test.go new file mode 100644 index 0000000000..d9c0b7fe44 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_server_spec_types_gen_test.go @@ -0,0 +1,823 @@ +// 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_Backup_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 Backup via JSON returns original", + prop.ForAll(RunJSONSerializationTestForBackup, BackupGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForBackup runs a test to see if a specific instance of Backup round trips to JSON and back losslessly +func RunJSONSerializationTestForBackup(subject Backup) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Backup + 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 Backup instances for property testing - lazily instantiated by BackupGenerator() +var backupGenerator gopter.Gen + +// BackupGenerator returns a generator of Backup instances for property testing. +func BackupGenerator() gopter.Gen { + if backupGenerator != nil { + return backupGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForBackup(generators) + backupGenerator = gen.Struct(reflect.TypeOf(Backup{}), generators) + + return backupGenerator +} + +// AddIndependentPropertyGeneratorsForBackup is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForBackup(gens map[string]gopter.Gen) { + gens["BackupIntervalHours"] = gen.PtrOf(gen.Int()) + gens["BackupRetentionDays"] = gen.PtrOf(gen.Int()) + gens["GeoRedundantBackup"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) +} + +func Test_DataEncryption_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 DataEncryption via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataEncryption, DataEncryptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataEncryption runs a test to see if a specific instance of DataEncryption round trips to JSON and back losslessly +func RunJSONSerializationTestForDataEncryption(subject DataEncryption) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataEncryption + 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 DataEncryption instances for property testing - lazily instantiated by DataEncryptionGenerator() +var dataEncryptionGenerator gopter.Gen + +// DataEncryptionGenerator returns a generator of DataEncryption instances for property testing. +func DataEncryptionGenerator() gopter.Gen { + if dataEncryptionGenerator != nil { + return dataEncryptionGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataEncryption(generators) + dataEncryptionGenerator = gen.Struct(reflect.TypeOf(DataEncryption{}), generators) + + return dataEncryptionGenerator +} + +// AddIndependentPropertyGeneratorsForDataEncryption is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataEncryption(gens map[string]gopter.Gen) { + gens["GeoBackupKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["GeoBackupUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(DataEncryption_Type_AzureKeyVault, DataEncryption_Type_SystemManaged)) +} + +func Test_FlexibleServer_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 FlexibleServer_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer_Spec, FlexibleServer_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer_Spec runs a test to see if a specific instance of FlexibleServer_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer_Spec(subject FlexibleServer_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer_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 FlexibleServer_Spec instances for property testing - lazily instantiated by +// FlexibleServer_SpecGenerator() +var flexibleServer_SpecGenerator gopter.Gen + +// FlexibleServer_SpecGenerator returns a generator of FlexibleServer_Spec instances for property testing. +// We first initialize flexibleServer_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 FlexibleServer_SpecGenerator() gopter.Gen { + if flexibleServer_SpecGenerator != nil { + return flexibleServer_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_Spec(generators) + flexibleServer_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServer_Spec(generators) + flexibleServer_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_Spec{}), generators) + + return flexibleServer_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServer_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.Gen) { + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServer_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(MySQLServerIdentityGenerator()) + gens["Properties"] = gen.PtrOf(ServerPropertiesGenerator()) + gens["Sku"] = gen.PtrOf(MySQLServerSkuGenerator()) +} + +func Test_HighAvailability_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 HighAvailability via JSON returns original", + prop.ForAll(RunJSONSerializationTestForHighAvailability, HighAvailabilityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForHighAvailability runs a test to see if a specific instance of HighAvailability round trips to JSON and back losslessly +func RunJSONSerializationTestForHighAvailability(subject HighAvailability) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual HighAvailability + 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 HighAvailability instances for property testing - lazily instantiated by HighAvailabilityGenerator() +var highAvailabilityGenerator gopter.Gen + +// HighAvailabilityGenerator returns a generator of HighAvailability instances for property testing. +func HighAvailabilityGenerator() gopter.Gen { + if highAvailabilityGenerator != nil { + return highAvailabilityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForHighAvailability(generators) + highAvailabilityGenerator = gen.Struct(reflect.TypeOf(HighAvailability{}), generators) + + return highAvailabilityGenerator +} + +// AddIndependentPropertyGeneratorsForHighAvailability is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForHighAvailability(gens map[string]gopter.Gen) { + gens["Mode"] = gen.PtrOf(gen.OneConstOf(HighAvailability_Mode_Disabled, HighAvailability_Mode_SameZone, HighAvailability_Mode_ZoneRedundant)) + gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ImportSourceProperties_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 ImportSourceProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForImportSourceProperties, ImportSourcePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForImportSourceProperties runs a test to see if a specific instance of ImportSourceProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForImportSourceProperties(subject ImportSourceProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ImportSourceProperties + 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 ImportSourceProperties instances for property testing - lazily instantiated by +// ImportSourcePropertiesGenerator() +var importSourcePropertiesGenerator gopter.Gen + +// ImportSourcePropertiesGenerator returns a generator of ImportSourceProperties instances for property testing. +func ImportSourcePropertiesGenerator() gopter.Gen { + if importSourcePropertiesGenerator != nil { + return importSourcePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForImportSourceProperties(generators) + importSourcePropertiesGenerator = gen.Struct(reflect.TypeOf(ImportSourceProperties{}), generators) + + return importSourcePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForImportSourceProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForImportSourceProperties(gens map[string]gopter.Gen) { + gens["DataDirPath"] = gen.PtrOf(gen.AlphaString()) + gens["SasToken"] = gen.PtrOf(gen.AlphaString()) + gens["StorageType"] = gen.PtrOf(gen.OneConstOf(ImportSourceProperties_StorageType_AzureBlob)) + gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_MaintenanceWindow_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 MaintenanceWindow via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMaintenanceWindow, MaintenanceWindowGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMaintenanceWindow runs a test to see if a specific instance of MaintenanceWindow round trips to JSON and back losslessly +func RunJSONSerializationTestForMaintenanceWindow(subject MaintenanceWindow) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MaintenanceWindow + 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 MaintenanceWindow instances for property testing - lazily instantiated by MaintenanceWindowGenerator() +var maintenanceWindowGenerator gopter.Gen + +// MaintenanceWindowGenerator returns a generator of MaintenanceWindow instances for property testing. +func MaintenanceWindowGenerator() gopter.Gen { + if maintenanceWindowGenerator != nil { + return maintenanceWindowGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMaintenanceWindow(generators) + maintenanceWindowGenerator = gen.Struct(reflect.TypeOf(MaintenanceWindow{}), generators) + + return maintenanceWindowGenerator +} + +// AddIndependentPropertyGeneratorsForMaintenanceWindow is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMaintenanceWindow(gens map[string]gopter.Gen) { + gens["CustomWindow"] = gen.PtrOf(gen.AlphaString()) + gens["DayOfWeek"] = gen.PtrOf(gen.Int()) + gens["StartHour"] = gen.PtrOf(gen.Int()) + gens["StartMinute"] = gen.PtrOf(gen.Int()) +} + +func Test_MySQLServerIdentity_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 MySQLServerIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerIdentity, MySQLServerIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerIdentity runs a test to see if a specific instance of MySQLServerIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerIdentity(subject MySQLServerIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerIdentity + 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 MySQLServerIdentity instances for property testing - lazily instantiated by +// MySQLServerIdentityGenerator() +var mySQLServerIdentityGenerator gopter.Gen + +// MySQLServerIdentityGenerator returns a generator of MySQLServerIdentity instances for property testing. +// We first initialize mySQLServerIdentityGenerator 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 MySQLServerIdentityGenerator() gopter.Gen { + if mySQLServerIdentityGenerator != nil { + return mySQLServerIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity(generators) + mySQLServerIdentityGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity(generators) + AddRelatedPropertyGeneratorsForMySQLServerIdentity(generators) + mySQLServerIdentityGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity{}), generators) + + return mySQLServerIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(MySQLServerIdentity_Type_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityDetailsGenerator()) +} + +func Test_MySQLServerSku_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 MySQLServerSku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerSku, MySQLServerSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerSku runs a test to see if a specific instance of MySQLServerSku round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerSku(subject MySQLServerSku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerSku + 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 MySQLServerSku instances for property testing - lazily instantiated by MySQLServerSkuGenerator() +var mySQLServerSkuGenerator gopter.Gen + +// MySQLServerSkuGenerator returns a generator of MySQLServerSku instances for property testing. +func MySQLServerSkuGenerator() gopter.Gen { + if mySQLServerSkuGenerator != nil { + return mySQLServerSkuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerSku(generators) + mySQLServerSkuGenerator = gen.Struct(reflect.TypeOf(MySQLServerSku{}), generators) + + return mySQLServerSkuGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerSku(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf(MySQLServerSku_Tier_Burstable, MySQLServerSku_Tier_GeneralPurpose, MySQLServerSku_Tier_MemoryOptimized)) +} + +func Test_Network_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 Network via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetwork, NetworkGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetwork runs a test to see if a specific instance of Network round trips to JSON and back losslessly +func RunJSONSerializationTestForNetwork(subject Network) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Network + 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 Network instances for property testing - lazily instantiated by NetworkGenerator() +var networkGenerator gopter.Gen + +// NetworkGenerator returns a generator of Network instances for property testing. +func NetworkGenerator() gopter.Gen { + if networkGenerator != nil { + return networkGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetwork(generators) + networkGenerator = gen.Struct(reflect.TypeOf(Network{}), generators) + + return networkGenerator +} + +// AddIndependentPropertyGeneratorsForNetwork is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetwork(gens map[string]gopter.Gen) { + gens["DelegatedSubnetResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PrivateDnsZoneResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) +} + +func Test_ServerProperties_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 ServerProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerProperties, ServerPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerProperties runs a test to see if a specific instance of ServerProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForServerProperties(subject ServerProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerProperties + 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 ServerProperties instances for property testing - lazily instantiated by ServerPropertiesGenerator() +var serverPropertiesGenerator gopter.Gen + +// ServerPropertiesGenerator returns a generator of ServerProperties instances for property testing. +// We first initialize serverPropertiesGenerator 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 ServerPropertiesGenerator() gopter.Gen { + if serverPropertiesGenerator != nil { + return serverPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerProperties(generators) + serverPropertiesGenerator = gen.Struct(reflect.TypeOf(ServerProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerProperties(generators) + AddRelatedPropertyGeneratorsForServerProperties(generators) + serverPropertiesGenerator = gen.Struct(reflect.TypeOf(ServerProperties{}), generators) + + return serverPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForServerProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerProperties(gens map[string]gopter.Gen) { + gens["AdministratorLogin"] = gen.PtrOf(gen.AlphaString()) + gens["AdministratorLoginPassword"] = gen.PtrOf(gen.AlphaString()) + gens["AvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf( + ServerProperties_CreateMode_Default, + ServerProperties_CreateMode_GeoRestore, + ServerProperties_CreateMode_PointInTimeRestore, + ServerProperties_CreateMode_Replica)) + gens["ReplicationRole"] = gen.PtrOf(gen.OneConstOf(ReplicationRole_None, ReplicationRole_Replica, ReplicationRole_Source)) + gens["RestorePointInTime"] = gen.PtrOf(gen.AlphaString()) + gens["SourceServerResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.OneConstOf(ServerVersion_57, ServerVersion_8021)) +} + +// AddRelatedPropertyGeneratorsForServerProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerProperties(gens map[string]gopter.Gen) { + gens["Backup"] = gen.PtrOf(BackupGenerator()) + gens["DataEncryption"] = gen.PtrOf(DataEncryptionGenerator()) + gens["HighAvailability"] = gen.PtrOf(HighAvailabilityGenerator()) + gens["ImportSourceProperties"] = gen.PtrOf(ImportSourcePropertiesGenerator()) + gens["MaintenanceWindow"] = gen.PtrOf(MaintenanceWindowGenerator()) + gens["Network"] = gen.PtrOf(NetworkGenerator()) + gens["Storage"] = gen.PtrOf(StorageGenerator()) +} + +func Test_Storage_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 Storage via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStorage, StorageGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStorage runs a test to see if a specific instance of Storage round trips to JSON and back losslessly +func RunJSONSerializationTestForStorage(subject Storage) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Storage + 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 Storage instances for property testing - lazily instantiated by StorageGenerator() +var storageGenerator gopter.Gen + +// StorageGenerator returns a generator of Storage instances for property testing. +func StorageGenerator() gopter.Gen { + if storageGenerator != nil { + return storageGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStorage(generators) + storageGenerator = gen.Struct(reflect.TypeOf(Storage{}), generators) + + return storageGenerator +} + +// AddIndependentPropertyGeneratorsForStorage is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStorage(gens map[string]gopter.Gen) { + gens["AutoGrow"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) + gens["AutoIoScaling"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) + gens["Iops"] = gen.PtrOf(gen.Int()) + gens["LogOnDisk"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) + gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) +} + +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/dbformysql/v1api20231230/arm/flexible_server_status_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen.go new file mode 100644 index 0000000000..dd4565cd5b --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen.go @@ -0,0 +1,451 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + +type FlexibleServer_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: The cmk identity for the server. + Identity *MySQLServerIdentity_STATUS `json:"identity,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: Properties of the server. + Properties *ServerProperties_STATUS `json:"properties,omitempty"` + + // Sku: The SKU (pricing tier) of the server. + Sku *MySQLServerSku_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"` +} + +// Properties to configure Identity for Bring your Own Keys +type MySQLServerIdentity_STATUS struct { + // PrincipalId: ObjectId from the KeyVault + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: TenantId from the KeyVault + TenantId *string `json:"tenantId,omitempty"` + + // Type: Type of managed service identity. + Type *MySQLServerIdentity_Type_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: Metadata of user assigned identity. + UserAssignedIdentities map[string]v1.JSON `json:"userAssignedIdentities,omitempty"` +} + +// Billing information related properties of a server. +type MySQLServerSku_STATUS struct { + // Name: The name of the sku, e.g. Standard_D32s_v3. + Name *string `json:"name,omitempty"` + + // Tier: The tier of the particular SKU, e.g. GeneralPurpose. + Tier *MySQLServerSku_Tier_STATUS `json:"tier,omitempty"` +} + +// The properties of a server. +type ServerProperties_STATUS struct { + // AdministratorLogin: The administrator's login name of a server. Can only be specified when the server is being created + // (and is required for creation). + AdministratorLogin *string `json:"administratorLogin,omitempty"` + + // AvailabilityZone: availability Zone information of the server. + AvailabilityZone *string `json:"availabilityZone,omitempty"` + + // Backup: Backup related properties of a server. + Backup *Backup_STATUS `json:"backup,omitempty"` + + // CreateMode: The mode to create a new MySQL server. + CreateMode *ServerProperties_CreateMode_STATUS `json:"createMode,omitempty"` + + // DataEncryption: The Data Encryption for CMK. + DataEncryption *DataEncryption_STATUS `json:"dataEncryption,omitempty"` + + // FullyQualifiedDomainName: The fully qualified domain name of a server. + FullyQualifiedDomainName *string `json:"fullyQualifiedDomainName,omitempty"` + + // HighAvailability: High availability related properties of a server. + HighAvailability *HighAvailability_STATUS `json:"highAvailability,omitempty"` + + // ImportSourceProperties: Source properties for import from storage. + ImportSourceProperties *ImportSourceProperties_STATUS `json:"importSourceProperties,omitempty"` + + // MaintenanceWindow: Maintenance window of a server. + MaintenanceWindow *MaintenanceWindow_STATUS `json:"maintenanceWindow,omitempty"` + + // Network: Network related properties of a server. + Network *Network_STATUS `json:"network,omitempty"` + + // PrivateEndpointConnections: PrivateEndpointConnections related properties of a server. + PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"` + + // ReplicaCapacity: The maximum number of replicas that a primary server can have. + ReplicaCapacity *int `json:"replicaCapacity,omitempty"` + + // ReplicationRole: The replication role. + ReplicationRole *ReplicationRole_STATUS `json:"replicationRole,omitempty"` + + // RestorePointInTime: Restore point creation time (ISO8601 format), specifying the time to restore from. + RestorePointInTime *string `json:"restorePointInTime,omitempty"` + + // SourceServerResourceId: The source MySQL server id. + SourceServerResourceId *string `json:"sourceServerResourceId,omitempty"` + + // State: The state of a server. + State *ServerProperties_State_STATUS `json:"state,omitempty"` + + // Storage: Storage related properties of a server. + Storage *Storage_STATUS `json:"storage,omitempty"` + + // Version: Server version. + Version *ServerVersion_STATUS `json:"version,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"` +} + +// Storage Profile properties of a server +type Backup_STATUS struct { + // BackupIntervalHours: Backup interval hours for the server. + BackupIntervalHours *int `json:"backupIntervalHours,omitempty"` + + // BackupRetentionDays: Backup retention days for the server. + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + + // EarliestRestoreDate: Earliest restore point creation time (ISO8601 format) + EarliestRestoreDate *string `json:"earliestRestoreDate,omitempty"` + + // GeoRedundantBackup: Whether or not geo redundant backup is enabled. + GeoRedundantBackup *EnableStatusEnum_STATUS `json:"geoRedundantBackup,omitempty"` +} + +// The date encryption for cmk. +type DataEncryption_STATUS struct { + // GeoBackupKeyURI: Geo backup key uri as key vault can't cross region, need cmk in same region as geo backup + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + + // GeoBackupUserAssignedIdentityId: Geo backup user identity resource id as identity can't cross region, need identity in + // same region as geo backup + GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"` + + // PrimaryKeyURI: Primary key uri + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + + // PrimaryUserAssignedIdentityId: Primary user identity resource id + PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"` + + // Type: The key type, AzureKeyVault for enable cmk, SystemManaged for disable cmk. + Type *DataEncryption_Type_STATUS `json:"type,omitempty"` +} + +// High availability properties of a server +type HighAvailability_STATUS struct { + // Mode: High availability mode for a server. + Mode *HighAvailability_Mode_STATUS `json:"mode,omitempty"` + + // StandbyAvailabilityZone: Availability zone of the standby server. + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` + + // State: The state of server high availability. + State *HighAvailability_State_STATUS `json:"state,omitempty"` +} + +// Import source related properties. +type ImportSourceProperties_STATUS struct { + // DataDirPath: Relative path of data directory in storage. + DataDirPath *string `json:"dataDirPath,omitempty"` + + // StorageType: Storage type of import source. + StorageType *ImportSourceProperties_StorageType_STATUS `json:"storageType,omitempty"` + + // StorageUrl: Uri of the import source storage. + StorageUrl *string `json:"storageUrl,omitempty"` +} + +// Maintenance window of a server. +type MaintenanceWindow_STATUS struct { + // CustomWindow: indicates whether custom window is enabled or disabled + CustomWindow *string `json:"customWindow,omitempty"` + + // DayOfWeek: day of week for maintenance window + DayOfWeek *int `json:"dayOfWeek,omitempty"` + + // StartHour: start hour for maintenance window + StartHour *int `json:"startHour,omitempty"` + + // StartMinute: start minute for maintenance window + StartMinute *int `json:"startMinute,omitempty"` +} + +type MySQLServerIdentity_Type_STATUS string + +const MySQLServerIdentity_Type_STATUS_UserAssigned = MySQLServerIdentity_Type_STATUS("UserAssigned") + +// Mapping from string to MySQLServerIdentity_Type_STATUS +var mySQLServerIdentity_Type_STATUS_Values = map[string]MySQLServerIdentity_Type_STATUS{ + "userassigned": MySQLServerIdentity_Type_STATUS_UserAssigned, +} + +type MySQLServerSku_Tier_STATUS string + +const ( + MySQLServerSku_Tier_STATUS_Burstable = MySQLServerSku_Tier_STATUS("Burstable") + MySQLServerSku_Tier_STATUS_GeneralPurpose = MySQLServerSku_Tier_STATUS("GeneralPurpose") + MySQLServerSku_Tier_STATUS_MemoryOptimized = MySQLServerSku_Tier_STATUS("MemoryOptimized") +) + +// Mapping from string to MySQLServerSku_Tier_STATUS +var mySQLServerSku_Tier_STATUS_Values = map[string]MySQLServerSku_Tier_STATUS{ + "burstable": MySQLServerSku_Tier_STATUS_Burstable, + "generalpurpose": MySQLServerSku_Tier_STATUS_GeneralPurpose, + "memoryoptimized": MySQLServerSku_Tier_STATUS_MemoryOptimized, +} + +// Network related properties of a server +type Network_STATUS struct { + // DelegatedSubnetResourceId: Delegated subnet resource id used to setup vnet for a server. + DelegatedSubnetResourceId *string `json:"delegatedSubnetResourceId,omitempty"` + + // PrivateDnsZoneResourceId: Private DNS zone resource id. + PrivateDnsZoneResourceId *string `json:"privateDnsZoneResourceId,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for this server. Value is 'Disabled' when server + // has VNet integration. + PublicNetworkAccess *EnableStatusEnum_STATUS `json:"publicNetworkAccess,omitempty"` +} + +// The private endpoint connection resource. +type PrivateEndpointConnection_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"` +} + +// The replication role. +type ReplicationRole_STATUS string + +const ( + ReplicationRole_STATUS_None = ReplicationRole_STATUS("None") + ReplicationRole_STATUS_Replica = ReplicationRole_STATUS("Replica") + ReplicationRole_STATUS_Source = ReplicationRole_STATUS("Source") +) + +// Mapping from string to ReplicationRole_STATUS +var replicationRole_STATUS_Values = map[string]ReplicationRole_STATUS{ + "none": ReplicationRole_STATUS_None, + "replica": ReplicationRole_STATUS_Replica, + "source": ReplicationRole_STATUS_Source, +} + +type ServerProperties_CreateMode_STATUS string + +const ( + ServerProperties_CreateMode_STATUS_Default = ServerProperties_CreateMode_STATUS("Default") + ServerProperties_CreateMode_STATUS_GeoRestore = ServerProperties_CreateMode_STATUS("GeoRestore") + ServerProperties_CreateMode_STATUS_PointInTimeRestore = ServerProperties_CreateMode_STATUS("PointInTimeRestore") + ServerProperties_CreateMode_STATUS_Replica = ServerProperties_CreateMode_STATUS("Replica") +) + +// Mapping from string to ServerProperties_CreateMode_STATUS +var serverProperties_CreateMode_STATUS_Values = map[string]ServerProperties_CreateMode_STATUS{ + "default": ServerProperties_CreateMode_STATUS_Default, + "georestore": ServerProperties_CreateMode_STATUS_GeoRestore, + "pointintimerestore": ServerProperties_CreateMode_STATUS_PointInTimeRestore, + "replica": ServerProperties_CreateMode_STATUS_Replica, +} + +type ServerProperties_State_STATUS string + +const ( + ServerProperties_State_STATUS_Disabled = ServerProperties_State_STATUS("Disabled") + ServerProperties_State_STATUS_Dropping = ServerProperties_State_STATUS("Dropping") + ServerProperties_State_STATUS_Ready = ServerProperties_State_STATUS("Ready") + ServerProperties_State_STATUS_Starting = ServerProperties_State_STATUS("Starting") + ServerProperties_State_STATUS_Stopped = ServerProperties_State_STATUS("Stopped") + ServerProperties_State_STATUS_Stopping = ServerProperties_State_STATUS("Stopping") + ServerProperties_State_STATUS_Updating = ServerProperties_State_STATUS("Updating") +) + +// Mapping from string to ServerProperties_State_STATUS +var serverProperties_State_STATUS_Values = map[string]ServerProperties_State_STATUS{ + "disabled": ServerProperties_State_STATUS_Disabled, + "dropping": ServerProperties_State_STATUS_Dropping, + "ready": ServerProperties_State_STATUS_Ready, + "starting": ServerProperties_State_STATUS_Starting, + "stopped": ServerProperties_State_STATUS_Stopped, + "stopping": ServerProperties_State_STATUS_Stopping, + "updating": ServerProperties_State_STATUS_Updating, +} + +// The version of a server. +type ServerVersion_STATUS string + +const ( + ServerVersion_STATUS_57 = ServerVersion_STATUS("5.7") + ServerVersion_STATUS_8021 = ServerVersion_STATUS("8.0.21") +) + +// Mapping from string to ServerVersion_STATUS +var serverVersion_STATUS_Values = map[string]ServerVersion_STATUS{ + "5.7": ServerVersion_STATUS_57, + "8.0.21": ServerVersion_STATUS_8021, +} + +// Storage Profile properties of a server +type Storage_STATUS struct { + // AutoGrow: Enable Storage Auto Grow or not. + AutoGrow *EnableStatusEnum_STATUS `json:"autoGrow,omitempty"` + + // AutoIoScaling: Enable IO Auto Scaling or not. + AutoIoScaling *EnableStatusEnum_STATUS `json:"autoIoScaling,omitempty"` + + // Iops: Storage IOPS for a server. + Iops *int `json:"iops,omitempty"` + + // LogOnDisk: Enable Log On Disk or not. + LogOnDisk *EnableStatusEnum_STATUS `json:"logOnDisk,omitempty"` + + // StorageSizeGB: Max storage size allowed for a server. + StorageSizeGB *int `json:"storageSizeGB,omitempty"` + + // StorageSku: The sku name of the server storage. + StorageSku *string `json:"storageSku,omitempty"` +} + +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, +} + +type DataEncryption_Type_STATUS string + +const ( + DataEncryption_Type_STATUS_AzureKeyVault = DataEncryption_Type_STATUS("AzureKeyVault") + DataEncryption_Type_STATUS_SystemManaged = DataEncryption_Type_STATUS("SystemManaged") +) + +// Mapping from string to DataEncryption_Type_STATUS +var dataEncryption_Type_STATUS_Values = map[string]DataEncryption_Type_STATUS{ + "azurekeyvault": DataEncryption_Type_STATUS_AzureKeyVault, + "systemmanaged": DataEncryption_Type_STATUS_SystemManaged, +} + +// Enum to indicate whether value is 'Enabled' or 'Disabled' +type EnableStatusEnum_STATUS string + +const ( + EnableStatusEnum_STATUS_Disabled = EnableStatusEnum_STATUS("Disabled") + EnableStatusEnum_STATUS_Enabled = EnableStatusEnum_STATUS("Enabled") +) + +// Mapping from string to EnableStatusEnum_STATUS +var enableStatusEnum_STATUS_Values = map[string]EnableStatusEnum_STATUS{ + "disabled": EnableStatusEnum_STATUS_Disabled, + "enabled": EnableStatusEnum_STATUS_Enabled, +} + +type HighAvailability_Mode_STATUS string + +const ( + HighAvailability_Mode_STATUS_Disabled = HighAvailability_Mode_STATUS("Disabled") + HighAvailability_Mode_STATUS_SameZone = HighAvailability_Mode_STATUS("SameZone") + HighAvailability_Mode_STATUS_ZoneRedundant = HighAvailability_Mode_STATUS("ZoneRedundant") +) + +// Mapping from string to HighAvailability_Mode_STATUS +var highAvailability_Mode_STATUS_Values = map[string]HighAvailability_Mode_STATUS{ + "disabled": HighAvailability_Mode_STATUS_Disabled, + "samezone": HighAvailability_Mode_STATUS_SameZone, + "zoneredundant": HighAvailability_Mode_STATUS_ZoneRedundant, +} + +type HighAvailability_State_STATUS string + +const ( + HighAvailability_State_STATUS_CreatingStandby = HighAvailability_State_STATUS("CreatingStandby") + HighAvailability_State_STATUS_FailingOver = HighAvailability_State_STATUS("FailingOver") + HighAvailability_State_STATUS_Healthy = HighAvailability_State_STATUS("Healthy") + HighAvailability_State_STATUS_NotEnabled = HighAvailability_State_STATUS("NotEnabled") + HighAvailability_State_STATUS_RemovingStandby = HighAvailability_State_STATUS("RemovingStandby") +) + +// Mapping from string to HighAvailability_State_STATUS +var highAvailability_State_STATUS_Values = map[string]HighAvailability_State_STATUS{ + "creatingstandby": HighAvailability_State_STATUS_CreatingStandby, + "failingover": HighAvailability_State_STATUS_FailingOver, + "healthy": HighAvailability_State_STATUS_Healthy, + "notenabled": HighAvailability_State_STATUS_NotEnabled, + "removingstandby": HighAvailability_State_STATUS_RemovingStandby, +} + +type ImportSourceProperties_StorageType_STATUS string + +const ImportSourceProperties_StorageType_STATUS_AzureBlob = ImportSourceProperties_StorageType_STATUS("AzureBlob") + +// Mapping from string to ImportSourceProperties_StorageType_STATUS +var importSourceProperties_StorageType_STATUS_Values = map[string]ImportSourceProperties_StorageType_STATUS{ + "azureblob": ImportSourceProperties_StorageType_STATUS_AzureBlob, +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen_test.go new file mode 100644 index 0000000000..e6d83b4454 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_server_status_types_gen_test.go @@ -0,0 +1,913 @@ +// 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_Backup_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 Backup_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForBackup_STATUS, Backup_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForBackup_STATUS runs a test to see if a specific instance of Backup_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForBackup_STATUS(subject Backup_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Backup_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 Backup_STATUS instances for property testing - lazily instantiated by Backup_STATUSGenerator() +var backup_STATUSGenerator gopter.Gen + +// Backup_STATUSGenerator returns a generator of Backup_STATUS instances for property testing. +func Backup_STATUSGenerator() gopter.Gen { + if backup_STATUSGenerator != nil { + return backup_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForBackup_STATUS(generators) + backup_STATUSGenerator = gen.Struct(reflect.TypeOf(Backup_STATUS{}), generators) + + return backup_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForBackup_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForBackup_STATUS(gens map[string]gopter.Gen) { + gens["BackupIntervalHours"] = gen.PtrOf(gen.Int()) + gens["BackupRetentionDays"] = gen.PtrOf(gen.Int()) + gens["EarliestRestoreDate"] = gen.PtrOf(gen.AlphaString()) + gens["GeoRedundantBackup"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) +} + +func Test_DataEncryption_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 DataEncryption_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataEncryption_STATUS, DataEncryption_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataEncryption_STATUS runs a test to see if a specific instance of DataEncryption_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDataEncryption_STATUS(subject DataEncryption_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataEncryption_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 DataEncryption_STATUS instances for property testing - lazily instantiated by +// DataEncryption_STATUSGenerator() +var dataEncryption_STATUSGenerator gopter.Gen + +// DataEncryption_STATUSGenerator returns a generator of DataEncryption_STATUS instances for property testing. +func DataEncryption_STATUSGenerator() gopter.Gen { + if dataEncryption_STATUSGenerator != nil { + return dataEncryption_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataEncryption_STATUS(generators) + dataEncryption_STATUSGenerator = gen.Struct(reflect.TypeOf(DataEncryption_STATUS{}), generators) + + return dataEncryption_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDataEncryption_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataEncryption_STATUS(gens map[string]gopter.Gen) { + gens["GeoBackupKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["GeoBackupUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(DataEncryption_Type_STATUS_AzureKeyVault, DataEncryption_Type_STATUS_SystemManaged)) +} + +func Test_FlexibleServer_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 FlexibleServer_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer_STATUS, FlexibleServer_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer_STATUS runs a test to see if a specific instance of FlexibleServer_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer_STATUS(subject FlexibleServer_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer_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 FlexibleServer_STATUS instances for property testing - lazily instantiated by +// FlexibleServer_STATUSGenerator() +var flexibleServer_STATUSGenerator gopter.Gen + +// FlexibleServer_STATUSGenerator returns a generator of FlexibleServer_STATUS instances for property testing. +// We first initialize flexibleServer_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 FlexibleServer_STATUSGenerator() gopter.Gen { + if flexibleServer_STATUSGenerator != nil { + return flexibleServer_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(generators) + flexibleServer_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(generators) + flexibleServer_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_STATUS{}), generators) + + return flexibleServer_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServer_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServer_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()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServer_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(MySQLServerIdentity_STATUSGenerator()) + gens["Properties"] = gen.PtrOf(ServerProperties_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(MySQLServerSku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_HighAvailability_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 HighAvailability_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForHighAvailability_STATUS, HighAvailability_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForHighAvailability_STATUS runs a test to see if a specific instance of HighAvailability_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForHighAvailability_STATUS(subject HighAvailability_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual HighAvailability_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 HighAvailability_STATUS instances for property testing - lazily instantiated by +// HighAvailability_STATUSGenerator() +var highAvailability_STATUSGenerator gopter.Gen + +// HighAvailability_STATUSGenerator returns a generator of HighAvailability_STATUS instances for property testing. +func HighAvailability_STATUSGenerator() gopter.Gen { + if highAvailability_STATUSGenerator != nil { + return highAvailability_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForHighAvailability_STATUS(generators) + highAvailability_STATUSGenerator = gen.Struct(reflect.TypeOf(HighAvailability_STATUS{}), generators) + + return highAvailability_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForHighAvailability_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForHighAvailability_STATUS(gens map[string]gopter.Gen) { + gens["Mode"] = gen.PtrOf(gen.OneConstOf(HighAvailability_Mode_STATUS_Disabled, HighAvailability_Mode_STATUS_SameZone, HighAvailability_Mode_STATUS_ZoneRedundant)) + gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["State"] = gen.PtrOf(gen.OneConstOf( + HighAvailability_State_STATUS_CreatingStandby, + HighAvailability_State_STATUS_FailingOver, + HighAvailability_State_STATUS_Healthy, + HighAvailability_State_STATUS_NotEnabled, + HighAvailability_State_STATUS_RemovingStandby)) +} + +func Test_ImportSourceProperties_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 ImportSourceProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForImportSourceProperties_STATUS, ImportSourceProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForImportSourceProperties_STATUS runs a test to see if a specific instance of ImportSourceProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForImportSourceProperties_STATUS(subject ImportSourceProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ImportSourceProperties_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 ImportSourceProperties_STATUS instances for property testing - lazily instantiated by +// ImportSourceProperties_STATUSGenerator() +var importSourceProperties_STATUSGenerator gopter.Gen + +// ImportSourceProperties_STATUSGenerator returns a generator of ImportSourceProperties_STATUS instances for property testing. +func ImportSourceProperties_STATUSGenerator() gopter.Gen { + if importSourceProperties_STATUSGenerator != nil { + return importSourceProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(generators) + importSourceProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ImportSourceProperties_STATUS{}), generators) + + return importSourceProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(gens map[string]gopter.Gen) { + gens["DataDirPath"] = gen.PtrOf(gen.AlphaString()) + gens["StorageType"] = gen.PtrOf(gen.OneConstOf(ImportSourceProperties_StorageType_STATUS_AzureBlob)) + gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_MaintenanceWindow_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 MaintenanceWindow_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMaintenanceWindow_STATUS, MaintenanceWindow_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMaintenanceWindow_STATUS runs a test to see if a specific instance of MaintenanceWindow_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMaintenanceWindow_STATUS(subject MaintenanceWindow_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MaintenanceWindow_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 MaintenanceWindow_STATUS instances for property testing - lazily instantiated by +// MaintenanceWindow_STATUSGenerator() +var maintenanceWindow_STATUSGenerator gopter.Gen + +// MaintenanceWindow_STATUSGenerator returns a generator of MaintenanceWindow_STATUS instances for property testing. +func MaintenanceWindow_STATUSGenerator() gopter.Gen { + if maintenanceWindow_STATUSGenerator != nil { + return maintenanceWindow_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(generators) + maintenanceWindow_STATUSGenerator = gen.Struct(reflect.TypeOf(MaintenanceWindow_STATUS{}), generators) + + return maintenanceWindow_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(gens map[string]gopter.Gen) { + gens["CustomWindow"] = gen.PtrOf(gen.AlphaString()) + gens["DayOfWeek"] = gen.PtrOf(gen.Int()) + gens["StartHour"] = gen.PtrOf(gen.Int()) + gens["StartMinute"] = gen.PtrOf(gen.Int()) +} + +func Test_MySQLServerIdentity_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 MySQLServerIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerIdentity_STATUS, MySQLServerIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerIdentity_STATUS runs a test to see if a specific instance of MySQLServerIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerIdentity_STATUS(subject MySQLServerIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerIdentity_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 MySQLServerIdentity_STATUS instances for property testing - lazily instantiated by +// MySQLServerIdentity_STATUSGenerator() +var mySQLServerIdentity_STATUSGenerator gopter.Gen + +// MySQLServerIdentity_STATUSGenerator returns a generator of MySQLServerIdentity_STATUS instances for property testing. +func MySQLServerIdentity_STATUSGenerator() gopter.Gen { + if mySQLServerIdentity_STATUSGenerator != nil { + return mySQLServerIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(generators) + mySQLServerIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity_STATUS{}), generators) + + return mySQLServerIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(MySQLServerIdentity_Type_STATUS_UserAssigned)) +} + +func Test_MySQLServerSku_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 MySQLServerSku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerSku_STATUS, MySQLServerSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerSku_STATUS runs a test to see if a specific instance of MySQLServerSku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerSku_STATUS(subject MySQLServerSku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerSku_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 MySQLServerSku_STATUS instances for property testing - lazily instantiated by +// MySQLServerSku_STATUSGenerator() +var mySQLServerSku_STATUSGenerator gopter.Gen + +// MySQLServerSku_STATUSGenerator returns a generator of MySQLServerSku_STATUS instances for property testing. +func MySQLServerSku_STATUSGenerator() gopter.Gen { + if mySQLServerSku_STATUSGenerator != nil { + return mySQLServerSku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(generators) + mySQLServerSku_STATUSGenerator = gen.Struct(reflect.TypeOf(MySQLServerSku_STATUS{}), generators) + + return mySQLServerSku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf(MySQLServerSku_Tier_STATUS_Burstable, MySQLServerSku_Tier_STATUS_GeneralPurpose, MySQLServerSku_Tier_STATUS_MemoryOptimized)) +} + +func Test_Network_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 Network_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetwork_STATUS, Network_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetwork_STATUS runs a test to see if a specific instance of Network_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetwork_STATUS(subject Network_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Network_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 Network_STATUS instances for property testing - lazily instantiated by Network_STATUSGenerator() +var network_STATUSGenerator gopter.Gen + +// Network_STATUSGenerator returns a generator of Network_STATUS instances for property testing. +func Network_STATUSGenerator() gopter.Gen { + if network_STATUSGenerator != nil { + return network_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetwork_STATUS(generators) + network_STATUSGenerator = gen.Struct(reflect.TypeOf(Network_STATUS{}), generators) + + return network_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetwork_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetwork_STATUS(gens map[string]gopter.Gen) { + gens["DelegatedSubnetResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PrivateDnsZoneResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) +} + +func Test_PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS runs a test to see if a specific instance of PrivateEndpointConnection_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnection_STATUSGenerator() +var privateEndpointConnection_STATUSGenerator gopter.Gen + +// PrivateEndpointConnection_STATUSGenerator returns a generator of PrivateEndpointConnection_STATUS instances for property testing. +func PrivateEndpointConnection_STATUSGenerator() gopter.Gen { + if privateEndpointConnection_STATUSGenerator != nil { + return privateEndpointConnection_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(generators) + privateEndpointConnection_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS{}), generators) + + return privateEndpointConnection_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ServerProperties_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 ServerProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForServerProperties_STATUS, ServerProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForServerProperties_STATUS runs a test to see if a specific instance of ServerProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForServerProperties_STATUS(subject ServerProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ServerProperties_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 ServerProperties_STATUS instances for property testing - lazily instantiated by +// ServerProperties_STATUSGenerator() +var serverProperties_STATUSGenerator gopter.Gen + +// ServerProperties_STATUSGenerator returns a generator of ServerProperties_STATUS instances for property testing. +// We first initialize serverProperties_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 ServerProperties_STATUSGenerator() gopter.Gen { + if serverProperties_STATUSGenerator != nil { + return serverProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerProperties_STATUS(generators) + serverProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForServerProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForServerProperties_STATUS(generators) + serverProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ServerProperties_STATUS{}), generators) + + return serverProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForServerProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForServerProperties_STATUS(gens map[string]gopter.Gen) { + gens["AdministratorLogin"] = gen.PtrOf(gen.AlphaString()) + gens["AvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf( + ServerProperties_CreateMode_STATUS_Default, + ServerProperties_CreateMode_STATUS_GeoRestore, + ServerProperties_CreateMode_STATUS_PointInTimeRestore, + ServerProperties_CreateMode_STATUS_Replica)) + gens["FullyQualifiedDomainName"] = gen.PtrOf(gen.AlphaString()) + gens["ReplicaCapacity"] = gen.PtrOf(gen.Int()) + gens["ReplicationRole"] = gen.PtrOf(gen.OneConstOf(ReplicationRole_STATUS_None, ReplicationRole_STATUS_Replica, ReplicationRole_STATUS_Source)) + gens["RestorePointInTime"] = gen.PtrOf(gen.AlphaString()) + gens["SourceServerResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["State"] = gen.PtrOf(gen.OneConstOf( + ServerProperties_State_STATUS_Disabled, + ServerProperties_State_STATUS_Dropping, + ServerProperties_State_STATUS_Ready, + ServerProperties_State_STATUS_Starting, + ServerProperties_State_STATUS_Stopped, + ServerProperties_State_STATUS_Stopping, + ServerProperties_State_STATUS_Updating)) + gens["Version"] = gen.PtrOf(gen.OneConstOf(ServerVersion_STATUS_57, ServerVersion_STATUS_8021)) +} + +// AddRelatedPropertyGeneratorsForServerProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForServerProperties_STATUS(gens map[string]gopter.Gen) { + gens["Backup"] = gen.PtrOf(Backup_STATUSGenerator()) + gens["DataEncryption"] = gen.PtrOf(DataEncryption_STATUSGenerator()) + gens["HighAvailability"] = gen.PtrOf(HighAvailability_STATUSGenerator()) + gens["ImportSourceProperties"] = gen.PtrOf(ImportSourceProperties_STATUSGenerator()) + gens["MaintenanceWindow"] = gen.PtrOf(MaintenanceWindow_STATUSGenerator()) + gens["Network"] = gen.PtrOf(Network_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUSGenerator()) + gens["Storage"] = gen.PtrOf(Storage_STATUSGenerator()) +} + +func Test_Storage_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 Storage_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStorage_STATUS, Storage_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStorage_STATUS runs a test to see if a specific instance of Storage_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForStorage_STATUS(subject Storage_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Storage_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 Storage_STATUS instances for property testing - lazily instantiated by Storage_STATUSGenerator() +var storage_STATUSGenerator gopter.Gen + +// Storage_STATUSGenerator returns a generator of Storage_STATUS instances for property testing. +func Storage_STATUSGenerator() gopter.Gen { + if storage_STATUSGenerator != nil { + return storage_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStorage_STATUS(generators) + storage_STATUSGenerator = gen.Struct(reflect.TypeOf(Storage_STATUS{}), generators) + + return storage_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForStorage_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStorage_STATUS(gens map[string]gopter.Gen) { + gens["AutoGrow"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) + gens["AutoIoScaling"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) + gens["Iops"] = gen.PtrOf(gen.Int()) + gens["LogOnDisk"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) + gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) + gens["StorageSku"] = gen.PtrOf(gen.AlphaString()) +} + +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/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen.go new file mode 100644 index 0000000000..84dbcea00d --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen.go @@ -0,0 +1,56 @@ +// 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 FlexibleServersAdministrator_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: The properties of an administrator. + Properties *AdministratorProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &FlexibleServersAdministrator_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (administrator FlexibleServersAdministrator_Spec) GetAPIVersion() string { + return "2023-12-30" +} + +// GetName returns the Name of the resource +func (administrator *FlexibleServersAdministrator_Spec) GetName() string { + return administrator.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/administrators" +func (administrator *FlexibleServersAdministrator_Spec) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/administrators" +} + +// The properties of an administrator. +type AdministratorProperties struct { + // AdministratorType: Type of the sever administrator. + AdministratorType *AdministratorProperties_AdministratorType `json:"administratorType,omitempty"` + IdentityResourceId *string `json:"identityResourceId,omitempty"` + + // Login: Login name of the server administrator. + Login *string `json:"login,omitempty"` + + // Sid: SID (object ID) of the server administrator. + Sid *string `json:"sid,omitempty" optionalConfigMapPair:"Sid"` + + // TenantId: Tenant ID of the administrator. + TenantId *string `json:"tenantId,omitempty" optionalConfigMapPair:"TenantId"` +} + +// +kubebuilder:validation:Enum={"ActiveDirectory"} +type AdministratorProperties_AdministratorType string + +const AdministratorProperties_AdministratorType_ActiveDirectory = AdministratorProperties_AdministratorType("ActiveDirectory") + +// Mapping from string to AdministratorProperties_AdministratorType +var administratorProperties_AdministratorType_Values = map[string]AdministratorProperties_AdministratorType{ + "activedirectory": AdministratorProperties_AdministratorType_ActiveDirectory, +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen_test.go new file mode 100644 index 0000000000..f0a444edd4 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_spec_types_gen_test.go @@ -0,0 +1,158 @@ +// 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_AdministratorProperties_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 AdministratorProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForAdministratorProperties, AdministratorPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForAdministratorProperties runs a test to see if a specific instance of AdministratorProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForAdministratorProperties(subject AdministratorProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual AdministratorProperties + 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 AdministratorProperties instances for property testing - lazily instantiated by +// AdministratorPropertiesGenerator() +var administratorPropertiesGenerator gopter.Gen + +// AdministratorPropertiesGenerator returns a generator of AdministratorProperties instances for property testing. +func AdministratorPropertiesGenerator() gopter.Gen { + if administratorPropertiesGenerator != nil { + return administratorPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForAdministratorProperties(generators) + administratorPropertiesGenerator = gen.Struct(reflect.TypeOf(AdministratorProperties{}), generators) + + return administratorPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForAdministratorProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForAdministratorProperties(gens map[string]gopter.Gen) { + gens["AdministratorType"] = gen.PtrOf(gen.OneConstOf(AdministratorProperties_AdministratorType_ActiveDirectory)) + gens["IdentityResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["Login"] = gen.PtrOf(gen.AlphaString()) + gens["Sid"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersAdministrator_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 FlexibleServersAdministrator_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator_Spec, FlexibleServersAdministrator_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator_Spec runs a test to see if a specific instance of FlexibleServersAdministrator_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator_Spec(subject FlexibleServersAdministrator_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator_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 FlexibleServersAdministrator_Spec instances for property testing - lazily instantiated by +// FlexibleServersAdministrator_SpecGenerator() +var flexibleServersAdministrator_SpecGenerator gopter.Gen + +// FlexibleServersAdministrator_SpecGenerator returns a generator of FlexibleServersAdministrator_Spec instances for property testing. +// We first initialize flexibleServersAdministrator_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 FlexibleServersAdministrator_SpecGenerator() gopter.Gen { + if flexibleServersAdministrator_SpecGenerator != nil { + return flexibleServersAdministrator_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + flexibleServersAdministrator_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + flexibleServersAdministrator_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_Spec{}), generators) + + return flexibleServersAdministrator_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(AdministratorPropertiesGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen.go new file mode 100644 index 0000000000..d2ec0640f7 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen.go @@ -0,0 +1,49 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type FlexibleServersAdministrator_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: The properties of an administrator. + Properties *AdministratorProperties_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"` +} + +// The properties of an administrator. +type AdministratorProperties_STATUS struct { + // AdministratorType: Type of the sever administrator. + AdministratorType *AdministratorProperties_AdministratorType_STATUS `json:"administratorType,omitempty"` + + // IdentityResourceId: The resource id of the identity used for AAD Authentication. + IdentityResourceId *string `json:"identityResourceId,omitempty"` + + // Login: Login name of the server administrator. + Login *string `json:"login,omitempty"` + + // Sid: SID (object ID) of the server administrator. + Sid *string `json:"sid,omitempty"` + + // TenantId: Tenant ID of the administrator. + TenantId *string `json:"tenantId,omitempty"` +} + +type AdministratorProperties_AdministratorType_STATUS string + +const AdministratorProperties_AdministratorType_STATUS_ActiveDirectory = AdministratorProperties_AdministratorType_STATUS("ActiveDirectory") + +// Mapping from string to AdministratorProperties_AdministratorType_STATUS +var administratorProperties_AdministratorType_STATUS_Values = map[string]AdministratorProperties_AdministratorType_STATUS{ + "activedirectory": AdministratorProperties_AdministratorType_STATUS_ActiveDirectory, +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen_test.go new file mode 100644 index 0000000000..1b6856edba --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_administrator_status_types_gen_test.go @@ -0,0 +1,161 @@ +// 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_AdministratorProperties_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 AdministratorProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForAdministratorProperties_STATUS, AdministratorProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForAdministratorProperties_STATUS runs a test to see if a specific instance of AdministratorProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForAdministratorProperties_STATUS(subject AdministratorProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual AdministratorProperties_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 AdministratorProperties_STATUS instances for property testing - lazily instantiated by +// AdministratorProperties_STATUSGenerator() +var administratorProperties_STATUSGenerator gopter.Gen + +// AdministratorProperties_STATUSGenerator returns a generator of AdministratorProperties_STATUS instances for property testing. +func AdministratorProperties_STATUSGenerator() gopter.Gen { + if administratorProperties_STATUSGenerator != nil { + return administratorProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForAdministratorProperties_STATUS(generators) + administratorProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(AdministratorProperties_STATUS{}), generators) + + return administratorProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForAdministratorProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForAdministratorProperties_STATUS(gens map[string]gopter.Gen) { + gens["AdministratorType"] = gen.PtrOf(gen.OneConstOf(AdministratorProperties_AdministratorType_STATUS_ActiveDirectory)) + gens["IdentityResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["Login"] = gen.PtrOf(gen.AlphaString()) + gens["Sid"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersAdministrator_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 FlexibleServersAdministrator_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator_STATUS, FlexibleServersAdministrator_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator_STATUS runs a test to see if a specific instance of FlexibleServersAdministrator_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator_STATUS(subject FlexibleServersAdministrator_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator_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 FlexibleServersAdministrator_STATUS instances for property testing - lazily instantiated by +// FlexibleServersAdministrator_STATUSGenerator() +var flexibleServersAdministrator_STATUSGenerator gopter.Gen + +// FlexibleServersAdministrator_STATUSGenerator returns a generator of FlexibleServersAdministrator_STATUS instances for property testing. +// We first initialize flexibleServersAdministrator_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 FlexibleServersAdministrator_STATUSGenerator() gopter.Gen { + if flexibleServersAdministrator_STATUSGenerator != nil { + return flexibleServersAdministrator_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + flexibleServersAdministrator_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + flexibleServersAdministrator_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_STATUS{}), generators) + + return flexibleServersAdministrator_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(AdministratorProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen.go new file mode 100644 index 0000000000..8391db3e2c --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen.go @@ -0,0 +1,56 @@ +// 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 FlexibleServersConfiguration_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: The properties of a configuration. + Properties *ConfigurationProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &FlexibleServersConfiguration_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (configuration FlexibleServersConfiguration_Spec) GetAPIVersion() string { + return "2023-12-30" +} + +// GetName returns the Name of the resource +func (configuration *FlexibleServersConfiguration_Spec) GetName() string { + return configuration.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/configurations" +func (configuration *FlexibleServersConfiguration_Spec) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/configurations" +} + +// The properties of a configuration. +type ConfigurationProperties struct { + // CurrentValue: Current value of the configuration. + CurrentValue *string `json:"currentValue,omitempty"` + + // Source: Source of the configuration. + Source *ConfigurationProperties_Source `json:"source,omitempty"` + + // Value: Value of the configuration. + Value *string `json:"value,omitempty"` +} + +// +kubebuilder:validation:Enum={"system-default","user-override"} +type ConfigurationProperties_Source string + +const ( + ConfigurationProperties_Source_SystemDefault = ConfigurationProperties_Source("system-default") + ConfigurationProperties_Source_UserOverride = ConfigurationProperties_Source("user-override") +) + +// Mapping from string to ConfigurationProperties_Source +var configurationProperties_Source_Values = map[string]ConfigurationProperties_Source{ + "system-default": ConfigurationProperties_Source_SystemDefault, + "user-override": ConfigurationProperties_Source_UserOverride, +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_spec_types_gen_test.go new file mode 100644 index 0000000000..aa47a6a6b1 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_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_ConfigurationProperties_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 ConfigurationProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationProperties, ConfigurationPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationProperties runs a test to see if a specific instance of ConfigurationProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationProperties(subject ConfigurationProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationProperties + 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 ConfigurationProperties instances for property testing - lazily instantiated by +// ConfigurationPropertiesGenerator() +var configurationPropertiesGenerator gopter.Gen + +// ConfigurationPropertiesGenerator returns a generator of ConfigurationProperties instances for property testing. +func ConfigurationPropertiesGenerator() gopter.Gen { + if configurationPropertiesGenerator != nil { + return configurationPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationProperties(generators) + configurationPropertiesGenerator = gen.Struct(reflect.TypeOf(ConfigurationProperties{}), generators) + + return configurationPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationProperties(gens map[string]gopter.Gen) { + gens["CurrentValue"] = gen.PtrOf(gen.AlphaString()) + gens["Source"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_Source_SystemDefault, ConfigurationProperties_Source_UserOverride)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersConfiguration_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 FlexibleServersConfiguration_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration_Spec, FlexibleServersConfiguration_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration_Spec runs a test to see if a specific instance of FlexibleServersConfiguration_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration_Spec(subject FlexibleServersConfiguration_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration_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 FlexibleServersConfiguration_Spec instances for property testing - lazily instantiated by +// FlexibleServersConfiguration_SpecGenerator() +var flexibleServersConfiguration_SpecGenerator gopter.Gen + +// FlexibleServersConfiguration_SpecGenerator returns a generator of FlexibleServersConfiguration_Spec instances for property testing. +// We first initialize flexibleServersConfiguration_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 FlexibleServersConfiguration_SpecGenerator() gopter.Gen { + if flexibleServersConfiguration_SpecGenerator != nil { + return flexibleServersConfiguration_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + flexibleServersConfiguration_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + flexibleServersConfiguration_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_Spec{}), generators) + + return flexibleServersConfiguration_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ConfigurationPropertiesGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen.go new file mode 100644 index 0000000000..b0cf10af5a --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen.go @@ -0,0 +1,110 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type FlexibleServersConfiguration_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: The properties of a configuration. + Properties *ConfigurationProperties_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"` +} + +// The properties of a configuration. +type ConfigurationProperties_STATUS struct { + // AllowedValues: Allowed values of the configuration. + AllowedValues *string `json:"allowedValues,omitempty"` + + // CurrentValue: Current value of the configuration. + CurrentValue *string `json:"currentValue,omitempty"` + + // DataType: Data type of the configuration. + DataType *string `json:"dataType,omitempty"` + + // DefaultValue: Default value of the configuration. + DefaultValue *string `json:"defaultValue,omitempty"` + + // Description: Description of the configuration. + Description *string `json:"description,omitempty"` + + // DocumentationLink: The link used to get the document from community or Azure site. + DocumentationLink *string `json:"documentationLink,omitempty"` + + // IsConfigPendingRestart: If is the configuration pending restart or not. + IsConfigPendingRestart *ConfigurationProperties_IsConfigPendingRestart_STATUS `json:"isConfigPendingRestart,omitempty"` + + // IsDynamicConfig: If is the configuration dynamic. + IsDynamicConfig *ConfigurationProperties_IsDynamicConfig_STATUS `json:"isDynamicConfig,omitempty"` + + // IsReadOnly: If is the configuration read only. + IsReadOnly *ConfigurationProperties_IsReadOnly_STATUS `json:"isReadOnly,omitempty"` + + // Source: Source of the configuration. + Source *ConfigurationProperties_Source_STATUS `json:"source,omitempty"` + + // Value: Value of the configuration. + Value *string `json:"value,omitempty"` +} + +type ConfigurationProperties_IsConfigPendingRestart_STATUS string + +const ( + ConfigurationProperties_IsConfigPendingRestart_STATUS_False = ConfigurationProperties_IsConfigPendingRestart_STATUS("False") + ConfigurationProperties_IsConfigPendingRestart_STATUS_True = ConfigurationProperties_IsConfigPendingRestart_STATUS("True") +) + +// Mapping from string to ConfigurationProperties_IsConfigPendingRestart_STATUS +var configurationProperties_IsConfigPendingRestart_STATUS_Values = map[string]ConfigurationProperties_IsConfigPendingRestart_STATUS{ + "false": ConfigurationProperties_IsConfigPendingRestart_STATUS_False, + "true": ConfigurationProperties_IsConfigPendingRestart_STATUS_True, +} + +type ConfigurationProperties_IsDynamicConfig_STATUS string + +const ( + ConfigurationProperties_IsDynamicConfig_STATUS_False = ConfigurationProperties_IsDynamicConfig_STATUS("False") + ConfigurationProperties_IsDynamicConfig_STATUS_True = ConfigurationProperties_IsDynamicConfig_STATUS("True") +) + +// Mapping from string to ConfigurationProperties_IsDynamicConfig_STATUS +var configurationProperties_IsDynamicConfig_STATUS_Values = map[string]ConfigurationProperties_IsDynamicConfig_STATUS{ + "false": ConfigurationProperties_IsDynamicConfig_STATUS_False, + "true": ConfigurationProperties_IsDynamicConfig_STATUS_True, +} + +type ConfigurationProperties_IsReadOnly_STATUS string + +const ( + ConfigurationProperties_IsReadOnly_STATUS_False = ConfigurationProperties_IsReadOnly_STATUS("False") + ConfigurationProperties_IsReadOnly_STATUS_True = ConfigurationProperties_IsReadOnly_STATUS("True") +) + +// Mapping from string to ConfigurationProperties_IsReadOnly_STATUS +var configurationProperties_IsReadOnly_STATUS_Values = map[string]ConfigurationProperties_IsReadOnly_STATUS{ + "false": ConfigurationProperties_IsReadOnly_STATUS_False, + "true": ConfigurationProperties_IsReadOnly_STATUS_True, +} + +type ConfigurationProperties_Source_STATUS string + +const ( + ConfigurationProperties_Source_STATUS_SystemDefault = ConfigurationProperties_Source_STATUS("system-default") + ConfigurationProperties_Source_STATUS_UserOverride = ConfigurationProperties_Source_STATUS("user-override") +) + +// Mapping from string to ConfigurationProperties_Source_STATUS +var configurationProperties_Source_STATUS_Values = map[string]ConfigurationProperties_Source_STATUS{ + "system-default": ConfigurationProperties_Source_STATUS_SystemDefault, + "user-override": ConfigurationProperties_Source_STATUS_UserOverride, +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen_test.go new file mode 100644 index 0000000000..5a73bdea1a --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_configuration_status_types_gen_test.go @@ -0,0 +1,167 @@ +// 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_ConfigurationProperties_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 ConfigurationProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationProperties_STATUS, ConfigurationProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationProperties_STATUS runs a test to see if a specific instance of ConfigurationProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationProperties_STATUS(subject ConfigurationProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationProperties_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 ConfigurationProperties_STATUS instances for property testing - lazily instantiated by +// ConfigurationProperties_STATUSGenerator() +var configurationProperties_STATUSGenerator gopter.Gen + +// ConfigurationProperties_STATUSGenerator returns a generator of ConfigurationProperties_STATUS instances for property testing. +func ConfigurationProperties_STATUSGenerator() gopter.Gen { + if configurationProperties_STATUSGenerator != nil { + return configurationProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationProperties_STATUS(generators) + configurationProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationProperties_STATUS{}), generators) + + return configurationProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationProperties_STATUS(gens map[string]gopter.Gen) { + gens["AllowedValues"] = gen.PtrOf(gen.AlphaString()) + gens["CurrentValue"] = gen.PtrOf(gen.AlphaString()) + gens["DataType"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultValue"] = gen.PtrOf(gen.AlphaString()) + gens["Description"] = gen.PtrOf(gen.AlphaString()) + gens["DocumentationLink"] = gen.PtrOf(gen.AlphaString()) + gens["IsConfigPendingRestart"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_IsConfigPendingRestart_STATUS_False, ConfigurationProperties_IsConfigPendingRestart_STATUS_True)) + gens["IsDynamicConfig"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_IsDynamicConfig_STATUS_False, ConfigurationProperties_IsDynamicConfig_STATUS_True)) + gens["IsReadOnly"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_IsReadOnly_STATUS_False, ConfigurationProperties_IsReadOnly_STATUS_True)) + gens["Source"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_Source_STATUS_SystemDefault, ConfigurationProperties_Source_STATUS_UserOverride)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersConfiguration_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 FlexibleServersConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration_STATUS, FlexibleServersConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration_STATUS runs a test to see if a specific instance of FlexibleServersConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration_STATUS(subject FlexibleServersConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration_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 FlexibleServersConfiguration_STATUS instances for property testing - lazily instantiated by +// FlexibleServersConfiguration_STATUSGenerator() +var flexibleServersConfiguration_STATUSGenerator gopter.Gen + +// FlexibleServersConfiguration_STATUSGenerator returns a generator of FlexibleServersConfiguration_STATUS instances for property testing. +// We first initialize flexibleServersConfiguration_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 FlexibleServersConfiguration_STATUSGenerator() gopter.Gen { + if flexibleServersConfiguration_STATUSGenerator != nil { + return flexibleServersConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + flexibleServersConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + flexibleServersConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_STATUS{}), generators) + + return flexibleServersConfiguration_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ConfigurationProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen.go new file mode 100644 index 0000000000..db868a11ca --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen.go @@ -0,0 +1,39 @@ +// 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 FlexibleServersDatabase_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: The properties of a database. + Properties *DatabaseProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &FlexibleServersDatabase_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (database FlexibleServersDatabase_Spec) GetAPIVersion() string { + return "2023-12-30" +} + +// GetName returns the Name of the resource +func (database *FlexibleServersDatabase_Spec) GetName() string { + return database.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/databases" +func (database *FlexibleServersDatabase_Spec) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/databases" +} + +// The properties of a database. +type DatabaseProperties struct { + // Charset: The charset of the database. + Charset *string `json:"charset,omitempty"` + + // Collation: The collation of the database. + Collation *string `json:"collation,omitempty"` +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen_test.go new file mode 100644 index 0000000000..eb0ad3c528 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_spec_types_gen_test.go @@ -0,0 +1,154 @@ +// 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_DatabaseProperties_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 DatabaseProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDatabaseProperties, DatabasePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDatabaseProperties runs a test to see if a specific instance of DatabaseProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForDatabaseProperties(subject DatabaseProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DatabaseProperties + 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 DatabaseProperties instances for property testing - lazily instantiated by DatabasePropertiesGenerator() +var databasePropertiesGenerator gopter.Gen + +// DatabasePropertiesGenerator returns a generator of DatabaseProperties instances for property testing. +func DatabasePropertiesGenerator() gopter.Gen { + if databasePropertiesGenerator != nil { + return databasePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDatabaseProperties(generators) + databasePropertiesGenerator = gen.Struct(reflect.TypeOf(DatabaseProperties{}), generators) + + return databasePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForDatabaseProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDatabaseProperties(gens map[string]gopter.Gen) { + gens["Charset"] = gen.PtrOf(gen.AlphaString()) + gens["Collation"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersDatabase_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 FlexibleServersDatabase_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase_Spec, FlexibleServersDatabase_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase_Spec runs a test to see if a specific instance of FlexibleServersDatabase_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase_Spec(subject FlexibleServersDatabase_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase_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 FlexibleServersDatabase_Spec instances for property testing - lazily instantiated by +// FlexibleServersDatabase_SpecGenerator() +var flexibleServersDatabase_SpecGenerator gopter.Gen + +// FlexibleServersDatabase_SpecGenerator returns a generator of FlexibleServersDatabase_Spec instances for property testing. +// We first initialize flexibleServersDatabase_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 FlexibleServersDatabase_SpecGenerator() gopter.Gen { + if flexibleServersDatabase_SpecGenerator != nil { + return flexibleServersDatabase_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + flexibleServersDatabase_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + flexibleServersDatabase_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_Spec{}), generators) + + return flexibleServersDatabase_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(DatabasePropertiesGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen.go new file mode 100644 index 0000000000..62825fcf1f --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen.go @@ -0,0 +1,31 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type FlexibleServersDatabase_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: The properties of a database. + Properties *DatabaseProperties_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"` +} + +// The properties of a database. +type DatabaseProperties_STATUS struct { + // Charset: The charset of the database. + Charset *string `json:"charset,omitempty"` + + // Collation: The collation of the database. + Collation *string `json:"collation,omitempty"` +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen_test.go new file mode 100644 index 0000000000..fe3449cc64 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_database_status_types_gen_test.go @@ -0,0 +1,158 @@ +// 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_DatabaseProperties_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 DatabaseProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDatabaseProperties_STATUS, DatabaseProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDatabaseProperties_STATUS runs a test to see if a specific instance of DatabaseProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDatabaseProperties_STATUS(subject DatabaseProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DatabaseProperties_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 DatabaseProperties_STATUS instances for property testing - lazily instantiated by +// DatabaseProperties_STATUSGenerator() +var databaseProperties_STATUSGenerator gopter.Gen + +// DatabaseProperties_STATUSGenerator returns a generator of DatabaseProperties_STATUS instances for property testing. +func DatabaseProperties_STATUSGenerator() gopter.Gen { + if databaseProperties_STATUSGenerator != nil { + return databaseProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDatabaseProperties_STATUS(generators) + databaseProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(DatabaseProperties_STATUS{}), generators) + + return databaseProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDatabaseProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDatabaseProperties_STATUS(gens map[string]gopter.Gen) { + gens["Charset"] = gen.PtrOf(gen.AlphaString()) + gens["Collation"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersDatabase_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 FlexibleServersDatabase_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase_STATUS, FlexibleServersDatabase_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase_STATUS runs a test to see if a specific instance of FlexibleServersDatabase_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase_STATUS(subject FlexibleServersDatabase_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase_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 FlexibleServersDatabase_STATUS instances for property testing - lazily instantiated by +// FlexibleServersDatabase_STATUSGenerator() +var flexibleServersDatabase_STATUSGenerator gopter.Gen + +// FlexibleServersDatabase_STATUSGenerator returns a generator of FlexibleServersDatabase_STATUS instances for property testing. +// We first initialize flexibleServersDatabase_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 FlexibleServersDatabase_STATUSGenerator() gopter.Gen { + if flexibleServersDatabase_STATUSGenerator != nil { + return flexibleServersDatabase_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + flexibleServersDatabase_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + flexibleServersDatabase_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_STATUS{}), generators) + + return flexibleServersDatabase_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(DatabaseProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen.go new file mode 100644 index 0000000000..3459f337ab --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen.go @@ -0,0 +1,39 @@ +// 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 FlexibleServersFirewallRule_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: The properties of a firewall rule. + Properties *FirewallRuleProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &FlexibleServersFirewallRule_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (rule FlexibleServersFirewallRule_Spec) GetAPIVersion() string { + return "2023-12-30" +} + +// GetName returns the Name of the resource +func (rule *FlexibleServersFirewallRule_Spec) GetName() string { + return rule.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/firewallRules" +func (rule *FlexibleServersFirewallRule_Spec) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/firewallRules" +} + +// The properties of a server firewall rule. +type FirewallRuleProperties struct { + // EndIpAddress: The end IP address of the server firewall rule. Must be IPv4 format. + EndIpAddress *string `json:"endIpAddress,omitempty"` + + // StartIpAddress: The start IP address of the server firewall rule. Must be IPv4 format. + StartIpAddress *string `json:"startIpAddress,omitempty"` +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen_test.go new file mode 100644 index 0000000000..fd742722da --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_spec_types_gen_test.go @@ -0,0 +1,155 @@ +// 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_FirewallRuleProperties_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 FirewallRuleProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFirewallRuleProperties, FirewallRulePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFirewallRuleProperties runs a test to see if a specific instance of FirewallRuleProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForFirewallRuleProperties(subject FirewallRuleProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FirewallRuleProperties + 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 FirewallRuleProperties instances for property testing - lazily instantiated by +// FirewallRulePropertiesGenerator() +var firewallRulePropertiesGenerator gopter.Gen + +// FirewallRulePropertiesGenerator returns a generator of FirewallRuleProperties instances for property testing. +func FirewallRulePropertiesGenerator() gopter.Gen { + if firewallRulePropertiesGenerator != nil { + return firewallRulePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFirewallRuleProperties(generators) + firewallRulePropertiesGenerator = gen.Struct(reflect.TypeOf(FirewallRuleProperties{}), generators) + + return firewallRulePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForFirewallRuleProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFirewallRuleProperties(gens map[string]gopter.Gen) { + gens["EndIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["StartIpAddress"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule_Spec, FlexibleServersFirewallRule_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule_Spec runs a test to see if a specific instance of FlexibleServersFirewallRule_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule_Spec(subject FlexibleServersFirewallRule_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_Spec instances for property testing - lazily instantiated by +// FlexibleServersFirewallRule_SpecGenerator() +var flexibleServersFirewallRule_SpecGenerator gopter.Gen + +// FlexibleServersFirewallRule_SpecGenerator returns a generator of FlexibleServersFirewallRule_Spec instances for property testing. +// We first initialize flexibleServersFirewallRule_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 FlexibleServersFirewallRule_SpecGenerator() gopter.Gen { + if flexibleServersFirewallRule_SpecGenerator != nil { + return flexibleServersFirewallRule_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + flexibleServersFirewallRule_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + flexibleServersFirewallRule_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_Spec{}), generators) + + return flexibleServersFirewallRule_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(FirewallRulePropertiesGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen.go new file mode 100644 index 0000000000..9865dcfc6f --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen.go @@ -0,0 +1,31 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type FlexibleServersFirewallRule_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: The properties of a firewall rule. + Properties *FirewallRuleProperties_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"` +} + +// The properties of a server firewall rule. +type FirewallRuleProperties_STATUS struct { + // EndIpAddress: The end IP address of the server firewall rule. Must be IPv4 format. + EndIpAddress *string `json:"endIpAddress,omitempty"` + + // StartIpAddress: The start IP address of the server firewall rule. Must be IPv4 format. + StartIpAddress *string `json:"startIpAddress,omitempty"` +} diff --git a/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen_test.go b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen_test.go new file mode 100644 index 0000000000..0f9ec41339 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/flexible_servers_firewall_rule_status_types_gen_test.go @@ -0,0 +1,158 @@ +// 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_FirewallRuleProperties_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 FirewallRuleProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFirewallRuleProperties_STATUS, FirewallRuleProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFirewallRuleProperties_STATUS runs a test to see if a specific instance of FirewallRuleProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFirewallRuleProperties_STATUS(subject FirewallRuleProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FirewallRuleProperties_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 FirewallRuleProperties_STATUS instances for property testing - lazily instantiated by +// FirewallRuleProperties_STATUSGenerator() +var firewallRuleProperties_STATUSGenerator gopter.Gen + +// FirewallRuleProperties_STATUSGenerator returns a generator of FirewallRuleProperties_STATUS instances for property testing. +func FirewallRuleProperties_STATUSGenerator() gopter.Gen { + if firewallRuleProperties_STATUSGenerator != nil { + return firewallRuleProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFirewallRuleProperties_STATUS(generators) + firewallRuleProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(FirewallRuleProperties_STATUS{}), generators) + + return firewallRuleProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFirewallRuleProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFirewallRuleProperties_STATUS(gens map[string]gopter.Gen) { + gens["EndIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["StartIpAddress"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS, FlexibleServersFirewallRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS runs a test to see if a specific instance of FlexibleServersFirewallRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS(subject FlexibleServersFirewallRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUS instances for property testing - lazily instantiated by +// FlexibleServersFirewallRule_STATUSGenerator() +var flexibleServersFirewallRule_STATUSGenerator gopter.Gen + +// FlexibleServersFirewallRule_STATUSGenerator returns a generator of FlexibleServersFirewallRule_STATUS instances for property testing. +// We first initialize flexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUSGenerator() gopter.Gen { + if flexibleServersFirewallRule_STATUSGenerator != nil { + return flexibleServersFirewallRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + flexibleServersFirewallRule_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + flexibleServersFirewallRule_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_STATUS{}), generators) + + return flexibleServersFirewallRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(FirewallRuleProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/arm/structure.txt b/v2/api/dbformysql/v1api20231230/arm/structure.txt new file mode 100644 index 0000000000..441d40878b --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/arm/structure.txt @@ -0,0 +1,338 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/arm +--------------------------------------------------------------------------- +FlexibleServer_STATUS: Object (9 properties) +├── Id: *string +├── Identity: *Object (4 properties) +│ ├── PrincipalId: *string +│ ├── TenantId: *string +│ ├── Type: *Enum (1 value) +│ │ └── "UserAssigned" +│ └── UserAssignedIdentities: map[string]v1.JSON +├── Location: *string +├── Name: *string +├── Properties: *Object (18 properties) +│ ├── AdministratorLogin: *string +│ ├── AvailabilityZone: *string +│ ├── Backup: *Object (4 properties) +│ │ ├── BackupIntervalHours: *int +│ │ ├── BackupRetentionDays: *int +│ │ ├── EarliestRestoreDate: *string +│ │ └── GeoRedundantBackup: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── CreateMode: *Enum (4 values) +│ │ ├── "Default" +│ │ ├── "GeoRestore" +│ │ ├── "PointInTimeRestore" +│ │ └── "Replica" +│ ├── DataEncryption: *Object (5 properties) +│ │ ├── GeoBackupKeyURI: *string +│ │ ├── GeoBackupUserAssignedIdentityId: *string +│ │ ├── PrimaryKeyURI: *string +│ │ ├── PrimaryUserAssignedIdentityId: *string +│ │ └── Type: *Enum (2 values) +│ │ ├── "AzureKeyVault" +│ │ └── "SystemManaged" +│ ├── FullyQualifiedDomainName: *string +│ ├── HighAvailability: *Object (3 properties) +│ │ ├── Mode: *Enum (3 values) +│ │ │ ├── "Disabled" +│ │ │ ├── "SameZone" +│ │ │ └── "ZoneRedundant" +│ │ ├── StandbyAvailabilityZone: *string +│ │ └── State: *Enum (5 values) +│ │ ├── "CreatingStandby" +│ │ ├── "FailingOver" +│ │ ├── "Healthy" +│ │ ├── "NotEnabled" +│ │ └── "RemovingStandby" +│ ├── ImportSourceProperties: *Object (3 properties) +│ │ ├── DataDirPath: *string +│ │ ├── StorageType: *Enum (1 value) +│ │ │ └── "AzureBlob" +│ │ └── StorageUrl: *string +│ ├── MaintenanceWindow: *Object (4 properties) +│ │ ├── CustomWindow: *string +│ │ ├── DayOfWeek: *int +│ │ ├── StartHour: *int +│ │ └── StartMinute: *int +│ ├── Network: *Object (3 properties) +│ │ ├── DelegatedSubnetResourceId: *string +│ │ ├── PrivateDnsZoneResourceId: *string +│ │ └── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── PrivateEndpointConnections: Object (1 property)[] +│ │ └── Id: *string +│ ├── ReplicaCapacity: *int +│ ├── ReplicationRole: *Enum (3 values) +│ │ ├── "None" +│ │ ├── "Replica" +│ │ └── "Source" +│ ├── RestorePointInTime: *string +│ ├── SourceServerResourceId: *string +│ ├── State: *Enum (7 values) +│ │ ├── "Disabled" +│ │ ├── "Dropping" +│ │ ├── "Ready" +│ │ ├── "Starting" +│ │ ├── "Stopped" +│ │ ├── "Stopping" +│ │ └── "Updating" +│ ├── Storage: *Object (6 properties) +│ │ ├── AutoGrow: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── AutoIoScaling: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── Iops: *int +│ │ ├── LogOnDisk: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── StorageSizeGB: *int +│ │ └── StorageSku: *string +│ └── Version: *Enum (2 values) +│ ├── "5.7" +│ └── "8.0.21" +├── Sku: *Object (2 properties) +│ ├── Name: *string +│ └── Tier: *Enum (3 values) +│ ├── "Burstable" +│ ├── "GeneralPurpose" +│ └── "MemoryOptimized" +├── 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 +FlexibleServer_Spec: Object (6 properties) +├── Identity: *Object (2 properties) +│ ├── Type: *Enum (1 value) +│ │ └── "UserAssigned" +│ └── UserAssignedIdentities: map[string]Object (0 properties) +├── Location: *string +├── Name: string +├── Properties: *Object (15 properties) +│ ├── AdministratorLogin: *string +│ ├── AdministratorLoginPassword: *string +│ ├── AvailabilityZone: *string +│ ├── Backup: *Object (3 properties) +│ │ ├── BackupIntervalHours: *int +│ │ ├── BackupRetentionDays: *int +│ │ └── GeoRedundantBackup: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── CreateMode: *Enum (4 values) +│ │ ├── "Default" +│ │ ├── "GeoRestore" +│ │ ├── "PointInTimeRestore" +│ │ └── "Replica" +│ ├── DataEncryption: *Object (5 properties) +│ │ ├── GeoBackupKeyURI: *string +│ │ ├── GeoBackupUserAssignedIdentityId: *string +│ │ ├── PrimaryKeyURI: *string +│ │ ├── PrimaryUserAssignedIdentityId: *string +│ │ └── Type: *Enum (2 values) +│ │ ├── "AzureKeyVault" +│ │ └── "SystemManaged" +│ ├── HighAvailability: *Object (2 properties) +│ │ ├── Mode: *Enum (3 values) +│ │ │ ├── "Disabled" +│ │ │ ├── "SameZone" +│ │ │ └── "ZoneRedundant" +│ │ └── StandbyAvailabilityZone: *string +│ ├── ImportSourceProperties: *Object (4 properties) +│ │ ├── DataDirPath: *string +│ │ ├── SasToken: *string +│ │ ├── StorageType: *Enum (1 value) +│ │ │ └── "AzureBlob" +│ │ └── StorageUrl: *string +│ ├── MaintenanceWindow: *Object (4 properties) +│ │ ├── CustomWindow: *string +│ │ ├── DayOfWeek: *int +│ │ ├── StartHour: *int +│ │ └── StartMinute: *int +│ ├── Network: *Object (3 properties) +│ │ ├── DelegatedSubnetResourceId: *string +│ │ ├── PrivateDnsZoneResourceId: *string +│ │ └── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── ReplicationRole: *Enum (3 values) +│ │ ├── "None" +│ │ ├── "Replica" +│ │ └── "Source" +│ ├── RestorePointInTime: *string +│ ├── SourceServerResourceId: *string +│ ├── Storage: *Object (5 properties) +│ │ ├── AutoGrow: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── AutoIoScaling: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── Iops: *int +│ │ ├── LogOnDisk: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ └── StorageSizeGB: *int +│ └── Version: *Enum (2 values) +│ ├── "5.7" +│ └── "8.0.21" +├── Sku: *Object (2 properties) +│ ├── Name: *string +│ └── Tier: *Enum (3 values) +│ ├── "Burstable" +│ ├── "GeneralPurpose" +│ └── "MemoryOptimized" +└── Tags: map[string]string +FlexibleServersAdministrator_STATUS: Object (5 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (5 properties) +│ ├── AdministratorType: *Enum (1 value) +│ │ └── "ActiveDirectory" +│ ├── IdentityResourceId: *string +│ ├── Login: *string +│ ├── Sid: *string +│ └── TenantId: *string +├── 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 +FlexibleServersAdministrator_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (5 properties) + ├── AdministratorType: *Enum (1 value) + │ └── "ActiveDirectory" + ├── IdentityResourceId: *string + ├── Login: *string + ├── Sid: *string + └── TenantId: *string +FlexibleServersConfiguration_STATUS: Object (5 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (11 properties) +│ ├── AllowedValues: *string +│ ├── CurrentValue: *string +│ ├── DataType: *string +│ ├── DefaultValue: *string +│ ├── Description: *string +│ ├── DocumentationLink: *string +│ ├── IsConfigPendingRestart: *Enum (2 values) +│ │ ├── "False" +│ │ └── "True" +│ ├── IsDynamicConfig: *Enum (2 values) +│ │ ├── "False" +│ │ └── "True" +│ ├── IsReadOnly: *Enum (2 values) +│ │ ├── "False" +│ │ └── "True" +│ ├── Source: *Enum (2 values) +│ │ ├── "system-default" +│ │ └── "user-override" +│ └── Value: *string +├── 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 +FlexibleServersConfiguration_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (3 properties) + ├── CurrentValue: *string + ├── Source: *Enum (2 values) + │ ├── "system-default" + │ └── "user-override" + └── Value: *string +FlexibleServersDatabase_STATUS: Object (5 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (2 properties) +│ ├── Charset: *string +│ └── Collation: *string +├── 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 +FlexibleServersDatabase_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (2 properties) + ├── Charset: *string + └── Collation: *string +FlexibleServersFirewallRule_STATUS: Object (5 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (2 properties) +│ ├── EndIpAddress: *string +│ └── StartIpAddress: *string +├── 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 +FlexibleServersFirewallRule_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (2 properties) + ├── EndIpAddress: *string + └── StartIpAddress: *string diff --git a/v2/api/dbformysql/v1api20231230/doc.go b/v2/api/dbformysql/v1api20231230/doc.go new file mode 100644 index 0000000000..dafef8b82d --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/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 v1api20231230 contains API Schema definitions for the dbformysql v1api20231230 API group +// +groupName=dbformysql.azure.com +package v1api20231230 diff --git a/v2/api/dbformysql/v1api20231230/flexible_server_types_gen.go b/v2/api/dbformysql/v1api20231230/flexible_server_types_gen.go new file mode 100644 index 0000000000..7c2051f1b8 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_server_types_gen.go @@ -0,0 +1,5877 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "context" + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/arm" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" + "github.com/Azure/azure-service-operator/v2/internal/genericarmclient" + "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/go-logr/logr" + "github.com/rotisserie/eris" + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + 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/client" + "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: /mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers/stable/2023-12-30/FlexibleServers.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName} +type FlexibleServer struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServer_Spec `json:"spec,omitempty"` + Status FlexibleServer_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServer{} + +// GetConditions returns the conditions of the resource +func (server *FlexibleServer) GetConditions() conditions.Conditions { + return server.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (server *FlexibleServer) SetConditions(conditions conditions.Conditions) { + server.Status.Conditions = conditions +} + +var _ conversion.Convertible = &FlexibleServer{} + +// ConvertFrom populates our FlexibleServer from the provided hub FlexibleServer +func (server *FlexibleServer) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServer) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServer but received %T instead", hub) + } + + return server.AssignProperties_From_FlexibleServer(source) +} + +// ConvertTo populates the provided hub FlexibleServer from our FlexibleServer +func (server *FlexibleServer) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServer) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServer but received %T instead", hub) + } + + return server.AssignProperties_To_FlexibleServer(destination) +} + +// +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20231230-flexibleserver,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleservers,verbs=create;update,versions=v1api20231230,name=default.v1api20231230.flexibleservers.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &FlexibleServer{} + +// Default applies defaults to the FlexibleServer resource +func (server *FlexibleServer) Default() { + server.defaultImpl() + var temp any = server + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (server *FlexibleServer) defaultAzureName() { + if server.Spec.AzureName == "" { + server.Spec.AzureName = server.Name + } +} + +// defaultImpl applies the code generated defaults to the FlexibleServer resource +func (server *FlexibleServer) defaultImpl() { server.defaultAzureName() } + +var _ configmaps.Exporter = &FlexibleServer{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (server *FlexibleServer) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if server.Spec.OperatorSpec == nil { + return nil + } + return server.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServer{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (server *FlexibleServer) SecretDestinationExpressions() []*core.DestinationExpression { + if server.Spec.OperatorSpec == nil { + return nil + } + return server.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &FlexibleServer{} + +// InitializeSpec initializes the spec for this resource from the given status +func (server *FlexibleServer) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*FlexibleServer_STATUS); ok { + return server.Spec.Initialize_From_FlexibleServer_STATUS(s) + } + + return fmt.Errorf("expected Status of type FlexibleServer_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesConfigExporter = &FlexibleServer{} + +// ExportKubernetesConfigMaps defines a resource which can create ConfigMaps in Kubernetes. +func (server *FlexibleServer) ExportKubernetesConfigMaps(_ context.Context, _ genruntime.MetaObject, _ *genericarmclient.GenericClient, _ logr.Logger) ([]client.Object, error) { + collector := configmaps.NewCollector(server.Namespace) + if server.Spec.OperatorSpec != nil && server.Spec.OperatorSpec.ConfigMaps != nil { + if server.Status.AdministratorLogin != nil { + collector.AddValue(server.Spec.OperatorSpec.ConfigMaps.AdministratorLogin, *server.Status.AdministratorLogin) + } + } + if server.Spec.OperatorSpec != nil && server.Spec.OperatorSpec.ConfigMaps != nil { + if server.Status.FullyQualifiedDomainName != nil { + collector.AddValue(server.Spec.OperatorSpec.ConfigMaps.FullyQualifiedDomainName, *server.Status.FullyQualifiedDomainName) + } + } + result, err := collector.Values() + if err != nil { + return nil, err + } + return configmaps.SliceToClientObjectSlice(result), nil +} + +var _ genruntime.KubernetesResource = &FlexibleServer{} + +// AzureName returns the Azure name of the resource +func (server *FlexibleServer) AzureName() string { + return server.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (server FlexibleServer) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (server *FlexibleServer) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (server *FlexibleServer) GetSpec() genruntime.ConvertibleSpec { + return &server.Spec +} + +// GetStatus returns the status of this resource +func (server *FlexibleServer) GetStatus() genruntime.ConvertibleStatus { + return &server.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (server *FlexibleServer) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers" +func (server *FlexibleServer) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers" +} + +// NewEmptyStatus returns a new empty (blank) status +func (server *FlexibleServer) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServer_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (server *FlexibleServer) Owner() *genruntime.ResourceReference { + if server.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(server.Spec) + return server.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (server *FlexibleServer) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServer_STATUS); ok { + server.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServer_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + server.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-dbformysql-azure-com-v1api20231230-flexibleserver,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleservers,verbs=create;update,versions=v1api20231230,name=validate.v1api20231230.flexibleservers.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &FlexibleServer{} + +// ValidateCreate validates the creation of the resource +func (server *FlexibleServer) ValidateCreate() (admission.Warnings, error) { + validations := server.createValidations() + var temp any = server + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (server *FlexibleServer) ValidateDelete() (admission.Warnings, error) { + validations := server.deleteValidations() + var temp any = server + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (server *FlexibleServer) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := server.updateValidations() + var temp any = server + 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 (server *FlexibleServer) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){server.validateResourceReferences, server.validateOwnerReference, server.validateSecretDestinations, server.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (server *FlexibleServer) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (server *FlexibleServer) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return server.validateResourceReferences() + }, + server.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return server.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return server.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return server.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (server *FlexibleServer) validateConfigMapDestinations() (admission.Warnings, error) { + if server.Spec.OperatorSpec == nil { + return nil, nil + } + var toValidate []*genruntime.ConfigMapDestination + if server.Spec.OperatorSpec.ConfigMaps != nil { + toValidate = []*genruntime.ConfigMapDestination{ + server.Spec.OperatorSpec.ConfigMaps.AdministratorLogin, + server.Spec.OperatorSpec.ConfigMaps.FullyQualifiedDomainName, + } + } + return configmaps.ValidateDestinations(server, toValidate, server.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (server *FlexibleServer) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(server) +} + +// validateResourceReferences validates all resource references +func (server *FlexibleServer) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&server.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (server *FlexibleServer) validateSecretDestinations() (admission.Warnings, error) { + if server.Spec.OperatorSpec == nil { + return nil, nil + } + var toValidate []*genruntime.SecretDestination + if server.Spec.OperatorSpec.Secrets != nil { + toValidate = []*genruntime.SecretDestination{ + server.Spec.OperatorSpec.Secrets.FullyQualifiedDomainName, + } + } + return secrets.ValidateDestinations(server, toValidate, server.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (server *FlexibleServer) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*FlexibleServer) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, server) +} + +// AssignProperties_From_FlexibleServer populates our FlexibleServer from the provided source FlexibleServer +func (server *FlexibleServer) AssignProperties_From_FlexibleServer(source *storage.FlexibleServer) error { + + // ObjectMeta + server.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServer_Spec + err := spec.AssignProperties_From_FlexibleServer_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServer_Spec() to populate field Spec") + } + server.Spec = spec + + // Status + var status FlexibleServer_STATUS + err = status.AssignProperties_From_FlexibleServer_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServer_STATUS() to populate field Status") + } + server.Status = status + + // No error + return nil +} + +// AssignProperties_To_FlexibleServer populates the provided destination FlexibleServer from our FlexibleServer +func (server *FlexibleServer) AssignProperties_To_FlexibleServer(destination *storage.FlexibleServer) error { + + // ObjectMeta + destination.ObjectMeta = *server.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServer_Spec + err := server.Spec.AssignProperties_To_FlexibleServer_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServer_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServer_STATUS + err = server.Status.AssignProperties_To_FlexibleServer_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServer_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 (server *FlexibleServer) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: server.Spec.OriginalVersion(), + Kind: "FlexibleServer", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers/stable/2023-12-30/FlexibleServers.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName} +type FlexibleServerList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServer `json:"items"` +} + +// +kubebuilder:validation:Enum={"2023-12-30"} +type APIVersion string + +const APIVersion_Value = APIVersion("2023-12-30") + +type FlexibleServer_Spec struct { + // AdministratorLogin: The administrator's login name of a server. Can only be specified when the server is being created + // (and is required for creation). + AdministratorLogin *string `json:"administratorLogin,omitempty"` + + // AdministratorLoginPassword: The password of the administrator login (required for server creation). + AdministratorLoginPassword *genruntime.SecretReference `json:"administratorLoginPassword,omitempty"` + + // AvailabilityZone: availability Zone information of the server. + AvailabilityZone *string `json:"availabilityZone,omitempty"` + + // 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"` + + // Backup: Backup related properties of a server. + Backup *Backup `json:"backup,omitempty"` + + // CreateMode: The mode to create a new MySQL server. + CreateMode *ServerProperties_CreateMode `json:"createMode,omitempty"` + + // DataEncryption: The Data Encryption for CMK. + DataEncryption *DataEncryption `json:"dataEncryption,omitempty"` + + // HighAvailability: High availability related properties of a server. + HighAvailability *HighAvailability `json:"highAvailability,omitempty"` + + // Identity: The cmk identity for the server. + Identity *MySQLServerIdentity `json:"identity,omitempty"` + + // ImportSourceProperties: Source properties for import from storage. + ImportSourceProperties *ImportSourceProperties `json:"importSourceProperties,omitempty"` + + // +kubebuilder:validation:Required + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // MaintenanceWindow: Maintenance window of a server. + MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"` + + // Network: Network related properties of a server. + Network *Network `json:"network,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *FlexibleServerOperatorSpec `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"` + + // ReplicationRole: The replication role. + ReplicationRole *ReplicationRole `json:"replicationRole,omitempty"` + + // RestorePointInTime: Restore point creation time (ISO8601 format), specifying the time to restore from. + RestorePointInTime *string `json:"restorePointInTime,omitempty"` + + // Sku: The SKU (pricing tier) of the server. + Sku *MySQLServerSku `json:"sku,omitempty"` + + // SourceServerResourceReference: The source MySQL server id. + SourceServerResourceReference *genruntime.ResourceReference `armReference:"SourceServerResourceId" json:"sourceServerResourceReference,omitempty"` + + // Storage: Storage related properties of a server. + Storage *Storage `json:"storage,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Version: Server version. + Version *ServerVersion `json:"version,omitempty"` +} + +var _ genruntime.ARMTransformer = &FlexibleServer_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (server *FlexibleServer_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if server == nil { + return nil, nil + } + result := &arm.FlexibleServer_Spec{} + + // Set property "Identity": + if server.Identity != nil { + identity_ARM, err := (*server.Identity).ConvertToARM(resolved) + if err != nil { + return nil, err + } + identity := *identity_ARM.(*arm.MySQLServerIdentity) + result.Identity = &identity + } + + // Set property "Location": + if server.Location != nil { + location := *server.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if server.AdministratorLogin != nil || + server.AdministratorLoginPassword != nil || + server.AvailabilityZone != nil || + server.Backup != nil || + server.CreateMode != nil || + server.DataEncryption != nil || + server.HighAvailability != nil || + server.ImportSourceProperties != nil || + server.MaintenanceWindow != nil || + server.Network != nil || + server.ReplicationRole != nil || + server.RestorePointInTime != nil || + server.SourceServerResourceReference != nil || + server.Storage != nil || + server.Version != nil { + result.Properties = &arm.ServerProperties{} + } + if server.AdministratorLogin != nil { + administratorLogin := *server.AdministratorLogin + result.Properties.AdministratorLogin = &administratorLogin + } + if server.AdministratorLoginPassword != nil { + administratorLoginPasswordSecret, err := resolved.ResolvedSecrets.Lookup(*server.AdministratorLoginPassword) + if err != nil { + return nil, eris.Wrap(err, "looking up secret for property AdministratorLoginPassword") + } + administratorLoginPassword := administratorLoginPasswordSecret + result.Properties.AdministratorLoginPassword = &administratorLoginPassword + } + if server.AvailabilityZone != nil { + availabilityZone := *server.AvailabilityZone + result.Properties.AvailabilityZone = &availabilityZone + } + if server.Backup != nil { + backup_ARM, err := (*server.Backup).ConvertToARM(resolved) + if err != nil { + return nil, err + } + backup := *backup_ARM.(*arm.Backup) + result.Properties.Backup = &backup + } + if server.CreateMode != nil { + var temp string + temp = string(*server.CreateMode) + createMode := arm.ServerProperties_CreateMode(temp) + result.Properties.CreateMode = &createMode + } + if server.DataEncryption != nil { + dataEncryption_ARM, err := (*server.DataEncryption).ConvertToARM(resolved) + if err != nil { + return nil, err + } + dataEncryption := *dataEncryption_ARM.(*arm.DataEncryption) + result.Properties.DataEncryption = &dataEncryption + } + if server.HighAvailability != nil { + highAvailability_ARM, err := (*server.HighAvailability).ConvertToARM(resolved) + if err != nil { + return nil, err + } + highAvailability := *highAvailability_ARM.(*arm.HighAvailability) + result.Properties.HighAvailability = &highAvailability + } + if server.ImportSourceProperties != nil { + importSourceProperties_ARM, err := (*server.ImportSourceProperties).ConvertToARM(resolved) + if err != nil { + return nil, err + } + importSourceProperties := *importSourceProperties_ARM.(*arm.ImportSourceProperties) + result.Properties.ImportSourceProperties = &importSourceProperties + } + if server.MaintenanceWindow != nil { + maintenanceWindow_ARM, err := (*server.MaintenanceWindow).ConvertToARM(resolved) + if err != nil { + return nil, err + } + maintenanceWindow := *maintenanceWindow_ARM.(*arm.MaintenanceWindow) + result.Properties.MaintenanceWindow = &maintenanceWindow + } + if server.Network != nil { + network_ARM, err := (*server.Network).ConvertToARM(resolved) + if err != nil { + return nil, err + } + network := *network_ARM.(*arm.Network) + result.Properties.Network = &network + } + if server.ReplicationRole != nil { + var temp string + temp = string(*server.ReplicationRole) + replicationRole := arm.ReplicationRole(temp) + result.Properties.ReplicationRole = &replicationRole + } + if server.RestorePointInTime != nil { + restorePointInTime := *server.RestorePointInTime + result.Properties.RestorePointInTime = &restorePointInTime + } + if server.SourceServerResourceReference != nil { + sourceServerResourceIdARMID, err := resolved.ResolvedReferences.Lookup(*server.SourceServerResourceReference) + if err != nil { + return nil, err + } + sourceServerResourceId := sourceServerResourceIdARMID + result.Properties.SourceServerResourceId = &sourceServerResourceId + } + if server.Storage != nil { + storage_ARM, err := (*server.Storage).ConvertToARM(resolved) + if err != nil { + return nil, err + } + storage := *storage_ARM.(*arm.Storage) + result.Properties.Storage = &storage + } + if server.Version != nil { + var temp string + temp = string(*server.Version) + version := arm.ServerVersion(temp) + result.Properties.Version = &version + } + + // Set property "Sku": + if server.Sku != nil { + sku_ARM, err := (*server.Sku).ConvertToARM(resolved) + if err != nil { + return nil, err + } + sku := *sku_ARM.(*arm.MySQLServerSku) + result.Sku = &sku + } + + // Set property "Tags": + if server.Tags != nil { + result.Tags = make(map[string]string, len(server.Tags)) + for key, value := range server.Tags { + result.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (server *FlexibleServer_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServer_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (server *FlexibleServer_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServer_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServer_Spec, got %T", armInput) + } + + // Set property "AdministratorLogin": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AdministratorLogin != nil { + administratorLogin := *typedInput.Properties.AdministratorLogin + server.AdministratorLogin = &administratorLogin + } + } + + // no assignment for property "AdministratorLoginPassword" + + // Set property "AvailabilityZone": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AvailabilityZone != nil { + availabilityZone := *typedInput.Properties.AvailabilityZone + server.AvailabilityZone = &availabilityZone + } + } + + // Set property "AzureName": + server.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "Backup": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Backup != nil { + var backup1 Backup + err := backup1.PopulateFromARM(owner, *typedInput.Properties.Backup) + if err != nil { + return err + } + backup := backup1 + server.Backup = &backup + } + } + + // Set property "CreateMode": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CreateMode != nil { + var temp string + temp = string(*typedInput.Properties.CreateMode) + createMode := ServerProperties_CreateMode(temp) + server.CreateMode = &createMode + } + } + + // Set property "DataEncryption": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataEncryption != nil { + var dataEncryption1 DataEncryption + err := dataEncryption1.PopulateFromARM(owner, *typedInput.Properties.DataEncryption) + if err != nil { + return err + } + dataEncryption := dataEncryption1 + server.DataEncryption = &dataEncryption + } + } + + // Set property "HighAvailability": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.HighAvailability != nil { + var highAvailability1 HighAvailability + err := highAvailability1.PopulateFromARM(owner, *typedInput.Properties.HighAvailability) + if err != nil { + return err + } + highAvailability := highAvailability1 + server.HighAvailability = &highAvailability + } + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 MySQLServerIdentity + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + server.Identity = &identity + } + + // Set property "ImportSourceProperties": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ImportSourceProperties != nil { + var importSourceProperties1 ImportSourceProperties + err := importSourceProperties1.PopulateFromARM(owner, *typedInput.Properties.ImportSourceProperties) + if err != nil { + return err + } + importSourceProperties := importSourceProperties1 + server.ImportSourceProperties = &importSourceProperties + } + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + server.Location = &location + } + + // Set property "MaintenanceWindow": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.MaintenanceWindow != nil { + var maintenanceWindow1 MaintenanceWindow + err := maintenanceWindow1.PopulateFromARM(owner, *typedInput.Properties.MaintenanceWindow) + if err != nil { + return err + } + maintenanceWindow := maintenanceWindow1 + server.MaintenanceWindow = &maintenanceWindow + } + } + + // Set property "Network": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Network != nil { + var network1 Network + err := network1.PopulateFromARM(owner, *typedInput.Properties.Network) + if err != nil { + return err + } + network := network1 + server.Network = &network + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + server.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "ReplicationRole": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ReplicationRole != nil { + var temp string + temp = string(*typedInput.Properties.ReplicationRole) + replicationRole := ReplicationRole(temp) + server.ReplicationRole = &replicationRole + } + } + + // Set property "RestorePointInTime": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RestorePointInTime != nil { + restorePointInTime := *typedInput.Properties.RestorePointInTime + server.RestorePointInTime = &restorePointInTime + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 MySQLServerSku + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + server.Sku = &sku + } + + // no assignment for property "SourceServerResourceReference" + + // Set property "Storage": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Storage != nil { + var storage1 Storage + err := storage1.PopulateFromARM(owner, *typedInput.Properties.Storage) + if err != nil { + return err + } + storage := storage1 + server.Storage = &storage + } + } + + // Set property "Tags": + if typedInput.Tags != nil { + server.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + server.Tags[key] = value + } + } + + // Set property "Version": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Version != nil { + var temp string + temp = string(*typedInput.Properties.Version) + version := ServerVersion(temp) + server.Version = &version + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &FlexibleServer_Spec{} + +// ConvertSpecFrom populates our FlexibleServer_Spec from the provided source +func (server *FlexibleServer_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.FlexibleServer_Spec) + if ok { + // Populate our instance from source + return server.AssignProperties_From_FlexibleServer_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServer_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = server.AssignProperties_From_FlexibleServer_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our FlexibleServer_Spec +func (server *FlexibleServer_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.FlexibleServer_Spec) + if ok { + // Populate destination from our instance + return server.AssignProperties_To_FlexibleServer_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServer_Spec{} + err := server.AssignProperties_To_FlexibleServer_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_FlexibleServer_Spec populates our FlexibleServer_Spec from the provided source FlexibleServer_Spec +func (server *FlexibleServer_Spec) AssignProperties_From_FlexibleServer_Spec(source *storage.FlexibleServer_Spec) error { + + // AdministratorLogin + server.AdministratorLogin = genruntime.ClonePointerToString(source.AdministratorLogin) + + // AdministratorLoginPassword + if source.AdministratorLoginPassword != nil { + administratorLoginPassword := source.AdministratorLoginPassword.Copy() + server.AdministratorLoginPassword = &administratorLoginPassword + } else { + server.AdministratorLoginPassword = nil + } + + // AvailabilityZone + server.AvailabilityZone = genruntime.ClonePointerToString(source.AvailabilityZone) + + // AzureName + server.AzureName = source.AzureName + + // Backup + if source.Backup != nil { + var backup Backup + err := backup.AssignProperties_From_Backup(source.Backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Backup() to populate field Backup") + } + server.Backup = &backup + } else { + server.Backup = nil + } + + // CreateMode + if source.CreateMode != nil { + createMode := *source.CreateMode + createModeTemp := genruntime.ToEnum(createMode, serverProperties_CreateMode_Values) + server.CreateMode = &createModeTemp + } else { + server.CreateMode = nil + } + + // DataEncryption + if source.DataEncryption != nil { + var dataEncryption DataEncryption + err := dataEncryption.AssignProperties_From_DataEncryption(source.DataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_DataEncryption() to populate field DataEncryption") + } + server.DataEncryption = &dataEncryption + } else { + server.DataEncryption = nil + } + + // HighAvailability + if source.HighAvailability != nil { + var highAvailability HighAvailability + err := highAvailability.AssignProperties_From_HighAvailability(source.HighAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_HighAvailability() to populate field HighAvailability") + } + server.HighAvailability = &highAvailability + } else { + server.HighAvailability = nil + } + + // Identity + if source.Identity != nil { + var identity MySQLServerIdentity + err := identity.AssignProperties_From_MySQLServerIdentity(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerIdentity() to populate field Identity") + } + server.Identity = &identity + } else { + server.Identity = nil + } + + // ImportSourceProperties + if source.ImportSourceProperties != nil { + var importSourceProperty ImportSourceProperties + err := importSourceProperty.AssignProperties_From_ImportSourceProperties(source.ImportSourceProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ImportSourceProperties() to populate field ImportSourceProperties") + } + server.ImportSourceProperties = &importSourceProperty + } else { + server.ImportSourceProperties = nil + } + + // Location + server.Location = genruntime.ClonePointerToString(source.Location) + + // MaintenanceWindow + if source.MaintenanceWindow != nil { + var maintenanceWindow MaintenanceWindow + err := maintenanceWindow.AssignProperties_From_MaintenanceWindow(source.MaintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MaintenanceWindow() to populate field MaintenanceWindow") + } + server.MaintenanceWindow = &maintenanceWindow + } else { + server.MaintenanceWindow = nil + } + + // Network + if source.Network != nil { + var network Network + err := network.AssignProperties_From_Network(source.Network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Network() to populate field Network") + } + server.Network = &network + } else { + server.Network = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServerOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServerOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServerOperatorSpec() to populate field OperatorSpec") + } + server.OperatorSpec = &operatorSpec + } else { + server.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + server.Owner = &owner + } else { + server.Owner = nil + } + + // ReplicationRole + if source.ReplicationRole != nil { + replicationRole := *source.ReplicationRole + replicationRoleTemp := genruntime.ToEnum(replicationRole, replicationRole_Values) + server.ReplicationRole = &replicationRoleTemp + } else { + server.ReplicationRole = nil + } + + // RestorePointInTime + server.RestorePointInTime = genruntime.ClonePointerToString(source.RestorePointInTime) + + // Sku + if source.Sku != nil { + var sku MySQLServerSku + err := sku.AssignProperties_From_MySQLServerSku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerSku() to populate field Sku") + } + server.Sku = &sku + } else { + server.Sku = nil + } + + // SourceServerResourceReference + if source.SourceServerResourceReference != nil { + sourceServerResourceReference := source.SourceServerResourceReference.Copy() + server.SourceServerResourceReference = &sourceServerResourceReference + } else { + server.SourceServerResourceReference = nil + } + + // Storage + if source.Storage != nil { + var storage Storage + err := storage.AssignProperties_From_Storage(source.Storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Storage() to populate field Storage") + } + server.Storage = &storage + } else { + server.Storage = nil + } + + // Tags + server.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Version + if source.Version != nil { + version := *source.Version + versionTemp := genruntime.ToEnum(version, serverVersion_Values) + server.Version = &versionTemp + } else { + server.Version = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServer_Spec populates the provided destination FlexibleServer_Spec from our FlexibleServer_Spec +func (server *FlexibleServer_Spec) AssignProperties_To_FlexibleServer_Spec(destination *storage.FlexibleServer_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdministratorLogin + destination.AdministratorLogin = genruntime.ClonePointerToString(server.AdministratorLogin) + + // AdministratorLoginPassword + if server.AdministratorLoginPassword != nil { + administratorLoginPassword := server.AdministratorLoginPassword.Copy() + destination.AdministratorLoginPassword = &administratorLoginPassword + } else { + destination.AdministratorLoginPassword = nil + } + + // AvailabilityZone + destination.AvailabilityZone = genruntime.ClonePointerToString(server.AvailabilityZone) + + // AzureName + destination.AzureName = server.AzureName + + // Backup + if server.Backup != nil { + var backup storage.Backup + err := server.Backup.AssignProperties_To_Backup(&backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Backup() to populate field Backup") + } + destination.Backup = &backup + } else { + destination.Backup = nil + } + + // CreateMode + if server.CreateMode != nil { + createMode := string(*server.CreateMode) + destination.CreateMode = &createMode + } else { + destination.CreateMode = nil + } + + // DataEncryption + if server.DataEncryption != nil { + var dataEncryption storage.DataEncryption + err := server.DataEncryption.AssignProperties_To_DataEncryption(&dataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_DataEncryption() to populate field DataEncryption") + } + destination.DataEncryption = &dataEncryption + } else { + destination.DataEncryption = nil + } + + // HighAvailability + if server.HighAvailability != nil { + var highAvailability storage.HighAvailability + err := server.HighAvailability.AssignProperties_To_HighAvailability(&highAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_HighAvailability() to populate field HighAvailability") + } + destination.HighAvailability = &highAvailability + } else { + destination.HighAvailability = nil + } + + // Identity + if server.Identity != nil { + var identity storage.MySQLServerIdentity + err := server.Identity.AssignProperties_To_MySQLServerIdentity(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerIdentity() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // ImportSourceProperties + if server.ImportSourceProperties != nil { + var importSourceProperty storage.ImportSourceProperties + err := server.ImportSourceProperties.AssignProperties_To_ImportSourceProperties(&importSourceProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ImportSourceProperties() to populate field ImportSourceProperties") + } + destination.ImportSourceProperties = &importSourceProperty + } else { + destination.ImportSourceProperties = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(server.Location) + + // MaintenanceWindow + if server.MaintenanceWindow != nil { + var maintenanceWindow storage.MaintenanceWindow + err := server.MaintenanceWindow.AssignProperties_To_MaintenanceWindow(&maintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MaintenanceWindow() to populate field MaintenanceWindow") + } + destination.MaintenanceWindow = &maintenanceWindow + } else { + destination.MaintenanceWindow = nil + } + + // Network + if server.Network != nil { + var network storage.Network + err := server.Network.AssignProperties_To_Network(&network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Network() to populate field Network") + } + destination.Network = &network + } else { + destination.Network = nil + } + + // OperatorSpec + if server.OperatorSpec != nil { + var operatorSpec storage.FlexibleServerOperatorSpec + err := server.OperatorSpec.AssignProperties_To_FlexibleServerOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServerOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = server.OriginalVersion() + + // Owner + if server.Owner != nil { + owner := server.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // ReplicationRole + if server.ReplicationRole != nil { + replicationRole := string(*server.ReplicationRole) + destination.ReplicationRole = &replicationRole + } else { + destination.ReplicationRole = nil + } + + // RestorePointInTime + destination.RestorePointInTime = genruntime.ClonePointerToString(server.RestorePointInTime) + + // Sku + if server.Sku != nil { + var sku storage.MySQLServerSku + err := server.Sku.AssignProperties_To_MySQLServerSku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerSku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SourceServerResourceReference + if server.SourceServerResourceReference != nil { + sourceServerResourceReference := server.SourceServerResourceReference.Copy() + destination.SourceServerResourceReference = &sourceServerResourceReference + } else { + destination.SourceServerResourceReference = nil + } + + // Storage + if server.Storage != nil { + var storage storage.Storage + err := server.Storage.AssignProperties_To_Storage(&storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Storage() to populate field Storage") + } + destination.Storage = &storage + } else { + destination.Storage = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(server.Tags) + + // Version + if server.Version != nil { + version := string(*server.Version) + destination.Version = &version + } else { + destination.Version = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_FlexibleServer_STATUS populates our FlexibleServer_Spec from the provided source FlexibleServer_STATUS +func (server *FlexibleServer_Spec) Initialize_From_FlexibleServer_STATUS(source *FlexibleServer_STATUS) error { + + // AdministratorLogin + server.AdministratorLogin = genruntime.ClonePointerToString(source.AdministratorLogin) + + // AvailabilityZone + server.AvailabilityZone = genruntime.ClonePointerToString(source.AvailabilityZone) + + // Backup + if source.Backup != nil { + var backup Backup + err := backup.Initialize_From_Backup_STATUS(source.Backup) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_Backup_STATUS() to populate field Backup") + } + server.Backup = &backup + } else { + server.Backup = nil + } + + // CreateMode + if source.CreateMode != nil { + createMode := genruntime.ToEnum(string(*source.CreateMode), serverProperties_CreateMode_Values) + server.CreateMode = &createMode + } else { + server.CreateMode = nil + } + + // DataEncryption + if source.DataEncryption != nil { + var dataEncryption DataEncryption + err := dataEncryption.Initialize_From_DataEncryption_STATUS(source.DataEncryption) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_DataEncryption_STATUS() to populate field DataEncryption") + } + server.DataEncryption = &dataEncryption + } else { + server.DataEncryption = nil + } + + // HighAvailability + if source.HighAvailability != nil { + var highAvailability HighAvailability + err := highAvailability.Initialize_From_HighAvailability_STATUS(source.HighAvailability) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_HighAvailability_STATUS() to populate field HighAvailability") + } + server.HighAvailability = &highAvailability + } else { + server.HighAvailability = nil + } + + // Identity + if source.Identity != nil { + var identity MySQLServerIdentity + err := identity.Initialize_From_MySQLServerIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_MySQLServerIdentity_STATUS() to populate field Identity") + } + server.Identity = &identity + } else { + server.Identity = nil + } + + // ImportSourceProperties + if source.ImportSourceProperties != nil { + var importSourceProperty ImportSourceProperties + err := importSourceProperty.Initialize_From_ImportSourceProperties_STATUS(source.ImportSourceProperties) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ImportSourceProperties_STATUS() to populate field ImportSourceProperties") + } + server.ImportSourceProperties = &importSourceProperty + } else { + server.ImportSourceProperties = nil + } + + // Location + server.Location = genruntime.ClonePointerToString(source.Location) + + // MaintenanceWindow + if source.MaintenanceWindow != nil { + var maintenanceWindow MaintenanceWindow + err := maintenanceWindow.Initialize_From_MaintenanceWindow_STATUS(source.MaintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_MaintenanceWindow_STATUS() to populate field MaintenanceWindow") + } + server.MaintenanceWindow = &maintenanceWindow + } else { + server.MaintenanceWindow = nil + } + + // Network + if source.Network != nil { + var network Network + err := network.Initialize_From_Network_STATUS(source.Network) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_Network_STATUS() to populate field Network") + } + server.Network = &network + } else { + server.Network = nil + } + + // ReplicationRole + if source.ReplicationRole != nil { + replicationRole := genruntime.ToEnum(string(*source.ReplicationRole), replicationRole_Values) + server.ReplicationRole = &replicationRole + } else { + server.ReplicationRole = nil + } + + // RestorePointInTime + server.RestorePointInTime = genruntime.ClonePointerToString(source.RestorePointInTime) + + // Sku + if source.Sku != nil { + var sku MySQLServerSku + err := sku.Initialize_From_MySQLServerSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_MySQLServerSku_STATUS() to populate field Sku") + } + server.Sku = &sku + } else { + server.Sku = nil + } + + // SourceServerResourceReference + if source.SourceServerResourceId != nil { + sourceServerResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.SourceServerResourceId) + server.SourceServerResourceReference = &sourceServerResourceReference + } else { + server.SourceServerResourceReference = nil + } + + // Storage + if source.Storage != nil { + var storage Storage + err := storage.Initialize_From_Storage_STATUS(source.Storage) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_Storage_STATUS() to populate field Storage") + } + server.Storage = &storage + } else { + server.Storage = nil + } + + // Tags + server.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Version + if source.Version != nil { + version := genruntime.ToEnum(string(*source.Version), serverVersion_Values) + server.Version = &version + } else { + server.Version = nil + } + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (server *FlexibleServer_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (server *FlexibleServer_Spec) SetAzureName(azureName string) { server.AzureName = azureName } + +type FlexibleServer_STATUS struct { + // AdministratorLogin: The administrator's login name of a server. Can only be specified when the server is being created + // (and is required for creation). + AdministratorLogin *string `json:"administratorLogin,omitempty"` + + // AvailabilityZone: availability Zone information of the server. + AvailabilityZone *string `json:"availabilityZone,omitempty"` + + // Backup: Backup related properties of a server. + Backup *Backup_STATUS `json:"backup,omitempty"` + + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // CreateMode: The mode to create a new MySQL server. + CreateMode *ServerProperties_CreateMode_STATUS `json:"createMode,omitempty"` + + // DataEncryption: The Data Encryption for CMK. + DataEncryption *DataEncryption_STATUS `json:"dataEncryption,omitempty"` + + // FullyQualifiedDomainName: The fully qualified domain name of a server. + FullyQualifiedDomainName *string `json:"fullyQualifiedDomainName,omitempty"` + + // HighAvailability: High availability related properties of a server. + HighAvailability *HighAvailability_STATUS `json:"highAvailability,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: The cmk identity for the server. + Identity *MySQLServerIdentity_STATUS `json:"identity,omitempty"` + + // ImportSourceProperties: Source properties for import from storage. + ImportSourceProperties *ImportSourceProperties_STATUS `json:"importSourceProperties,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // MaintenanceWindow: Maintenance window of a server. + MaintenanceWindow *MaintenanceWindow_STATUS `json:"maintenanceWindow,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // Network: Network related properties of a server. + Network *Network_STATUS `json:"network,omitempty"` + + // PrivateEndpointConnections: PrivateEndpointConnections related properties of a server. + PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"` + + // ReplicaCapacity: The maximum number of replicas that a primary server can have. + ReplicaCapacity *int `json:"replicaCapacity,omitempty"` + + // ReplicationRole: The replication role. + ReplicationRole *ReplicationRole_STATUS `json:"replicationRole,omitempty"` + + // RestorePointInTime: Restore point creation time (ISO8601 format), specifying the time to restore from. + RestorePointInTime *string `json:"restorePointInTime,omitempty"` + + // Sku: The SKU (pricing tier) of the server. + Sku *MySQLServerSku_STATUS `json:"sku,omitempty"` + + // SourceServerResourceId: The source MySQL server id. + SourceServerResourceId *string `json:"sourceServerResourceId,omitempty"` + + // State: The state of a server. + State *ServerProperties_State_STATUS `json:"state,omitempty"` + + // Storage: Storage related properties of a server. + Storage *Storage_STATUS `json:"storage,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"` + + // Version: Server version. + Version *ServerVersion_STATUS `json:"version,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServer_STATUS{} + +// ConvertStatusFrom populates our FlexibleServer_STATUS from the provided source +func (server *FlexibleServer_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.FlexibleServer_STATUS) + if ok { + // Populate our instance from source + return server.AssignProperties_From_FlexibleServer_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServer_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = server.AssignProperties_From_FlexibleServer_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our FlexibleServer_STATUS +func (server *FlexibleServer_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.FlexibleServer_STATUS) + if ok { + // Populate destination from our instance + return server.AssignProperties_To_FlexibleServer_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServer_STATUS{} + err := server.AssignProperties_To_FlexibleServer_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 = &FlexibleServer_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (server *FlexibleServer_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServer_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (server *FlexibleServer_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServer_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServer_STATUS, got %T", armInput) + } + + // Set property "AdministratorLogin": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AdministratorLogin != nil { + administratorLogin := *typedInput.Properties.AdministratorLogin + server.AdministratorLogin = &administratorLogin + } + } + + // Set property "AvailabilityZone": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AvailabilityZone != nil { + availabilityZone := *typedInput.Properties.AvailabilityZone + server.AvailabilityZone = &availabilityZone + } + } + + // Set property "Backup": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Backup != nil { + var backup1 Backup_STATUS + err := backup1.PopulateFromARM(owner, *typedInput.Properties.Backup) + if err != nil { + return err + } + backup := backup1 + server.Backup = &backup + } + } + + // no assignment for property "Conditions" + + // Set property "CreateMode": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CreateMode != nil { + var temp string + temp = string(*typedInput.Properties.CreateMode) + createMode := ServerProperties_CreateMode_STATUS(temp) + server.CreateMode = &createMode + } + } + + // Set property "DataEncryption": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataEncryption != nil { + var dataEncryption1 DataEncryption_STATUS + err := dataEncryption1.PopulateFromARM(owner, *typedInput.Properties.DataEncryption) + if err != nil { + return err + } + dataEncryption := dataEncryption1 + server.DataEncryption = &dataEncryption + } + } + + // Set property "FullyQualifiedDomainName": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := *typedInput.Properties.FullyQualifiedDomainName + server.FullyQualifiedDomainName = &fullyQualifiedDomainName + } + } + + // Set property "HighAvailability": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.HighAvailability != nil { + var highAvailability1 HighAvailability_STATUS + err := highAvailability1.PopulateFromARM(owner, *typedInput.Properties.HighAvailability) + if err != nil { + return err + } + highAvailability := highAvailability1 + server.HighAvailability = &highAvailability + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + server.Id = &id + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 MySQLServerIdentity_STATUS + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + server.Identity = &identity + } + + // Set property "ImportSourceProperties": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ImportSourceProperties != nil { + var importSourceProperties1 ImportSourceProperties_STATUS + err := importSourceProperties1.PopulateFromARM(owner, *typedInput.Properties.ImportSourceProperties) + if err != nil { + return err + } + importSourceProperties := importSourceProperties1 + server.ImportSourceProperties = &importSourceProperties + } + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + server.Location = &location + } + + // Set property "MaintenanceWindow": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.MaintenanceWindow != nil { + var maintenanceWindow1 MaintenanceWindow_STATUS + err := maintenanceWindow1.PopulateFromARM(owner, *typedInput.Properties.MaintenanceWindow) + if err != nil { + return err + } + maintenanceWindow := maintenanceWindow1 + server.MaintenanceWindow = &maintenanceWindow + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + server.Name = &name + } + + // Set property "Network": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Network != nil { + var network1 Network_STATUS + err := network1.PopulateFromARM(owner, *typedInput.Properties.Network) + if err != nil { + return err + } + network := network1 + server.Network = &network + } + } + + // Set property "PrivateEndpointConnections": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.PrivateEndpointConnections { + var item1 PrivateEndpointConnection_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + server.PrivateEndpointConnections = append(server.PrivateEndpointConnections, item1) + } + } + + // Set property "ReplicaCapacity": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ReplicaCapacity != nil { + replicaCapacity := *typedInput.Properties.ReplicaCapacity + server.ReplicaCapacity = &replicaCapacity + } + } + + // Set property "ReplicationRole": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ReplicationRole != nil { + var temp string + temp = string(*typedInput.Properties.ReplicationRole) + replicationRole := ReplicationRole_STATUS(temp) + server.ReplicationRole = &replicationRole + } + } + + // Set property "RestorePointInTime": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RestorePointInTime != nil { + restorePointInTime := *typedInput.Properties.RestorePointInTime + server.RestorePointInTime = &restorePointInTime + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 MySQLServerSku_STATUS + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + server.Sku = &sku + } + + // Set property "SourceServerResourceId": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.SourceServerResourceId != nil { + sourceServerResourceId := *typedInput.Properties.SourceServerResourceId + server.SourceServerResourceId = &sourceServerResourceId + } + } + + // Set property "State": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.State != nil { + var temp string + temp = string(*typedInput.Properties.State) + state := ServerProperties_State_STATUS(temp) + server.State = &state + } + } + + // Set property "Storage": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Storage != nil { + var storage1 Storage_STATUS + err := storage1.PopulateFromARM(owner, *typedInput.Properties.Storage) + if err != nil { + return err + } + storage := storage1 + server.Storage = &storage + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + server.SystemData = &systemData + } + + // Set property "Tags": + if typedInput.Tags != nil { + server.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + server.Tags[key] = value + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + server.Type = &typeVar + } + + // Set property "Version": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Version != nil { + var temp string + temp = string(*typedInput.Properties.Version) + version := ServerVersion_STATUS(temp) + server.Version = &version + } + } + + // No error + return nil +} + +// AssignProperties_From_FlexibleServer_STATUS populates our FlexibleServer_STATUS from the provided source FlexibleServer_STATUS +func (server *FlexibleServer_STATUS) AssignProperties_From_FlexibleServer_STATUS(source *storage.FlexibleServer_STATUS) error { + + // AdministratorLogin + server.AdministratorLogin = genruntime.ClonePointerToString(source.AdministratorLogin) + + // AvailabilityZone + server.AvailabilityZone = genruntime.ClonePointerToString(source.AvailabilityZone) + + // Backup + if source.Backup != nil { + var backup Backup_STATUS + err := backup.AssignProperties_From_Backup_STATUS(source.Backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Backup_STATUS() to populate field Backup") + } + server.Backup = &backup + } else { + server.Backup = nil + } + + // Conditions + server.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CreateMode + if source.CreateMode != nil { + createMode := *source.CreateMode + createModeTemp := genruntime.ToEnum(createMode, serverProperties_CreateMode_STATUS_Values) + server.CreateMode = &createModeTemp + } else { + server.CreateMode = nil + } + + // DataEncryption + if source.DataEncryption != nil { + var dataEncryption DataEncryption_STATUS + err := dataEncryption.AssignProperties_From_DataEncryption_STATUS(source.DataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_DataEncryption_STATUS() to populate field DataEncryption") + } + server.DataEncryption = &dataEncryption + } else { + server.DataEncryption = nil + } + + // FullyQualifiedDomainName + server.FullyQualifiedDomainName = genruntime.ClonePointerToString(source.FullyQualifiedDomainName) + + // HighAvailability + if source.HighAvailability != nil { + var highAvailability HighAvailability_STATUS + err := highAvailability.AssignProperties_From_HighAvailability_STATUS(source.HighAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_HighAvailability_STATUS() to populate field HighAvailability") + } + server.HighAvailability = &highAvailability + } else { + server.HighAvailability = nil + } + + // Id + server.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity MySQLServerIdentity_STATUS + err := identity.AssignProperties_From_MySQLServerIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerIdentity_STATUS() to populate field Identity") + } + server.Identity = &identity + } else { + server.Identity = nil + } + + // ImportSourceProperties + if source.ImportSourceProperties != nil { + var importSourceProperty ImportSourceProperties_STATUS + err := importSourceProperty.AssignProperties_From_ImportSourceProperties_STATUS(source.ImportSourceProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ImportSourceProperties_STATUS() to populate field ImportSourceProperties") + } + server.ImportSourceProperties = &importSourceProperty + } else { + server.ImportSourceProperties = nil + } + + // Location + server.Location = genruntime.ClonePointerToString(source.Location) + + // MaintenanceWindow + if source.MaintenanceWindow != nil { + var maintenanceWindow MaintenanceWindow_STATUS + err := maintenanceWindow.AssignProperties_From_MaintenanceWindow_STATUS(source.MaintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MaintenanceWindow_STATUS() to populate field MaintenanceWindow") + } + server.MaintenanceWindow = &maintenanceWindow + } else { + server.MaintenanceWindow = nil + } + + // Name + server.Name = genruntime.ClonePointerToString(source.Name) + + // Network + if source.Network != nil { + var network Network_STATUS + err := network.AssignProperties_From_Network_STATUS(source.Network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Network_STATUS() to populate field Network") + } + server.Network = &network + } else { + server.Network = nil + } + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnection_STATUS, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection PrivateEndpointConnection_STATUS + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnection_STATUS(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + server.PrivateEndpointConnections = privateEndpointConnectionList + } else { + server.PrivateEndpointConnections = nil + } + + // ReplicaCapacity + server.ReplicaCapacity = genruntime.ClonePointerToInt(source.ReplicaCapacity) + + // ReplicationRole + if source.ReplicationRole != nil { + replicationRole := *source.ReplicationRole + replicationRoleTemp := genruntime.ToEnum(replicationRole, replicationRole_STATUS_Values) + server.ReplicationRole = &replicationRoleTemp + } else { + server.ReplicationRole = nil + } + + // RestorePointInTime + server.RestorePointInTime = genruntime.ClonePointerToString(source.RestorePointInTime) + + // Sku + if source.Sku != nil { + var sku MySQLServerSku_STATUS + err := sku.AssignProperties_From_MySQLServerSku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_MySQLServerSku_STATUS() to populate field Sku") + } + server.Sku = &sku + } else { + server.Sku = nil + } + + // SourceServerResourceId + server.SourceServerResourceId = genruntime.ClonePointerToString(source.SourceServerResourceId) + + // State + if source.State != nil { + state := *source.State + stateTemp := genruntime.ToEnum(state, serverProperties_State_STATUS_Values) + server.State = &stateTemp + } else { + server.State = nil + } + + // Storage + if source.Storage != nil { + var storage Storage_STATUS + err := storage.AssignProperties_From_Storage_STATUS(source.Storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Storage_STATUS() to populate field Storage") + } + server.Storage = &storage + } else { + server.Storage = 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") + } + server.SystemData = &systemDatum + } else { + server.SystemData = nil + } + + // Tags + server.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + server.Type = genruntime.ClonePointerToString(source.Type) + + // Version + if source.Version != nil { + version := *source.Version + versionTemp := genruntime.ToEnum(version, serverVersion_STATUS_Values) + server.Version = &versionTemp + } else { + server.Version = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServer_STATUS populates the provided destination FlexibleServer_STATUS from our FlexibleServer_STATUS +func (server *FlexibleServer_STATUS) AssignProperties_To_FlexibleServer_STATUS(destination *storage.FlexibleServer_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdministratorLogin + destination.AdministratorLogin = genruntime.ClonePointerToString(server.AdministratorLogin) + + // AvailabilityZone + destination.AvailabilityZone = genruntime.ClonePointerToString(server.AvailabilityZone) + + // Backup + if server.Backup != nil { + var backup storage.Backup_STATUS + err := server.Backup.AssignProperties_To_Backup_STATUS(&backup) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Backup_STATUS() to populate field Backup") + } + destination.Backup = &backup + } else { + destination.Backup = nil + } + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(server.Conditions) + + // CreateMode + if server.CreateMode != nil { + createMode := string(*server.CreateMode) + destination.CreateMode = &createMode + } else { + destination.CreateMode = nil + } + + // DataEncryption + if server.DataEncryption != nil { + var dataEncryption storage.DataEncryption_STATUS + err := server.DataEncryption.AssignProperties_To_DataEncryption_STATUS(&dataEncryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_DataEncryption_STATUS() to populate field DataEncryption") + } + destination.DataEncryption = &dataEncryption + } else { + destination.DataEncryption = nil + } + + // FullyQualifiedDomainName + destination.FullyQualifiedDomainName = genruntime.ClonePointerToString(server.FullyQualifiedDomainName) + + // HighAvailability + if server.HighAvailability != nil { + var highAvailability storage.HighAvailability_STATUS + err := server.HighAvailability.AssignProperties_To_HighAvailability_STATUS(&highAvailability) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_HighAvailability_STATUS() to populate field HighAvailability") + } + destination.HighAvailability = &highAvailability + } else { + destination.HighAvailability = nil + } + + // Id + destination.Id = genruntime.ClonePointerToString(server.Id) + + // Identity + if server.Identity != nil { + var identity storage.MySQLServerIdentity_STATUS + err := server.Identity.AssignProperties_To_MySQLServerIdentity_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerIdentity_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // ImportSourceProperties + if server.ImportSourceProperties != nil { + var importSourceProperty storage.ImportSourceProperties_STATUS + err := server.ImportSourceProperties.AssignProperties_To_ImportSourceProperties_STATUS(&importSourceProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ImportSourceProperties_STATUS() to populate field ImportSourceProperties") + } + destination.ImportSourceProperties = &importSourceProperty + } else { + destination.ImportSourceProperties = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(server.Location) + + // MaintenanceWindow + if server.MaintenanceWindow != nil { + var maintenanceWindow storage.MaintenanceWindow_STATUS + err := server.MaintenanceWindow.AssignProperties_To_MaintenanceWindow_STATUS(&maintenanceWindow) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MaintenanceWindow_STATUS() to populate field MaintenanceWindow") + } + destination.MaintenanceWindow = &maintenanceWindow + } else { + destination.MaintenanceWindow = nil + } + + // Name + destination.Name = genruntime.ClonePointerToString(server.Name) + + // Network + if server.Network != nil { + var network storage.Network_STATUS + err := server.Network.AssignProperties_To_Network_STATUS(&network) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Network_STATUS() to populate field Network") + } + destination.Network = &network + } else { + destination.Network = nil + } + + // PrivateEndpointConnections + if server.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnection_STATUS, len(server.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range server.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection storage.PrivateEndpointConnection_STATUS + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnection_STATUS(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ReplicaCapacity + destination.ReplicaCapacity = genruntime.ClonePointerToInt(server.ReplicaCapacity) + + // ReplicationRole + if server.ReplicationRole != nil { + replicationRole := string(*server.ReplicationRole) + destination.ReplicationRole = &replicationRole + } else { + destination.ReplicationRole = nil + } + + // RestorePointInTime + destination.RestorePointInTime = genruntime.ClonePointerToString(server.RestorePointInTime) + + // Sku + if server.Sku != nil { + var sku storage.MySQLServerSku_STATUS + err := server.Sku.AssignProperties_To_MySQLServerSku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_MySQLServerSku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SourceServerResourceId + destination.SourceServerResourceId = genruntime.ClonePointerToString(server.SourceServerResourceId) + + // State + if server.State != nil { + state := string(*server.State) + destination.State = &state + } else { + destination.State = nil + } + + // Storage + if server.Storage != nil { + var storage storage.Storage_STATUS + err := server.Storage.AssignProperties_To_Storage_STATUS(&storage) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Storage_STATUS() to populate field Storage") + } + destination.Storage = &storage + } else { + destination.Storage = nil + } + + // SystemData + if server.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := server.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(server.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(server.Type) + + // Version + if server.Version != nil { + version := string(*server.Version) + destination.Version = &version + } else { + destination.Version = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Storage Profile properties of a server +type Backup struct { + // BackupIntervalHours: Backup interval hours for the server. + BackupIntervalHours *int `json:"backupIntervalHours,omitempty"` + + // BackupRetentionDays: Backup retention days for the server. + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + + // GeoRedundantBackup: Whether or not geo redundant backup is enabled. + GeoRedundantBackup *EnableStatusEnum `json:"geoRedundantBackup,omitempty"` +} + +var _ genruntime.ARMTransformer = &Backup{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (backup *Backup) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if backup == nil { + return nil, nil + } + result := &arm.Backup{} + + // Set property "BackupIntervalHours": + if backup.BackupIntervalHours != nil { + backupIntervalHours := *backup.BackupIntervalHours + result.BackupIntervalHours = &backupIntervalHours + } + + // Set property "BackupRetentionDays": + if backup.BackupRetentionDays != nil { + backupRetentionDays := *backup.BackupRetentionDays + result.BackupRetentionDays = &backupRetentionDays + } + + // Set property "GeoRedundantBackup": + if backup.GeoRedundantBackup != nil { + var temp string + temp = string(*backup.GeoRedundantBackup) + geoRedundantBackup := arm.EnableStatusEnum(temp) + result.GeoRedundantBackup = &geoRedundantBackup + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (backup *Backup) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Backup{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (backup *Backup) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Backup) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Backup, got %T", armInput) + } + + // Set property "BackupIntervalHours": + if typedInput.BackupIntervalHours != nil { + backupIntervalHours := *typedInput.BackupIntervalHours + backup.BackupIntervalHours = &backupIntervalHours + } + + // Set property "BackupRetentionDays": + if typedInput.BackupRetentionDays != nil { + backupRetentionDays := *typedInput.BackupRetentionDays + backup.BackupRetentionDays = &backupRetentionDays + } + + // Set property "GeoRedundantBackup": + if typedInput.GeoRedundantBackup != nil { + var temp string + temp = string(*typedInput.GeoRedundantBackup) + geoRedundantBackup := EnableStatusEnum(temp) + backup.GeoRedundantBackup = &geoRedundantBackup + } + + // No error + return nil +} + +// AssignProperties_From_Backup populates our Backup from the provided source Backup +func (backup *Backup) AssignProperties_From_Backup(source *storage.Backup) error { + + // BackupIntervalHours + backup.BackupIntervalHours = genruntime.ClonePointerToInt(source.BackupIntervalHours) + + // BackupRetentionDays + backup.BackupRetentionDays = genruntime.ClonePointerToInt(source.BackupRetentionDays) + + // GeoRedundantBackup + if source.GeoRedundantBackup != nil { + geoRedundantBackup := *source.GeoRedundantBackup + geoRedundantBackupTemp := genruntime.ToEnum(geoRedundantBackup, enableStatusEnum_Values) + backup.GeoRedundantBackup = &geoRedundantBackupTemp + } else { + backup.GeoRedundantBackup = nil + } + + // No error + return nil +} + +// AssignProperties_To_Backup populates the provided destination Backup from our Backup +func (backup *Backup) AssignProperties_To_Backup(destination *storage.Backup) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // BackupIntervalHours + destination.BackupIntervalHours = genruntime.ClonePointerToInt(backup.BackupIntervalHours) + + // BackupRetentionDays + destination.BackupRetentionDays = genruntime.ClonePointerToInt(backup.BackupRetentionDays) + + // GeoRedundantBackup + if backup.GeoRedundantBackup != nil { + geoRedundantBackup := string(*backup.GeoRedundantBackup) + destination.GeoRedundantBackup = &geoRedundantBackup + } else { + destination.GeoRedundantBackup = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Backup_STATUS populates our Backup from the provided source Backup_STATUS +func (backup *Backup) Initialize_From_Backup_STATUS(source *Backup_STATUS) error { + + // BackupIntervalHours + backup.BackupIntervalHours = genruntime.ClonePointerToInt(source.BackupIntervalHours) + + // BackupRetentionDays + backup.BackupRetentionDays = genruntime.ClonePointerToInt(source.BackupRetentionDays) + + // GeoRedundantBackup + if source.GeoRedundantBackup != nil { + geoRedundantBackup := genruntime.ToEnum(string(*source.GeoRedundantBackup), enableStatusEnum_Values) + backup.GeoRedundantBackup = &geoRedundantBackup + } else { + backup.GeoRedundantBackup = nil + } + + // No error + return nil +} + +// Storage Profile properties of a server +type Backup_STATUS struct { + // BackupIntervalHours: Backup interval hours for the server. + BackupIntervalHours *int `json:"backupIntervalHours,omitempty"` + + // BackupRetentionDays: Backup retention days for the server. + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + + // EarliestRestoreDate: Earliest restore point creation time (ISO8601 format) + EarliestRestoreDate *string `json:"earliestRestoreDate,omitempty"` + + // GeoRedundantBackup: Whether or not geo redundant backup is enabled. + GeoRedundantBackup *EnableStatusEnum_STATUS `json:"geoRedundantBackup,omitempty"` +} + +var _ genruntime.FromARMConverter = &Backup_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (backup *Backup_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Backup_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (backup *Backup_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Backup_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Backup_STATUS, got %T", armInput) + } + + // Set property "BackupIntervalHours": + if typedInput.BackupIntervalHours != nil { + backupIntervalHours := *typedInput.BackupIntervalHours + backup.BackupIntervalHours = &backupIntervalHours + } + + // Set property "BackupRetentionDays": + if typedInput.BackupRetentionDays != nil { + backupRetentionDays := *typedInput.BackupRetentionDays + backup.BackupRetentionDays = &backupRetentionDays + } + + // Set property "EarliestRestoreDate": + if typedInput.EarliestRestoreDate != nil { + earliestRestoreDate := *typedInput.EarliestRestoreDate + backup.EarliestRestoreDate = &earliestRestoreDate + } + + // Set property "GeoRedundantBackup": + if typedInput.GeoRedundantBackup != nil { + var temp string + temp = string(*typedInput.GeoRedundantBackup) + geoRedundantBackup := EnableStatusEnum_STATUS(temp) + backup.GeoRedundantBackup = &geoRedundantBackup + } + + // No error + return nil +} + +// AssignProperties_From_Backup_STATUS populates our Backup_STATUS from the provided source Backup_STATUS +func (backup *Backup_STATUS) AssignProperties_From_Backup_STATUS(source *storage.Backup_STATUS) error { + + // BackupIntervalHours + backup.BackupIntervalHours = genruntime.ClonePointerToInt(source.BackupIntervalHours) + + // BackupRetentionDays + backup.BackupRetentionDays = genruntime.ClonePointerToInt(source.BackupRetentionDays) + + // EarliestRestoreDate + backup.EarliestRestoreDate = genruntime.ClonePointerToString(source.EarliestRestoreDate) + + // GeoRedundantBackup + if source.GeoRedundantBackup != nil { + geoRedundantBackup := *source.GeoRedundantBackup + geoRedundantBackupTemp := genruntime.ToEnum(geoRedundantBackup, enableStatusEnum_STATUS_Values) + backup.GeoRedundantBackup = &geoRedundantBackupTemp + } else { + backup.GeoRedundantBackup = nil + } + + // No error + return nil +} + +// AssignProperties_To_Backup_STATUS populates the provided destination Backup_STATUS from our Backup_STATUS +func (backup *Backup_STATUS) AssignProperties_To_Backup_STATUS(destination *storage.Backup_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // BackupIntervalHours + destination.BackupIntervalHours = genruntime.ClonePointerToInt(backup.BackupIntervalHours) + + // BackupRetentionDays + destination.BackupRetentionDays = genruntime.ClonePointerToInt(backup.BackupRetentionDays) + + // EarliestRestoreDate + destination.EarliestRestoreDate = genruntime.ClonePointerToString(backup.EarliestRestoreDate) + + // GeoRedundantBackup + if backup.GeoRedundantBackup != nil { + geoRedundantBackup := string(*backup.GeoRedundantBackup) + destination.GeoRedundantBackup = &geoRedundantBackup + } else { + destination.GeoRedundantBackup = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The date encryption for cmk. +type DataEncryption struct { + // GeoBackupKeyURI: Geo backup key uri as key vault can't cross region, need cmk in same region as geo backup + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + + // GeoBackupUserAssignedIdentityReference: Geo backup user identity resource id as identity can't cross region, need + // identity in same region as geo backup + GeoBackupUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"GeoBackupUserAssignedIdentityId" json:"geoBackupUserAssignedIdentityReference,omitempty"` + + // PrimaryKeyURI: Primary key uri + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + + // PrimaryUserAssignedIdentityReference: Primary user identity resource id + PrimaryUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"PrimaryUserAssignedIdentityId" json:"primaryUserAssignedIdentityReference,omitempty"` + + // Type: The key type, AzureKeyVault for enable cmk, SystemManaged for disable cmk. + Type *DataEncryption_Type `json:"type,omitempty"` +} + +var _ genruntime.ARMTransformer = &DataEncryption{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (encryption *DataEncryption) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if encryption == nil { + return nil, nil + } + result := &arm.DataEncryption{} + + // Set property "GeoBackupKeyURI": + if encryption.GeoBackupKeyURI != nil { + geoBackupKeyURI := *encryption.GeoBackupKeyURI + result.GeoBackupKeyURI = &geoBackupKeyURI + } + + // Set property "GeoBackupUserAssignedIdentityId": + if encryption.GeoBackupUserAssignedIdentityReference != nil { + geoBackupUserAssignedIdentityReferenceARMID, err := resolved.ResolvedReferences.Lookup(*encryption.GeoBackupUserAssignedIdentityReference) + if err != nil { + return nil, err + } + geoBackupUserAssignedIdentityReference := geoBackupUserAssignedIdentityReferenceARMID + result.GeoBackupUserAssignedIdentityId = &geoBackupUserAssignedIdentityReference + } + + // Set property "PrimaryKeyURI": + if encryption.PrimaryKeyURI != nil { + primaryKeyURI := *encryption.PrimaryKeyURI + result.PrimaryKeyURI = &primaryKeyURI + } + + // Set property "PrimaryUserAssignedIdentityId": + if encryption.PrimaryUserAssignedIdentityReference != nil { + primaryUserAssignedIdentityReferenceARMID, err := resolved.ResolvedReferences.Lookup(*encryption.PrimaryUserAssignedIdentityReference) + if err != nil { + return nil, err + } + primaryUserAssignedIdentityReference := primaryUserAssignedIdentityReferenceARMID + result.PrimaryUserAssignedIdentityId = &primaryUserAssignedIdentityReference + } + + // Set property "Type": + if encryption.Type != nil { + var temp string + temp = string(*encryption.Type) + typeVar := arm.DataEncryption_Type(temp) + result.Type = &typeVar + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (encryption *DataEncryption) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.DataEncryption{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (encryption *DataEncryption) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.DataEncryption) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.DataEncryption, got %T", armInput) + } + + // Set property "GeoBackupKeyURI": + if typedInput.GeoBackupKeyURI != nil { + geoBackupKeyURI := *typedInput.GeoBackupKeyURI + encryption.GeoBackupKeyURI = &geoBackupKeyURI + } + + // no assignment for property "GeoBackupUserAssignedIdentityReference" + + // Set property "PrimaryKeyURI": + if typedInput.PrimaryKeyURI != nil { + primaryKeyURI := *typedInput.PrimaryKeyURI + encryption.PrimaryKeyURI = &primaryKeyURI + } + + // no assignment for property "PrimaryUserAssignedIdentityReference" + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := DataEncryption_Type(temp) + encryption.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_DataEncryption populates our DataEncryption from the provided source DataEncryption +func (encryption *DataEncryption) AssignProperties_From_DataEncryption(source *storage.DataEncryption) error { + + // GeoBackupKeyURI + encryption.GeoBackupKeyURI = genruntime.ClonePointerToString(source.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityReference + if source.GeoBackupUserAssignedIdentityReference != nil { + geoBackupUserAssignedIdentityReference := source.GeoBackupUserAssignedIdentityReference.Copy() + encryption.GeoBackupUserAssignedIdentityReference = &geoBackupUserAssignedIdentityReference + } else { + encryption.GeoBackupUserAssignedIdentityReference = nil + } + + // PrimaryKeyURI + encryption.PrimaryKeyURI = genruntime.ClonePointerToString(source.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityReference + if source.PrimaryUserAssignedIdentityReference != nil { + primaryUserAssignedIdentityReference := source.PrimaryUserAssignedIdentityReference.Copy() + encryption.PrimaryUserAssignedIdentityReference = &primaryUserAssignedIdentityReference + } else { + encryption.PrimaryUserAssignedIdentityReference = nil + } + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, dataEncryption_Type_Values) + encryption.Type = &typeTemp + } else { + encryption.Type = nil + } + + // No error + return nil +} + +// AssignProperties_To_DataEncryption populates the provided destination DataEncryption from our DataEncryption +func (encryption *DataEncryption) AssignProperties_To_DataEncryption(destination *storage.DataEncryption) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // GeoBackupKeyURI + destination.GeoBackupKeyURI = genruntime.ClonePointerToString(encryption.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityReference + if encryption.GeoBackupUserAssignedIdentityReference != nil { + geoBackupUserAssignedIdentityReference := encryption.GeoBackupUserAssignedIdentityReference.Copy() + destination.GeoBackupUserAssignedIdentityReference = &geoBackupUserAssignedIdentityReference + } else { + destination.GeoBackupUserAssignedIdentityReference = nil + } + + // PrimaryKeyURI + destination.PrimaryKeyURI = genruntime.ClonePointerToString(encryption.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityReference + if encryption.PrimaryUserAssignedIdentityReference != nil { + primaryUserAssignedIdentityReference := encryption.PrimaryUserAssignedIdentityReference.Copy() + destination.PrimaryUserAssignedIdentityReference = &primaryUserAssignedIdentityReference + } else { + destination.PrimaryUserAssignedIdentityReference = nil + } + + // Type + if encryption.Type != nil { + typeVar := string(*encryption.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_DataEncryption_STATUS populates our DataEncryption from the provided source DataEncryption_STATUS +func (encryption *DataEncryption) Initialize_From_DataEncryption_STATUS(source *DataEncryption_STATUS) error { + + // GeoBackupKeyURI + encryption.GeoBackupKeyURI = genruntime.ClonePointerToString(source.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityReference + if source.GeoBackupUserAssignedIdentityId != nil { + geoBackupUserAssignedIdentityReference := genruntime.CreateResourceReferenceFromARMID(*source.GeoBackupUserAssignedIdentityId) + encryption.GeoBackupUserAssignedIdentityReference = &geoBackupUserAssignedIdentityReference + } else { + encryption.GeoBackupUserAssignedIdentityReference = nil + } + + // PrimaryKeyURI + encryption.PrimaryKeyURI = genruntime.ClonePointerToString(source.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityReference + if source.PrimaryUserAssignedIdentityId != nil { + primaryUserAssignedIdentityReference := genruntime.CreateResourceReferenceFromARMID(*source.PrimaryUserAssignedIdentityId) + encryption.PrimaryUserAssignedIdentityReference = &primaryUserAssignedIdentityReference + } else { + encryption.PrimaryUserAssignedIdentityReference = nil + } + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), dataEncryption_Type_Values) + encryption.Type = &typeVar + } else { + encryption.Type = nil + } + + // No error + return nil +} + +// The date encryption for cmk. +type DataEncryption_STATUS struct { + // GeoBackupKeyURI: Geo backup key uri as key vault can't cross region, need cmk in same region as geo backup + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + + // GeoBackupUserAssignedIdentityId: Geo backup user identity resource id as identity can't cross region, need identity in + // same region as geo backup + GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"` + + // PrimaryKeyURI: Primary key uri + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + + // PrimaryUserAssignedIdentityId: Primary user identity resource id + PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"` + + // Type: The key type, AzureKeyVault for enable cmk, SystemManaged for disable cmk. + Type *DataEncryption_Type_STATUS `json:"type,omitempty"` +} + +var _ genruntime.FromARMConverter = &DataEncryption_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (encryption *DataEncryption_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.DataEncryption_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (encryption *DataEncryption_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.DataEncryption_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.DataEncryption_STATUS, got %T", armInput) + } + + // Set property "GeoBackupKeyURI": + if typedInput.GeoBackupKeyURI != nil { + geoBackupKeyURI := *typedInput.GeoBackupKeyURI + encryption.GeoBackupKeyURI = &geoBackupKeyURI + } + + // Set property "GeoBackupUserAssignedIdentityId": + if typedInput.GeoBackupUserAssignedIdentityId != nil { + geoBackupUserAssignedIdentityId := *typedInput.GeoBackupUserAssignedIdentityId + encryption.GeoBackupUserAssignedIdentityId = &geoBackupUserAssignedIdentityId + } + + // Set property "PrimaryKeyURI": + if typedInput.PrimaryKeyURI != nil { + primaryKeyURI := *typedInput.PrimaryKeyURI + encryption.PrimaryKeyURI = &primaryKeyURI + } + + // Set property "PrimaryUserAssignedIdentityId": + if typedInput.PrimaryUserAssignedIdentityId != nil { + primaryUserAssignedIdentityId := *typedInput.PrimaryUserAssignedIdentityId + encryption.PrimaryUserAssignedIdentityId = &primaryUserAssignedIdentityId + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := DataEncryption_Type_STATUS(temp) + encryption.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_DataEncryption_STATUS populates our DataEncryption_STATUS from the provided source DataEncryption_STATUS +func (encryption *DataEncryption_STATUS) AssignProperties_From_DataEncryption_STATUS(source *storage.DataEncryption_STATUS) error { + + // GeoBackupKeyURI + encryption.GeoBackupKeyURI = genruntime.ClonePointerToString(source.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityId + encryption.GeoBackupUserAssignedIdentityId = genruntime.ClonePointerToString(source.GeoBackupUserAssignedIdentityId) + + // PrimaryKeyURI + encryption.PrimaryKeyURI = genruntime.ClonePointerToString(source.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityId + encryption.PrimaryUserAssignedIdentityId = genruntime.ClonePointerToString(source.PrimaryUserAssignedIdentityId) + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, dataEncryption_Type_STATUS_Values) + encryption.Type = &typeTemp + } else { + encryption.Type = nil + } + + // No error + return nil +} + +// AssignProperties_To_DataEncryption_STATUS populates the provided destination DataEncryption_STATUS from our DataEncryption_STATUS +func (encryption *DataEncryption_STATUS) AssignProperties_To_DataEncryption_STATUS(destination *storage.DataEncryption_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // GeoBackupKeyURI + destination.GeoBackupKeyURI = genruntime.ClonePointerToString(encryption.GeoBackupKeyURI) + + // GeoBackupUserAssignedIdentityId + destination.GeoBackupUserAssignedIdentityId = genruntime.ClonePointerToString(encryption.GeoBackupUserAssignedIdentityId) + + // PrimaryKeyURI + destination.PrimaryKeyURI = genruntime.ClonePointerToString(encryption.PrimaryKeyURI) + + // PrimaryUserAssignedIdentityId + destination.PrimaryUserAssignedIdentityId = genruntime.ClonePointerToString(encryption.PrimaryUserAssignedIdentityId) + + // Type + if encryption.Type != nil { + typeVar := string(*encryption.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 +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServerOperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // ConfigMaps: configures where to place operator written ConfigMaps. + ConfigMaps *FlexibleServerOperatorConfigMaps `json:"configMaps,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 *FlexibleServerOperatorSecrets `json:"secrets,omitempty"` +} + +// AssignProperties_From_FlexibleServerOperatorSpec populates our FlexibleServerOperatorSpec from the provided source FlexibleServerOperatorSpec +func (operator *FlexibleServerOperatorSpec) AssignProperties_From_FlexibleServerOperatorSpec(source *storage.FlexibleServerOperatorSpec) 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 + } + + // ConfigMaps + if source.ConfigMaps != nil { + var configMap FlexibleServerOperatorConfigMaps + err := configMap.AssignProperties_From_FlexibleServerOperatorConfigMaps(source.ConfigMaps) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServerOperatorConfigMaps() to populate field ConfigMaps") + } + operator.ConfigMaps = &configMap + } else { + operator.ConfigMaps = 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 FlexibleServerOperatorSecrets + err := secret.AssignProperties_From_FlexibleServerOperatorSecrets(source.Secrets) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServerOperatorSecrets() to populate field Secrets") + } + operator.Secrets = &secret + } else { + operator.Secrets = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServerOperatorSpec populates the provided destination FlexibleServerOperatorSpec from our FlexibleServerOperatorSpec +func (operator *FlexibleServerOperatorSpec) AssignProperties_To_FlexibleServerOperatorSpec(destination *storage.FlexibleServerOperatorSpec) 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 + } + + // ConfigMaps + if operator.ConfigMaps != nil { + var configMap storage.FlexibleServerOperatorConfigMaps + err := operator.ConfigMaps.AssignProperties_To_FlexibleServerOperatorConfigMaps(&configMap) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServerOperatorConfigMaps() to populate field ConfigMaps") + } + destination.ConfigMaps = &configMap + } else { + destination.ConfigMaps = 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.FlexibleServerOperatorSecrets + err := operator.Secrets.AssignProperties_To_FlexibleServerOperatorSecrets(&secret) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServerOperatorSecrets() 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 +} + +// High availability properties of a server +type HighAvailability struct { + // Mode: High availability mode for a server. + Mode *HighAvailability_Mode `json:"mode,omitempty"` + + // StandbyAvailabilityZone: Availability zone of the standby server. + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` +} + +var _ genruntime.ARMTransformer = &HighAvailability{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (availability *HighAvailability) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if availability == nil { + return nil, nil + } + result := &arm.HighAvailability{} + + // Set property "Mode": + if availability.Mode != nil { + var temp string + temp = string(*availability.Mode) + mode := arm.HighAvailability_Mode(temp) + result.Mode = &mode + } + + // Set property "StandbyAvailabilityZone": + if availability.StandbyAvailabilityZone != nil { + standbyAvailabilityZone := *availability.StandbyAvailabilityZone + result.StandbyAvailabilityZone = &standbyAvailabilityZone + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (availability *HighAvailability) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.HighAvailability{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (availability *HighAvailability) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.HighAvailability) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.HighAvailability, got %T", armInput) + } + + // Set property "Mode": + if typedInput.Mode != nil { + var temp string + temp = string(*typedInput.Mode) + mode := HighAvailability_Mode(temp) + availability.Mode = &mode + } + + // Set property "StandbyAvailabilityZone": + if typedInput.StandbyAvailabilityZone != nil { + standbyAvailabilityZone := *typedInput.StandbyAvailabilityZone + availability.StandbyAvailabilityZone = &standbyAvailabilityZone + } + + // No error + return nil +} + +// AssignProperties_From_HighAvailability populates our HighAvailability from the provided source HighAvailability +func (availability *HighAvailability) AssignProperties_From_HighAvailability(source *storage.HighAvailability) error { + + // Mode + if source.Mode != nil { + mode := *source.Mode + modeTemp := genruntime.ToEnum(mode, highAvailability_Mode_Values) + availability.Mode = &modeTemp + } else { + availability.Mode = nil + } + + // StandbyAvailabilityZone + availability.StandbyAvailabilityZone = genruntime.ClonePointerToString(source.StandbyAvailabilityZone) + + // No error + return nil +} + +// AssignProperties_To_HighAvailability populates the provided destination HighAvailability from our HighAvailability +func (availability *HighAvailability) AssignProperties_To_HighAvailability(destination *storage.HighAvailability) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Mode + if availability.Mode != nil { + mode := string(*availability.Mode) + destination.Mode = &mode + } else { + destination.Mode = nil + } + + // StandbyAvailabilityZone + destination.StandbyAvailabilityZone = genruntime.ClonePointerToString(availability.StandbyAvailabilityZone) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_HighAvailability_STATUS populates our HighAvailability from the provided source HighAvailability_STATUS +func (availability *HighAvailability) Initialize_From_HighAvailability_STATUS(source *HighAvailability_STATUS) error { + + // Mode + if source.Mode != nil { + mode := genruntime.ToEnum(string(*source.Mode), highAvailability_Mode_Values) + availability.Mode = &mode + } else { + availability.Mode = nil + } + + // StandbyAvailabilityZone + availability.StandbyAvailabilityZone = genruntime.ClonePointerToString(source.StandbyAvailabilityZone) + + // No error + return nil +} + +// High availability properties of a server +type HighAvailability_STATUS struct { + // Mode: High availability mode for a server. + Mode *HighAvailability_Mode_STATUS `json:"mode,omitempty"` + + // StandbyAvailabilityZone: Availability zone of the standby server. + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` + + // State: The state of server high availability. + State *HighAvailability_State_STATUS `json:"state,omitempty"` +} + +var _ genruntime.FromARMConverter = &HighAvailability_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (availability *HighAvailability_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.HighAvailability_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (availability *HighAvailability_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.HighAvailability_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.HighAvailability_STATUS, got %T", armInput) + } + + // Set property "Mode": + if typedInput.Mode != nil { + var temp string + temp = string(*typedInput.Mode) + mode := HighAvailability_Mode_STATUS(temp) + availability.Mode = &mode + } + + // Set property "StandbyAvailabilityZone": + if typedInput.StandbyAvailabilityZone != nil { + standbyAvailabilityZone := *typedInput.StandbyAvailabilityZone + availability.StandbyAvailabilityZone = &standbyAvailabilityZone + } + + // Set property "State": + if typedInput.State != nil { + var temp string + temp = string(*typedInput.State) + state := HighAvailability_State_STATUS(temp) + availability.State = &state + } + + // No error + return nil +} + +// AssignProperties_From_HighAvailability_STATUS populates our HighAvailability_STATUS from the provided source HighAvailability_STATUS +func (availability *HighAvailability_STATUS) AssignProperties_From_HighAvailability_STATUS(source *storage.HighAvailability_STATUS) error { + + // Mode + if source.Mode != nil { + mode := *source.Mode + modeTemp := genruntime.ToEnum(mode, highAvailability_Mode_STATUS_Values) + availability.Mode = &modeTemp + } else { + availability.Mode = nil + } + + // StandbyAvailabilityZone + availability.StandbyAvailabilityZone = genruntime.ClonePointerToString(source.StandbyAvailabilityZone) + + // State + if source.State != nil { + state := *source.State + stateTemp := genruntime.ToEnum(state, highAvailability_State_STATUS_Values) + availability.State = &stateTemp + } else { + availability.State = nil + } + + // No error + return nil +} + +// AssignProperties_To_HighAvailability_STATUS populates the provided destination HighAvailability_STATUS from our HighAvailability_STATUS +func (availability *HighAvailability_STATUS) AssignProperties_To_HighAvailability_STATUS(destination *storage.HighAvailability_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Mode + if availability.Mode != nil { + mode := string(*availability.Mode) + destination.Mode = &mode + } else { + destination.Mode = nil + } + + // StandbyAvailabilityZone + destination.StandbyAvailabilityZone = genruntime.ClonePointerToString(availability.StandbyAvailabilityZone) + + // State + if availability.State != nil { + state := string(*availability.State) + destination.State = &state + } else { + destination.State = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Import source related properties. +type ImportSourceProperties struct { + // DataDirPath: Relative path of data directory in storage. + DataDirPath *string `json:"dataDirPath,omitempty"` + + // SasToken: Sas token for accessing source storage. Read and list permissions are required for sas token. + SasToken *genruntime.SecretReference `json:"sasToken,omitempty"` + + // StorageType: Storage type of import source. + StorageType *ImportSourceProperties_StorageType `json:"storageType,omitempty"` + + // StorageUrl: Uri of the import source storage. + StorageUrl *string `json:"storageUrl,omitempty"` +} + +var _ genruntime.ARMTransformer = &ImportSourceProperties{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (properties *ImportSourceProperties) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if properties == nil { + return nil, nil + } + result := &arm.ImportSourceProperties{} + + // Set property "DataDirPath": + if properties.DataDirPath != nil { + dataDirPath := *properties.DataDirPath + result.DataDirPath = &dataDirPath + } + + // Set property "SasToken": + if properties.SasToken != nil { + sasTokenSecret, err := resolved.ResolvedSecrets.Lookup(*properties.SasToken) + if err != nil { + return nil, eris.Wrap(err, "looking up secret for property SasToken") + } + sasToken := sasTokenSecret + result.SasToken = &sasToken + } + + // Set property "StorageType": + if properties.StorageType != nil { + var temp string + temp = string(*properties.StorageType) + storageType := arm.ImportSourceProperties_StorageType(temp) + result.StorageType = &storageType + } + + // Set property "StorageUrl": + if properties.StorageUrl != nil { + storageUrl := *properties.StorageUrl + result.StorageUrl = &storageUrl + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *ImportSourceProperties) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ImportSourceProperties{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *ImportSourceProperties) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ImportSourceProperties) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ImportSourceProperties, got %T", armInput) + } + + // Set property "DataDirPath": + if typedInput.DataDirPath != nil { + dataDirPath := *typedInput.DataDirPath + properties.DataDirPath = &dataDirPath + } + + // no assignment for property "SasToken" + + // Set property "StorageType": + if typedInput.StorageType != nil { + var temp string + temp = string(*typedInput.StorageType) + storageType := ImportSourceProperties_StorageType(temp) + properties.StorageType = &storageType + } + + // Set property "StorageUrl": + if typedInput.StorageUrl != nil { + storageUrl := *typedInput.StorageUrl + properties.StorageUrl = &storageUrl + } + + // No error + return nil +} + +// AssignProperties_From_ImportSourceProperties populates our ImportSourceProperties from the provided source ImportSourceProperties +func (properties *ImportSourceProperties) AssignProperties_From_ImportSourceProperties(source *storage.ImportSourceProperties) error { + + // DataDirPath + properties.DataDirPath = genruntime.ClonePointerToString(source.DataDirPath) + + // SasToken + if source.SasToken != nil { + sasToken := source.SasToken.Copy() + properties.SasToken = &sasToken + } else { + properties.SasToken = nil + } + + // StorageType + if source.StorageType != nil { + storageType := *source.StorageType + storageTypeTemp := genruntime.ToEnum(storageType, importSourceProperties_StorageType_Values) + properties.StorageType = &storageTypeTemp + } else { + properties.StorageType = nil + } + + // StorageUrl + properties.StorageUrl = genruntime.ClonePointerToString(source.StorageUrl) + + // No error + return nil +} + +// AssignProperties_To_ImportSourceProperties populates the provided destination ImportSourceProperties from our ImportSourceProperties +func (properties *ImportSourceProperties) AssignProperties_To_ImportSourceProperties(destination *storage.ImportSourceProperties) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DataDirPath + destination.DataDirPath = genruntime.ClonePointerToString(properties.DataDirPath) + + // SasToken + if properties.SasToken != nil { + sasToken := properties.SasToken.Copy() + destination.SasToken = &sasToken + } else { + destination.SasToken = nil + } + + // StorageType + if properties.StorageType != nil { + storageType := string(*properties.StorageType) + destination.StorageType = &storageType + } else { + destination.StorageType = nil + } + + // StorageUrl + destination.StorageUrl = genruntime.ClonePointerToString(properties.StorageUrl) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ImportSourceProperties_STATUS populates our ImportSourceProperties from the provided source ImportSourceProperties_STATUS +func (properties *ImportSourceProperties) Initialize_From_ImportSourceProperties_STATUS(source *ImportSourceProperties_STATUS) error { + + // DataDirPath + properties.DataDirPath = genruntime.ClonePointerToString(source.DataDirPath) + + // StorageType + if source.StorageType != nil { + storageType := genruntime.ToEnum(string(*source.StorageType), importSourceProperties_StorageType_Values) + properties.StorageType = &storageType + } else { + properties.StorageType = nil + } + + // StorageUrl + properties.StorageUrl = genruntime.ClonePointerToString(source.StorageUrl) + + // No error + return nil +} + +// Import source related properties. +type ImportSourceProperties_STATUS struct { + // DataDirPath: Relative path of data directory in storage. + DataDirPath *string `json:"dataDirPath,omitempty"` + + // StorageType: Storage type of import source. + StorageType *ImportSourceProperties_StorageType_STATUS `json:"storageType,omitempty"` + + // StorageUrl: Uri of the import source storage. + StorageUrl *string `json:"storageUrl,omitempty"` +} + +var _ genruntime.FromARMConverter = &ImportSourceProperties_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *ImportSourceProperties_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ImportSourceProperties_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *ImportSourceProperties_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ImportSourceProperties_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ImportSourceProperties_STATUS, got %T", armInput) + } + + // Set property "DataDirPath": + if typedInput.DataDirPath != nil { + dataDirPath := *typedInput.DataDirPath + properties.DataDirPath = &dataDirPath + } + + // Set property "StorageType": + if typedInput.StorageType != nil { + var temp string + temp = string(*typedInput.StorageType) + storageType := ImportSourceProperties_StorageType_STATUS(temp) + properties.StorageType = &storageType + } + + // Set property "StorageUrl": + if typedInput.StorageUrl != nil { + storageUrl := *typedInput.StorageUrl + properties.StorageUrl = &storageUrl + } + + // No error + return nil +} + +// AssignProperties_From_ImportSourceProperties_STATUS populates our ImportSourceProperties_STATUS from the provided source ImportSourceProperties_STATUS +func (properties *ImportSourceProperties_STATUS) AssignProperties_From_ImportSourceProperties_STATUS(source *storage.ImportSourceProperties_STATUS) error { + + // DataDirPath + properties.DataDirPath = genruntime.ClonePointerToString(source.DataDirPath) + + // StorageType + if source.StorageType != nil { + storageType := *source.StorageType + storageTypeTemp := genruntime.ToEnum(storageType, importSourceProperties_StorageType_STATUS_Values) + properties.StorageType = &storageTypeTemp + } else { + properties.StorageType = nil + } + + // StorageUrl + properties.StorageUrl = genruntime.ClonePointerToString(source.StorageUrl) + + // No error + return nil +} + +// AssignProperties_To_ImportSourceProperties_STATUS populates the provided destination ImportSourceProperties_STATUS from our ImportSourceProperties_STATUS +func (properties *ImportSourceProperties_STATUS) AssignProperties_To_ImportSourceProperties_STATUS(destination *storage.ImportSourceProperties_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DataDirPath + destination.DataDirPath = genruntime.ClonePointerToString(properties.DataDirPath) + + // StorageType + if properties.StorageType != nil { + storageType := string(*properties.StorageType) + destination.StorageType = &storageType + } else { + destination.StorageType = nil + } + + // StorageUrl + destination.StorageUrl = genruntime.ClonePointerToString(properties.StorageUrl) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Maintenance window of a server. +type MaintenanceWindow struct { + // CustomWindow: indicates whether custom window is enabled or disabled + CustomWindow *string `json:"customWindow,omitempty"` + + // DayOfWeek: day of week for maintenance window + DayOfWeek *int `json:"dayOfWeek,omitempty"` + + // StartHour: start hour for maintenance window + StartHour *int `json:"startHour,omitempty"` + + // StartMinute: start minute for maintenance window + StartMinute *int `json:"startMinute,omitempty"` +} + +var _ genruntime.ARMTransformer = &MaintenanceWindow{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (window *MaintenanceWindow) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if window == nil { + return nil, nil + } + result := &arm.MaintenanceWindow{} + + // Set property "CustomWindow": + if window.CustomWindow != nil { + customWindow := *window.CustomWindow + result.CustomWindow = &customWindow + } + + // Set property "DayOfWeek": + if window.DayOfWeek != nil { + dayOfWeek := *window.DayOfWeek + result.DayOfWeek = &dayOfWeek + } + + // Set property "StartHour": + if window.StartHour != nil { + startHour := *window.StartHour + result.StartHour = &startHour + } + + // Set property "StartMinute": + if window.StartMinute != nil { + startMinute := *window.StartMinute + result.StartMinute = &startMinute + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (window *MaintenanceWindow) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.MaintenanceWindow{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (window *MaintenanceWindow) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.MaintenanceWindow) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.MaintenanceWindow, got %T", armInput) + } + + // Set property "CustomWindow": + if typedInput.CustomWindow != nil { + customWindow := *typedInput.CustomWindow + window.CustomWindow = &customWindow + } + + // Set property "DayOfWeek": + if typedInput.DayOfWeek != nil { + dayOfWeek := *typedInput.DayOfWeek + window.DayOfWeek = &dayOfWeek + } + + // Set property "StartHour": + if typedInput.StartHour != nil { + startHour := *typedInput.StartHour + window.StartHour = &startHour + } + + // Set property "StartMinute": + if typedInput.StartMinute != nil { + startMinute := *typedInput.StartMinute + window.StartMinute = &startMinute + } + + // No error + return nil +} + +// AssignProperties_From_MaintenanceWindow populates our MaintenanceWindow from the provided source MaintenanceWindow +func (window *MaintenanceWindow) AssignProperties_From_MaintenanceWindow(source *storage.MaintenanceWindow) error { + + // CustomWindow + window.CustomWindow = genruntime.ClonePointerToString(source.CustomWindow) + + // DayOfWeek + window.DayOfWeek = genruntime.ClonePointerToInt(source.DayOfWeek) + + // StartHour + window.StartHour = genruntime.ClonePointerToInt(source.StartHour) + + // StartMinute + window.StartMinute = genruntime.ClonePointerToInt(source.StartMinute) + + // No error + return nil +} + +// AssignProperties_To_MaintenanceWindow populates the provided destination MaintenanceWindow from our MaintenanceWindow +func (window *MaintenanceWindow) AssignProperties_To_MaintenanceWindow(destination *storage.MaintenanceWindow) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // CustomWindow + destination.CustomWindow = genruntime.ClonePointerToString(window.CustomWindow) + + // DayOfWeek + destination.DayOfWeek = genruntime.ClonePointerToInt(window.DayOfWeek) + + // StartHour + destination.StartHour = genruntime.ClonePointerToInt(window.StartHour) + + // StartMinute + destination.StartMinute = genruntime.ClonePointerToInt(window.StartMinute) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_MaintenanceWindow_STATUS populates our MaintenanceWindow from the provided source MaintenanceWindow_STATUS +func (window *MaintenanceWindow) Initialize_From_MaintenanceWindow_STATUS(source *MaintenanceWindow_STATUS) error { + + // CustomWindow + window.CustomWindow = genruntime.ClonePointerToString(source.CustomWindow) + + // DayOfWeek + window.DayOfWeek = genruntime.ClonePointerToInt(source.DayOfWeek) + + // StartHour + window.StartHour = genruntime.ClonePointerToInt(source.StartHour) + + // StartMinute + window.StartMinute = genruntime.ClonePointerToInt(source.StartMinute) + + // No error + return nil +} + +// Maintenance window of a server. +type MaintenanceWindow_STATUS struct { + // CustomWindow: indicates whether custom window is enabled or disabled + CustomWindow *string `json:"customWindow,omitempty"` + + // DayOfWeek: day of week for maintenance window + DayOfWeek *int `json:"dayOfWeek,omitempty"` + + // StartHour: start hour for maintenance window + StartHour *int `json:"startHour,omitempty"` + + // StartMinute: start minute for maintenance window + StartMinute *int `json:"startMinute,omitempty"` +} + +var _ genruntime.FromARMConverter = &MaintenanceWindow_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (window *MaintenanceWindow_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.MaintenanceWindow_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (window *MaintenanceWindow_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.MaintenanceWindow_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.MaintenanceWindow_STATUS, got %T", armInput) + } + + // Set property "CustomWindow": + if typedInput.CustomWindow != nil { + customWindow := *typedInput.CustomWindow + window.CustomWindow = &customWindow + } + + // Set property "DayOfWeek": + if typedInput.DayOfWeek != nil { + dayOfWeek := *typedInput.DayOfWeek + window.DayOfWeek = &dayOfWeek + } + + // Set property "StartHour": + if typedInput.StartHour != nil { + startHour := *typedInput.StartHour + window.StartHour = &startHour + } + + // Set property "StartMinute": + if typedInput.StartMinute != nil { + startMinute := *typedInput.StartMinute + window.StartMinute = &startMinute + } + + // No error + return nil +} + +// AssignProperties_From_MaintenanceWindow_STATUS populates our MaintenanceWindow_STATUS from the provided source MaintenanceWindow_STATUS +func (window *MaintenanceWindow_STATUS) AssignProperties_From_MaintenanceWindow_STATUS(source *storage.MaintenanceWindow_STATUS) error { + + // CustomWindow + window.CustomWindow = genruntime.ClonePointerToString(source.CustomWindow) + + // DayOfWeek + window.DayOfWeek = genruntime.ClonePointerToInt(source.DayOfWeek) + + // StartHour + window.StartHour = genruntime.ClonePointerToInt(source.StartHour) + + // StartMinute + window.StartMinute = genruntime.ClonePointerToInt(source.StartMinute) + + // No error + return nil +} + +// AssignProperties_To_MaintenanceWindow_STATUS populates the provided destination MaintenanceWindow_STATUS from our MaintenanceWindow_STATUS +func (window *MaintenanceWindow_STATUS) AssignProperties_To_MaintenanceWindow_STATUS(destination *storage.MaintenanceWindow_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // CustomWindow + destination.CustomWindow = genruntime.ClonePointerToString(window.CustomWindow) + + // DayOfWeek + destination.DayOfWeek = genruntime.ClonePointerToInt(window.DayOfWeek) + + // StartHour + destination.StartHour = genruntime.ClonePointerToInt(window.StartHour) + + // StartMinute + destination.StartMinute = genruntime.ClonePointerToInt(window.StartMinute) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Properties to configure Identity for Bring your Own Keys +type MySQLServerIdentity struct { + // Type: Type of managed service identity. + Type *MySQLServerIdentity_Type `json:"type,omitempty"` + + // UserAssignedIdentities: Metadata of user assigned identity. + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.ARMTransformer = &MySQLServerIdentity{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (identity *MySQLServerIdentity) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if identity == nil { + return nil, nil + } + result := &arm.MySQLServerIdentity{} + + // Set property "Type": + if identity.Type != nil { + var temp string + temp = string(*identity.Type) + typeVar := arm.MySQLServerIdentity_Type(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 *MySQLServerIdentity) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.MySQLServerIdentity{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *MySQLServerIdentity) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.MySQLServerIdentity) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.MySQLServerIdentity, got %T", armInput) + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := MySQLServerIdentity_Type(temp) + identity.Type = &typeVar + } + + // no assignment for property "UserAssignedIdentities" + + // No error + return nil +} + +// AssignProperties_From_MySQLServerIdentity populates our MySQLServerIdentity from the provided source MySQLServerIdentity +func (identity *MySQLServerIdentity) AssignProperties_From_MySQLServerIdentity(source *storage.MySQLServerIdentity) error { + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, mySQLServerIdentity_Type_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_MySQLServerIdentity populates the provided destination MySQLServerIdentity from our MySQLServerIdentity +func (identity *MySQLServerIdentity) AssignProperties_To_MySQLServerIdentity(destination *storage.MySQLServerIdentity) 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_MySQLServerIdentity_STATUS populates our MySQLServerIdentity from the provided source MySQLServerIdentity_STATUS +func (identity *MySQLServerIdentity) Initialize_From_MySQLServerIdentity_STATUS(source *MySQLServerIdentity_STATUS) error { + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), mySQLServerIdentity_Type_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 +} + +// Properties to configure Identity for Bring your Own Keys +type MySQLServerIdentity_STATUS struct { + // PrincipalId: ObjectId from the KeyVault + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: TenantId from the KeyVault + TenantId *string `json:"tenantId,omitempty"` + + // Type: Type of managed service identity. + Type *MySQLServerIdentity_Type_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: Metadata of user assigned identity. + UserAssignedIdentities map[string]v1.JSON `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.FromARMConverter = &MySQLServerIdentity_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (identity *MySQLServerIdentity_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.MySQLServerIdentity_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *MySQLServerIdentity_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.MySQLServerIdentity_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.MySQLServerIdentity_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 := MySQLServerIdentity_Type_STATUS(temp) + identity.Type = &typeVar + } + + // Set property "UserAssignedIdentities": + if typedInput.UserAssignedIdentities != nil { + identity.UserAssignedIdentities = make(map[string]v1.JSON, len(typedInput.UserAssignedIdentities)) + for key, value := range typedInput.UserAssignedIdentities { + identity.UserAssignedIdentities[key] = *value.DeepCopy() + } + } + + // No error + return nil +} + +// AssignProperties_From_MySQLServerIdentity_STATUS populates our MySQLServerIdentity_STATUS from the provided source MySQLServerIdentity_STATUS +func (identity *MySQLServerIdentity_STATUS) AssignProperties_From_MySQLServerIdentity_STATUS(source *storage.MySQLServerIdentity_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, mySQLServerIdentity_Type_STATUS_Values) + identity.Type = &typeTemp + } else { + identity.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]v1.JSON, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + userAssignedIdentityMap[userAssignedIdentityKey] = *userAssignedIdentityValue.DeepCopy() + } + identity.UserAssignedIdentities = userAssignedIdentityMap + } else { + identity.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerIdentity_STATUS populates the provided destination MySQLServerIdentity_STATUS from our MySQLServerIdentity_STATUS +func (identity *MySQLServerIdentity_STATUS) AssignProperties_To_MySQLServerIdentity_STATUS(destination *storage.MySQLServerIdentity_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]v1.JSON, len(identity.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range identity.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + userAssignedIdentityMap[userAssignedIdentityKey] = *userAssignedIdentityValue.DeepCopy() + } + 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 +} + +// Billing information related properties of a server. +type MySQLServerSku struct { + // +kubebuilder:validation:Required + // Name: The name of the sku, e.g. Standard_D32s_v3. + Name *string `json:"name,omitempty"` + + // +kubebuilder:validation:Required + // Tier: The tier of the particular SKU, e.g. GeneralPurpose. + Tier *MySQLServerSku_Tier `json:"tier,omitempty"` +} + +var _ genruntime.ARMTransformer = &MySQLServerSku{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (serverSku *MySQLServerSku) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if serverSku == nil { + return nil, nil + } + result := &arm.MySQLServerSku{} + + // Set property "Name": + if serverSku.Name != nil { + name := *serverSku.Name + result.Name = &name + } + + // Set property "Tier": + if serverSku.Tier != nil { + var temp string + temp = string(*serverSku.Tier) + tier := arm.MySQLServerSku_Tier(temp) + result.Tier = &tier + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (serverSku *MySQLServerSku) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.MySQLServerSku{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (serverSku *MySQLServerSku) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.MySQLServerSku) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.MySQLServerSku, got %T", armInput) + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + serverSku.Name = &name + } + + // Set property "Tier": + if typedInput.Tier != nil { + var temp string + temp = string(*typedInput.Tier) + tier := MySQLServerSku_Tier(temp) + serverSku.Tier = &tier + } + + // No error + return nil +} + +// AssignProperties_From_MySQLServerSku populates our MySQLServerSku from the provided source MySQLServerSku +func (serverSku *MySQLServerSku) AssignProperties_From_MySQLServerSku(source *storage.MySQLServerSku) error { + + // Name + serverSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + if source.Tier != nil { + tier := *source.Tier + tierTemp := genruntime.ToEnum(tier, mySQLServerSku_Tier_Values) + serverSku.Tier = &tierTemp + } else { + serverSku.Tier = nil + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerSku populates the provided destination MySQLServerSku from our MySQLServerSku +func (serverSku *MySQLServerSku) AssignProperties_To_MySQLServerSku(destination *storage.MySQLServerSku) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Name + destination.Name = genruntime.ClonePointerToString(serverSku.Name) + + // Tier + if serverSku.Tier != nil { + tier := string(*serverSku.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_MySQLServerSku_STATUS populates our MySQLServerSku from the provided source MySQLServerSku_STATUS +func (serverSku *MySQLServerSku) Initialize_From_MySQLServerSku_STATUS(source *MySQLServerSku_STATUS) error { + + // Name + serverSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + if source.Tier != nil { + tier := genruntime.ToEnum(string(*source.Tier), mySQLServerSku_Tier_Values) + serverSku.Tier = &tier + } else { + serverSku.Tier = nil + } + + // No error + return nil +} + +// Billing information related properties of a server. +type MySQLServerSku_STATUS struct { + // Name: The name of the sku, e.g. Standard_D32s_v3. + Name *string `json:"name,omitempty"` + + // Tier: The tier of the particular SKU, e.g. GeneralPurpose. + Tier *MySQLServerSku_Tier_STATUS `json:"tier,omitempty"` +} + +var _ genruntime.FromARMConverter = &MySQLServerSku_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (serverSku *MySQLServerSku_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.MySQLServerSku_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (serverSku *MySQLServerSku_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.MySQLServerSku_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.MySQLServerSku_STATUS, got %T", armInput) + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + serverSku.Name = &name + } + + // Set property "Tier": + if typedInput.Tier != nil { + var temp string + temp = string(*typedInput.Tier) + tier := MySQLServerSku_Tier_STATUS(temp) + serverSku.Tier = &tier + } + + // No error + return nil +} + +// AssignProperties_From_MySQLServerSku_STATUS populates our MySQLServerSku_STATUS from the provided source MySQLServerSku_STATUS +func (serverSku *MySQLServerSku_STATUS) AssignProperties_From_MySQLServerSku_STATUS(source *storage.MySQLServerSku_STATUS) error { + + // Name + serverSku.Name = genruntime.ClonePointerToString(source.Name) + + // Tier + if source.Tier != nil { + tier := *source.Tier + tierTemp := genruntime.ToEnum(tier, mySQLServerSku_Tier_STATUS_Values) + serverSku.Tier = &tierTemp + } else { + serverSku.Tier = nil + } + + // No error + return nil +} + +// AssignProperties_To_MySQLServerSku_STATUS populates the provided destination MySQLServerSku_STATUS from our MySQLServerSku_STATUS +func (serverSku *MySQLServerSku_STATUS) AssignProperties_To_MySQLServerSku_STATUS(destination *storage.MySQLServerSku_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Name + destination.Name = genruntime.ClonePointerToString(serverSku.Name) + + // Tier + if serverSku.Tier != nil { + tier := string(*serverSku.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 +} + +// Network related properties of a server +type Network struct { + // DelegatedSubnetResourceReference: Delegated subnet resource id used to setup vnet for a server. + DelegatedSubnetResourceReference *genruntime.ResourceReference `armReference:"DelegatedSubnetResourceId" json:"delegatedSubnetResourceReference,omitempty"` + + // PrivateDnsZoneResourceReference: Private DNS zone resource id. + PrivateDnsZoneResourceReference *genruntime.ResourceReference `armReference:"PrivateDnsZoneResourceId" json:"privateDnsZoneResourceReference,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for this server. Value is 'Disabled' when server + // has VNet integration. + PublicNetworkAccess *EnableStatusEnum `json:"publicNetworkAccess,omitempty"` +} + +var _ genruntime.ARMTransformer = &Network{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (network *Network) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if network == nil { + return nil, nil + } + result := &arm.Network{} + + // Set property "DelegatedSubnetResourceId": + if network.DelegatedSubnetResourceReference != nil { + delegatedSubnetResourceReferenceARMID, err := resolved.ResolvedReferences.Lookup(*network.DelegatedSubnetResourceReference) + if err != nil { + return nil, err + } + delegatedSubnetResourceReference := delegatedSubnetResourceReferenceARMID + result.DelegatedSubnetResourceId = &delegatedSubnetResourceReference + } + + // Set property "PrivateDnsZoneResourceId": + if network.PrivateDnsZoneResourceReference != nil { + privateDnsZoneResourceReferenceARMID, err := resolved.ResolvedReferences.Lookup(*network.PrivateDnsZoneResourceReference) + if err != nil { + return nil, err + } + privateDnsZoneResourceReference := privateDnsZoneResourceReferenceARMID + result.PrivateDnsZoneResourceId = &privateDnsZoneResourceReference + } + + // Set property "PublicNetworkAccess": + if network.PublicNetworkAccess != nil { + var temp string + temp = string(*network.PublicNetworkAccess) + publicNetworkAccess := arm.EnableStatusEnum(temp) + result.PublicNetworkAccess = &publicNetworkAccess + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (network *Network) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Network{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (network *Network) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Network) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Network, got %T", armInput) + } + + // no assignment for property "DelegatedSubnetResourceReference" + + // no assignment for property "PrivateDnsZoneResourceReference" + + // Set property "PublicNetworkAccess": + if typedInput.PublicNetworkAccess != nil { + var temp string + temp = string(*typedInput.PublicNetworkAccess) + publicNetworkAccess := EnableStatusEnum(temp) + network.PublicNetworkAccess = &publicNetworkAccess + } + + // No error + return nil +} + +// AssignProperties_From_Network populates our Network from the provided source Network +func (network *Network) AssignProperties_From_Network(source *storage.Network) error { + + // DelegatedSubnetResourceReference + if source.DelegatedSubnetResourceReference != nil { + delegatedSubnetResourceReference := source.DelegatedSubnetResourceReference.Copy() + network.DelegatedSubnetResourceReference = &delegatedSubnetResourceReference + } else { + network.DelegatedSubnetResourceReference = nil + } + + // PrivateDnsZoneResourceReference + if source.PrivateDnsZoneResourceReference != nil { + privateDnsZoneResourceReference := source.PrivateDnsZoneResourceReference.Copy() + network.PrivateDnsZoneResourceReference = &privateDnsZoneResourceReference + } else { + network.PrivateDnsZoneResourceReference = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := *source.PublicNetworkAccess + publicNetworkAccessTemp := genruntime.ToEnum(publicNetworkAccess, enableStatusEnum_Values) + network.PublicNetworkAccess = &publicNetworkAccessTemp + } else { + network.PublicNetworkAccess = nil + } + + // No error + return nil +} + +// AssignProperties_To_Network populates the provided destination Network from our Network +func (network *Network) AssignProperties_To_Network(destination *storage.Network) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DelegatedSubnetResourceReference + if network.DelegatedSubnetResourceReference != nil { + delegatedSubnetResourceReference := network.DelegatedSubnetResourceReference.Copy() + destination.DelegatedSubnetResourceReference = &delegatedSubnetResourceReference + } else { + destination.DelegatedSubnetResourceReference = nil + } + + // PrivateDnsZoneResourceReference + if network.PrivateDnsZoneResourceReference != nil { + privateDnsZoneResourceReference := network.PrivateDnsZoneResourceReference.Copy() + destination.PrivateDnsZoneResourceReference = &privateDnsZoneResourceReference + } else { + destination.PrivateDnsZoneResourceReference = nil + } + + // PublicNetworkAccess + if network.PublicNetworkAccess != nil { + publicNetworkAccess := string(*network.PublicNetworkAccess) + destination.PublicNetworkAccess = &publicNetworkAccess + } else { + destination.PublicNetworkAccess = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Network_STATUS populates our Network from the provided source Network_STATUS +func (network *Network) Initialize_From_Network_STATUS(source *Network_STATUS) error { + + // DelegatedSubnetResourceReference + if source.DelegatedSubnetResourceId != nil { + delegatedSubnetResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.DelegatedSubnetResourceId) + network.DelegatedSubnetResourceReference = &delegatedSubnetResourceReference + } else { + network.DelegatedSubnetResourceReference = nil + } + + // PrivateDnsZoneResourceReference + if source.PrivateDnsZoneResourceId != nil { + privateDnsZoneResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.PrivateDnsZoneResourceId) + network.PrivateDnsZoneResourceReference = &privateDnsZoneResourceReference + } else { + network.PrivateDnsZoneResourceReference = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := genruntime.ToEnum(string(*source.PublicNetworkAccess), enableStatusEnum_Values) + network.PublicNetworkAccess = &publicNetworkAccess + } else { + network.PublicNetworkAccess = nil + } + + // No error + return nil +} + +// Network related properties of a server +type Network_STATUS struct { + // DelegatedSubnetResourceId: Delegated subnet resource id used to setup vnet for a server. + DelegatedSubnetResourceId *string `json:"delegatedSubnetResourceId,omitempty"` + + // PrivateDnsZoneResourceId: Private DNS zone resource id. + PrivateDnsZoneResourceId *string `json:"privateDnsZoneResourceId,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for this server. Value is 'Disabled' when server + // has VNet integration. + PublicNetworkAccess *EnableStatusEnum_STATUS `json:"publicNetworkAccess,omitempty"` +} + +var _ genruntime.FromARMConverter = &Network_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (network *Network_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Network_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (network *Network_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Network_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Network_STATUS, got %T", armInput) + } + + // Set property "DelegatedSubnetResourceId": + if typedInput.DelegatedSubnetResourceId != nil { + delegatedSubnetResourceId := *typedInput.DelegatedSubnetResourceId + network.DelegatedSubnetResourceId = &delegatedSubnetResourceId + } + + // Set property "PrivateDnsZoneResourceId": + if typedInput.PrivateDnsZoneResourceId != nil { + privateDnsZoneResourceId := *typedInput.PrivateDnsZoneResourceId + network.PrivateDnsZoneResourceId = &privateDnsZoneResourceId + } + + // Set property "PublicNetworkAccess": + if typedInput.PublicNetworkAccess != nil { + var temp string + temp = string(*typedInput.PublicNetworkAccess) + publicNetworkAccess := EnableStatusEnum_STATUS(temp) + network.PublicNetworkAccess = &publicNetworkAccess + } + + // No error + return nil +} + +// AssignProperties_From_Network_STATUS populates our Network_STATUS from the provided source Network_STATUS +func (network *Network_STATUS) AssignProperties_From_Network_STATUS(source *storage.Network_STATUS) error { + + // DelegatedSubnetResourceId + network.DelegatedSubnetResourceId = genruntime.ClonePointerToString(source.DelegatedSubnetResourceId) + + // PrivateDnsZoneResourceId + network.PrivateDnsZoneResourceId = genruntime.ClonePointerToString(source.PrivateDnsZoneResourceId) + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := *source.PublicNetworkAccess + publicNetworkAccessTemp := genruntime.ToEnum(publicNetworkAccess, enableStatusEnum_STATUS_Values) + network.PublicNetworkAccess = &publicNetworkAccessTemp + } else { + network.PublicNetworkAccess = nil + } + + // No error + return nil +} + +// AssignProperties_To_Network_STATUS populates the provided destination Network_STATUS from our Network_STATUS +func (network *Network_STATUS) AssignProperties_To_Network_STATUS(destination *storage.Network_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DelegatedSubnetResourceId + destination.DelegatedSubnetResourceId = genruntime.ClonePointerToString(network.DelegatedSubnetResourceId) + + // PrivateDnsZoneResourceId + destination.PrivateDnsZoneResourceId = genruntime.ClonePointerToString(network.PrivateDnsZoneResourceId) + + // PublicNetworkAccess + if network.PublicNetworkAccess != nil { + publicNetworkAccess := string(*network.PublicNetworkAccess) + destination.PublicNetworkAccess = &publicNetworkAccess + } else { + destination.PublicNetworkAccess = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The private endpoint connection resource. +type PrivateEndpointConnection_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"` +} + +var _ genruntime.FromARMConverter = &PrivateEndpointConnection_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (connection *PrivateEndpointConnection_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpointConnection_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (connection *PrivateEndpointConnection_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpointConnection_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpointConnection_STATUS, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + connection.Id = &id + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpointConnection_STATUS populates our PrivateEndpointConnection_STATUS from the provided source PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_From_PrivateEndpointConnection_STATUS(source *storage.PrivateEndpointConnection_STATUS) error { + + // Id + connection.Id = genruntime.ClonePointerToString(source.Id) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnection_STATUS populates the provided destination PrivateEndpointConnection_STATUS from our PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_To_PrivateEndpointConnection_STATUS(destination *storage.PrivateEndpointConnection_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(connection.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The replication role. +// +kubebuilder:validation:Enum={"None","Replica","Source"} +type ReplicationRole string + +const ( + ReplicationRole_None = ReplicationRole("None") + ReplicationRole_Replica = ReplicationRole("Replica") + ReplicationRole_Source = ReplicationRole("Source") +) + +// Mapping from string to ReplicationRole +var replicationRole_Values = map[string]ReplicationRole{ + "none": ReplicationRole_None, + "replica": ReplicationRole_Replica, + "source": ReplicationRole_Source, +} + +// The replication role. +type ReplicationRole_STATUS string + +const ( + ReplicationRole_STATUS_None = ReplicationRole_STATUS("None") + ReplicationRole_STATUS_Replica = ReplicationRole_STATUS("Replica") + ReplicationRole_STATUS_Source = ReplicationRole_STATUS("Source") +) + +// Mapping from string to ReplicationRole_STATUS +var replicationRole_STATUS_Values = map[string]ReplicationRole_STATUS{ + "none": ReplicationRole_STATUS_None, + "replica": ReplicationRole_STATUS_Replica, + "source": ReplicationRole_STATUS_Source, +} + +// +kubebuilder:validation:Enum={"Default","GeoRestore","PointInTimeRestore","Replica"} +type ServerProperties_CreateMode string + +const ( + ServerProperties_CreateMode_Default = ServerProperties_CreateMode("Default") + ServerProperties_CreateMode_GeoRestore = ServerProperties_CreateMode("GeoRestore") + ServerProperties_CreateMode_PointInTimeRestore = ServerProperties_CreateMode("PointInTimeRestore") + ServerProperties_CreateMode_Replica = ServerProperties_CreateMode("Replica") +) + +// Mapping from string to ServerProperties_CreateMode +var serverProperties_CreateMode_Values = map[string]ServerProperties_CreateMode{ + "default": ServerProperties_CreateMode_Default, + "georestore": ServerProperties_CreateMode_GeoRestore, + "pointintimerestore": ServerProperties_CreateMode_PointInTimeRestore, + "replica": ServerProperties_CreateMode_Replica, +} + +type ServerProperties_CreateMode_STATUS string + +const ( + ServerProperties_CreateMode_STATUS_Default = ServerProperties_CreateMode_STATUS("Default") + ServerProperties_CreateMode_STATUS_GeoRestore = ServerProperties_CreateMode_STATUS("GeoRestore") + ServerProperties_CreateMode_STATUS_PointInTimeRestore = ServerProperties_CreateMode_STATUS("PointInTimeRestore") + ServerProperties_CreateMode_STATUS_Replica = ServerProperties_CreateMode_STATUS("Replica") +) + +// Mapping from string to ServerProperties_CreateMode_STATUS +var serverProperties_CreateMode_STATUS_Values = map[string]ServerProperties_CreateMode_STATUS{ + "default": ServerProperties_CreateMode_STATUS_Default, + "georestore": ServerProperties_CreateMode_STATUS_GeoRestore, + "pointintimerestore": ServerProperties_CreateMode_STATUS_PointInTimeRestore, + "replica": ServerProperties_CreateMode_STATUS_Replica, +} + +type ServerProperties_State_STATUS string + +const ( + ServerProperties_State_STATUS_Disabled = ServerProperties_State_STATUS("Disabled") + ServerProperties_State_STATUS_Dropping = ServerProperties_State_STATUS("Dropping") + ServerProperties_State_STATUS_Ready = ServerProperties_State_STATUS("Ready") + ServerProperties_State_STATUS_Starting = ServerProperties_State_STATUS("Starting") + ServerProperties_State_STATUS_Stopped = ServerProperties_State_STATUS("Stopped") + ServerProperties_State_STATUS_Stopping = ServerProperties_State_STATUS("Stopping") + ServerProperties_State_STATUS_Updating = ServerProperties_State_STATUS("Updating") +) + +// Mapping from string to ServerProperties_State_STATUS +var serverProperties_State_STATUS_Values = map[string]ServerProperties_State_STATUS{ + "disabled": ServerProperties_State_STATUS_Disabled, + "dropping": ServerProperties_State_STATUS_Dropping, + "ready": ServerProperties_State_STATUS_Ready, + "starting": ServerProperties_State_STATUS_Starting, + "stopped": ServerProperties_State_STATUS_Stopped, + "stopping": ServerProperties_State_STATUS_Stopping, + "updating": ServerProperties_State_STATUS_Updating, +} + +// The version of a server. +// +kubebuilder:validation:Enum={"5.7","8.0.21"} +type ServerVersion string + +const ( + ServerVersion_57 = ServerVersion("5.7") + ServerVersion_8021 = ServerVersion("8.0.21") +) + +// Mapping from string to ServerVersion +var serverVersion_Values = map[string]ServerVersion{ + "5.7": ServerVersion_57, + "8.0.21": ServerVersion_8021, +} + +// The version of a server. +type ServerVersion_STATUS string + +const ( + ServerVersion_STATUS_57 = ServerVersion_STATUS("5.7") + ServerVersion_STATUS_8021 = ServerVersion_STATUS("8.0.21") +) + +// Mapping from string to ServerVersion_STATUS +var serverVersion_STATUS_Values = map[string]ServerVersion_STATUS{ + "5.7": ServerVersion_STATUS_57, + "8.0.21": ServerVersion_STATUS_8021, +} + +// Storage Profile properties of a server +type Storage struct { + // AutoGrow: Enable Storage Auto Grow or not. + AutoGrow *EnableStatusEnum `json:"autoGrow,omitempty"` + + // AutoIoScaling: Enable IO Auto Scaling or not. + AutoIoScaling *EnableStatusEnum `json:"autoIoScaling,omitempty"` + + // Iops: Storage IOPS for a server. + Iops *int `json:"iops,omitempty"` + + // LogOnDisk: Enable Log On Disk or not. + LogOnDisk *EnableStatusEnum `json:"logOnDisk,omitempty"` + + // StorageSizeGB: Max storage size allowed for a server. + StorageSizeGB *int `json:"storageSizeGB,omitempty"` +} + +var _ genruntime.ARMTransformer = &Storage{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (storage *Storage) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if storage == nil { + return nil, nil + } + result := &arm.Storage{} + + // Set property "AutoGrow": + if storage.AutoGrow != nil { + var temp string + temp = string(*storage.AutoGrow) + autoGrow := arm.EnableStatusEnum(temp) + result.AutoGrow = &autoGrow + } + + // Set property "AutoIoScaling": + if storage.AutoIoScaling != nil { + var temp string + temp = string(*storage.AutoIoScaling) + autoIoScaling := arm.EnableStatusEnum(temp) + result.AutoIoScaling = &autoIoScaling + } + + // Set property "Iops": + if storage.Iops != nil { + iops := *storage.Iops + result.Iops = &iops + } + + // Set property "LogOnDisk": + if storage.LogOnDisk != nil { + var temp string + temp = string(*storage.LogOnDisk) + logOnDisk := arm.EnableStatusEnum(temp) + result.LogOnDisk = &logOnDisk + } + + // Set property "StorageSizeGB": + if storage.StorageSizeGB != nil { + storageSizeGB := *storage.StorageSizeGB + result.StorageSizeGB = &storageSizeGB + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (storage *Storage) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Storage{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (storage *Storage) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Storage) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Storage, got %T", armInput) + } + + // Set property "AutoGrow": + if typedInput.AutoGrow != nil { + var temp string + temp = string(*typedInput.AutoGrow) + autoGrow := EnableStatusEnum(temp) + storage.AutoGrow = &autoGrow + } + + // Set property "AutoIoScaling": + if typedInput.AutoIoScaling != nil { + var temp string + temp = string(*typedInput.AutoIoScaling) + autoIoScaling := EnableStatusEnum(temp) + storage.AutoIoScaling = &autoIoScaling + } + + // Set property "Iops": + if typedInput.Iops != nil { + iops := *typedInput.Iops + storage.Iops = &iops + } + + // Set property "LogOnDisk": + if typedInput.LogOnDisk != nil { + var temp string + temp = string(*typedInput.LogOnDisk) + logOnDisk := EnableStatusEnum(temp) + storage.LogOnDisk = &logOnDisk + } + + // Set property "StorageSizeGB": + if typedInput.StorageSizeGB != nil { + storageSizeGB := *typedInput.StorageSizeGB + storage.StorageSizeGB = &storageSizeGB + } + + // No error + return nil +} + +// AssignProperties_From_Storage populates our Storage from the provided source Storage +func (storage *Storage) AssignProperties_From_Storage(source *storage.Storage) error { + + // AutoGrow + if source.AutoGrow != nil { + autoGrow := *source.AutoGrow + autoGrowTemp := genruntime.ToEnum(autoGrow, enableStatusEnum_Values) + storage.AutoGrow = &autoGrowTemp + } else { + storage.AutoGrow = nil + } + + // AutoIoScaling + if source.AutoIoScaling != nil { + autoIoScaling := *source.AutoIoScaling + autoIoScalingTemp := genruntime.ToEnum(autoIoScaling, enableStatusEnum_Values) + storage.AutoIoScaling = &autoIoScalingTemp + } else { + storage.AutoIoScaling = nil + } + + // Iops + storage.Iops = genruntime.ClonePointerToInt(source.Iops) + + // LogOnDisk + if source.LogOnDisk != nil { + logOnDisk := *source.LogOnDisk + logOnDiskTemp := genruntime.ToEnum(logOnDisk, enableStatusEnum_Values) + storage.LogOnDisk = &logOnDiskTemp + } else { + storage.LogOnDisk = nil + } + + // StorageSizeGB + storage.StorageSizeGB = genruntime.ClonePointerToInt(source.StorageSizeGB) + + // No error + return nil +} + +// AssignProperties_To_Storage populates the provided destination Storage from our Storage +func (storage *Storage) AssignProperties_To_Storage(destination *storage.Storage) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AutoGrow + if storage.AutoGrow != nil { + autoGrow := string(*storage.AutoGrow) + destination.AutoGrow = &autoGrow + } else { + destination.AutoGrow = nil + } + + // AutoIoScaling + if storage.AutoIoScaling != nil { + autoIoScaling := string(*storage.AutoIoScaling) + destination.AutoIoScaling = &autoIoScaling + } else { + destination.AutoIoScaling = nil + } + + // Iops + destination.Iops = genruntime.ClonePointerToInt(storage.Iops) + + // LogOnDisk + if storage.LogOnDisk != nil { + logOnDisk := string(*storage.LogOnDisk) + destination.LogOnDisk = &logOnDisk + } else { + destination.LogOnDisk = nil + } + + // StorageSizeGB + destination.StorageSizeGB = genruntime.ClonePointerToInt(storage.StorageSizeGB) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Storage_STATUS populates our Storage from the provided source Storage_STATUS +func (storage *Storage) Initialize_From_Storage_STATUS(source *Storage_STATUS) error { + + // AutoGrow + if source.AutoGrow != nil { + autoGrow := genruntime.ToEnum(string(*source.AutoGrow), enableStatusEnum_Values) + storage.AutoGrow = &autoGrow + } else { + storage.AutoGrow = nil + } + + // AutoIoScaling + if source.AutoIoScaling != nil { + autoIoScaling := genruntime.ToEnum(string(*source.AutoIoScaling), enableStatusEnum_Values) + storage.AutoIoScaling = &autoIoScaling + } else { + storage.AutoIoScaling = nil + } + + // Iops + storage.Iops = genruntime.ClonePointerToInt(source.Iops) + + // LogOnDisk + if source.LogOnDisk != nil { + logOnDisk := genruntime.ToEnum(string(*source.LogOnDisk), enableStatusEnum_Values) + storage.LogOnDisk = &logOnDisk + } else { + storage.LogOnDisk = nil + } + + // StorageSizeGB + storage.StorageSizeGB = genruntime.ClonePointerToInt(source.StorageSizeGB) + + // No error + return nil +} + +// Storage Profile properties of a server +type Storage_STATUS struct { + // AutoGrow: Enable Storage Auto Grow or not. + AutoGrow *EnableStatusEnum_STATUS `json:"autoGrow,omitempty"` + + // AutoIoScaling: Enable IO Auto Scaling or not. + AutoIoScaling *EnableStatusEnum_STATUS `json:"autoIoScaling,omitempty"` + + // Iops: Storage IOPS for a server. + Iops *int `json:"iops,omitempty"` + + // LogOnDisk: Enable Log On Disk or not. + LogOnDisk *EnableStatusEnum_STATUS `json:"logOnDisk,omitempty"` + + // StorageSizeGB: Max storage size allowed for a server. + StorageSizeGB *int `json:"storageSizeGB,omitempty"` + + // StorageSku: The sku name of the server storage. + StorageSku *string `json:"storageSku,omitempty"` +} + +var _ genruntime.FromARMConverter = &Storage_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (storage *Storage_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Storage_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (storage *Storage_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Storage_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Storage_STATUS, got %T", armInput) + } + + // Set property "AutoGrow": + if typedInput.AutoGrow != nil { + var temp string + temp = string(*typedInput.AutoGrow) + autoGrow := EnableStatusEnum_STATUS(temp) + storage.AutoGrow = &autoGrow + } + + // Set property "AutoIoScaling": + if typedInput.AutoIoScaling != nil { + var temp string + temp = string(*typedInput.AutoIoScaling) + autoIoScaling := EnableStatusEnum_STATUS(temp) + storage.AutoIoScaling = &autoIoScaling + } + + // Set property "Iops": + if typedInput.Iops != nil { + iops := *typedInput.Iops + storage.Iops = &iops + } + + // Set property "LogOnDisk": + if typedInput.LogOnDisk != nil { + var temp string + temp = string(*typedInput.LogOnDisk) + logOnDisk := EnableStatusEnum_STATUS(temp) + storage.LogOnDisk = &logOnDisk + } + + // Set property "StorageSizeGB": + if typedInput.StorageSizeGB != nil { + storageSizeGB := *typedInput.StorageSizeGB + storage.StorageSizeGB = &storageSizeGB + } + + // Set property "StorageSku": + if typedInput.StorageSku != nil { + storageSku := *typedInput.StorageSku + storage.StorageSku = &storageSku + } + + // No error + return nil +} + +// AssignProperties_From_Storage_STATUS populates our Storage_STATUS from the provided source Storage_STATUS +func (storage *Storage_STATUS) AssignProperties_From_Storage_STATUS(source *storage.Storage_STATUS) error { + + // AutoGrow + if source.AutoGrow != nil { + autoGrow := *source.AutoGrow + autoGrowTemp := genruntime.ToEnum(autoGrow, enableStatusEnum_STATUS_Values) + storage.AutoGrow = &autoGrowTemp + } else { + storage.AutoGrow = nil + } + + // AutoIoScaling + if source.AutoIoScaling != nil { + autoIoScaling := *source.AutoIoScaling + autoIoScalingTemp := genruntime.ToEnum(autoIoScaling, enableStatusEnum_STATUS_Values) + storage.AutoIoScaling = &autoIoScalingTemp + } else { + storage.AutoIoScaling = nil + } + + // Iops + storage.Iops = genruntime.ClonePointerToInt(source.Iops) + + // LogOnDisk + if source.LogOnDisk != nil { + logOnDisk := *source.LogOnDisk + logOnDiskTemp := genruntime.ToEnum(logOnDisk, enableStatusEnum_STATUS_Values) + storage.LogOnDisk = &logOnDiskTemp + } else { + storage.LogOnDisk = nil + } + + // StorageSizeGB + storage.StorageSizeGB = genruntime.ClonePointerToInt(source.StorageSizeGB) + + // StorageSku + storage.StorageSku = genruntime.ClonePointerToString(source.StorageSku) + + // No error + return nil +} + +// AssignProperties_To_Storage_STATUS populates the provided destination Storage_STATUS from our Storage_STATUS +func (storage *Storage_STATUS) AssignProperties_To_Storage_STATUS(destination *storage.Storage_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AutoGrow + if storage.AutoGrow != nil { + autoGrow := string(*storage.AutoGrow) + destination.AutoGrow = &autoGrow + } else { + destination.AutoGrow = nil + } + + // AutoIoScaling + if storage.AutoIoScaling != nil { + autoIoScaling := string(*storage.AutoIoScaling) + destination.AutoIoScaling = &autoIoScaling + } else { + destination.AutoIoScaling = nil + } + + // Iops + destination.Iops = genruntime.ClonePointerToInt(storage.Iops) + + // LogOnDisk + if storage.LogOnDisk != nil { + logOnDisk := string(*storage.LogOnDisk) + destination.LogOnDisk = &logOnDisk + } else { + destination.LogOnDisk = nil + } + + // StorageSizeGB + destination.StorageSizeGB = genruntime.ClonePointerToInt(storage.StorageSizeGB) + + // StorageSku + destination.StorageSku = genruntime.ClonePointerToString(storage.StorageSku) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// 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 +} + +// +kubebuilder:validation:Enum={"AzureKeyVault","SystemManaged"} +type DataEncryption_Type string + +const ( + DataEncryption_Type_AzureKeyVault = DataEncryption_Type("AzureKeyVault") + DataEncryption_Type_SystemManaged = DataEncryption_Type("SystemManaged") +) + +// Mapping from string to DataEncryption_Type +var dataEncryption_Type_Values = map[string]DataEncryption_Type{ + "azurekeyvault": DataEncryption_Type_AzureKeyVault, + "systemmanaged": DataEncryption_Type_SystemManaged, +} + +type DataEncryption_Type_STATUS string + +const ( + DataEncryption_Type_STATUS_AzureKeyVault = DataEncryption_Type_STATUS("AzureKeyVault") + DataEncryption_Type_STATUS_SystemManaged = DataEncryption_Type_STATUS("SystemManaged") +) + +// Mapping from string to DataEncryption_Type_STATUS +var dataEncryption_Type_STATUS_Values = map[string]DataEncryption_Type_STATUS{ + "azurekeyvault": DataEncryption_Type_STATUS_AzureKeyVault, + "systemmanaged": DataEncryption_Type_STATUS_SystemManaged, +} + +// Enum to indicate whether value is 'Enabled' or 'Disabled' +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type EnableStatusEnum string + +const ( + EnableStatusEnum_Disabled = EnableStatusEnum("Disabled") + EnableStatusEnum_Enabled = EnableStatusEnum("Enabled") +) + +// Mapping from string to EnableStatusEnum +var enableStatusEnum_Values = map[string]EnableStatusEnum{ + "disabled": EnableStatusEnum_Disabled, + "enabled": EnableStatusEnum_Enabled, +} + +// Enum to indicate whether value is 'Enabled' or 'Disabled' +type EnableStatusEnum_STATUS string + +const ( + EnableStatusEnum_STATUS_Disabled = EnableStatusEnum_STATUS("Disabled") + EnableStatusEnum_STATUS_Enabled = EnableStatusEnum_STATUS("Enabled") +) + +// Mapping from string to EnableStatusEnum_STATUS +var enableStatusEnum_STATUS_Values = map[string]EnableStatusEnum_STATUS{ + "disabled": EnableStatusEnum_STATUS_Disabled, + "enabled": EnableStatusEnum_STATUS_Enabled, +} + +type FlexibleServerOperatorConfigMaps struct { + // AdministratorLogin: indicates where the AdministratorLogin config map should be placed. If omitted, no config map will + // be created. + AdministratorLogin *genruntime.ConfigMapDestination `json:"administratorLogin,omitempty"` + + // FullyQualifiedDomainName: indicates where the FullyQualifiedDomainName config map should be placed. If omitted, no + // config map will be created. + FullyQualifiedDomainName *genruntime.ConfigMapDestination `json:"fullyQualifiedDomainName,omitempty"` +} + +// AssignProperties_From_FlexibleServerOperatorConfigMaps populates our FlexibleServerOperatorConfigMaps from the provided source FlexibleServerOperatorConfigMaps +func (maps *FlexibleServerOperatorConfigMaps) AssignProperties_From_FlexibleServerOperatorConfigMaps(source *storage.FlexibleServerOperatorConfigMaps) error { + + // AdministratorLogin + if source.AdministratorLogin != nil { + administratorLogin := source.AdministratorLogin.Copy() + maps.AdministratorLogin = &administratorLogin + } else { + maps.AdministratorLogin = nil + } + + // FullyQualifiedDomainName + if source.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := source.FullyQualifiedDomainName.Copy() + maps.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + maps.FullyQualifiedDomainName = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServerOperatorConfigMaps populates the provided destination FlexibleServerOperatorConfigMaps from our FlexibleServerOperatorConfigMaps +func (maps *FlexibleServerOperatorConfigMaps) AssignProperties_To_FlexibleServerOperatorConfigMaps(destination *storage.FlexibleServerOperatorConfigMaps) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdministratorLogin + if maps.AdministratorLogin != nil { + administratorLogin := maps.AdministratorLogin.Copy() + destination.AdministratorLogin = &administratorLogin + } else { + destination.AdministratorLogin = nil + } + + // FullyQualifiedDomainName + if maps.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := maps.FullyQualifiedDomainName.Copy() + destination.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + destination.FullyQualifiedDomainName = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type FlexibleServerOperatorSecrets struct { + // FullyQualifiedDomainName: indicates where the FullyQualifiedDomainName secret should be placed. If omitted, the secret + // will not be retrieved from Azure. + FullyQualifiedDomainName *genruntime.SecretDestination `json:"fullyQualifiedDomainName,omitempty"` +} + +// AssignProperties_From_FlexibleServerOperatorSecrets populates our FlexibleServerOperatorSecrets from the provided source FlexibleServerOperatorSecrets +func (secrets *FlexibleServerOperatorSecrets) AssignProperties_From_FlexibleServerOperatorSecrets(source *storage.FlexibleServerOperatorSecrets) error { + + // FullyQualifiedDomainName + if source.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := source.FullyQualifiedDomainName.Copy() + secrets.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + secrets.FullyQualifiedDomainName = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServerOperatorSecrets populates the provided destination FlexibleServerOperatorSecrets from our FlexibleServerOperatorSecrets +func (secrets *FlexibleServerOperatorSecrets) AssignProperties_To_FlexibleServerOperatorSecrets(destination *storage.FlexibleServerOperatorSecrets) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // FullyQualifiedDomainName + if secrets.FullyQualifiedDomainName != nil { + fullyQualifiedDomainName := secrets.FullyQualifiedDomainName.Copy() + destination.FullyQualifiedDomainName = &fullyQualifiedDomainName + } else { + destination.FullyQualifiedDomainName = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"Disabled","SameZone","ZoneRedundant"} +type HighAvailability_Mode string + +const ( + HighAvailability_Mode_Disabled = HighAvailability_Mode("Disabled") + HighAvailability_Mode_SameZone = HighAvailability_Mode("SameZone") + HighAvailability_Mode_ZoneRedundant = HighAvailability_Mode("ZoneRedundant") +) + +// Mapping from string to HighAvailability_Mode +var highAvailability_Mode_Values = map[string]HighAvailability_Mode{ + "disabled": HighAvailability_Mode_Disabled, + "samezone": HighAvailability_Mode_SameZone, + "zoneredundant": HighAvailability_Mode_ZoneRedundant, +} + +type HighAvailability_Mode_STATUS string + +const ( + HighAvailability_Mode_STATUS_Disabled = HighAvailability_Mode_STATUS("Disabled") + HighAvailability_Mode_STATUS_SameZone = HighAvailability_Mode_STATUS("SameZone") + HighAvailability_Mode_STATUS_ZoneRedundant = HighAvailability_Mode_STATUS("ZoneRedundant") +) + +// Mapping from string to HighAvailability_Mode_STATUS +var highAvailability_Mode_STATUS_Values = map[string]HighAvailability_Mode_STATUS{ + "disabled": HighAvailability_Mode_STATUS_Disabled, + "samezone": HighAvailability_Mode_STATUS_SameZone, + "zoneredundant": HighAvailability_Mode_STATUS_ZoneRedundant, +} + +type HighAvailability_State_STATUS string + +const ( + HighAvailability_State_STATUS_CreatingStandby = HighAvailability_State_STATUS("CreatingStandby") + HighAvailability_State_STATUS_FailingOver = HighAvailability_State_STATUS("FailingOver") + HighAvailability_State_STATUS_Healthy = HighAvailability_State_STATUS("Healthy") + HighAvailability_State_STATUS_NotEnabled = HighAvailability_State_STATUS("NotEnabled") + HighAvailability_State_STATUS_RemovingStandby = HighAvailability_State_STATUS("RemovingStandby") +) + +// Mapping from string to HighAvailability_State_STATUS +var highAvailability_State_STATUS_Values = map[string]HighAvailability_State_STATUS{ + "creatingstandby": HighAvailability_State_STATUS_CreatingStandby, + "failingover": HighAvailability_State_STATUS_FailingOver, + "healthy": HighAvailability_State_STATUS_Healthy, + "notenabled": HighAvailability_State_STATUS_NotEnabled, + "removingstandby": HighAvailability_State_STATUS_RemovingStandby, +} + +// +kubebuilder:validation:Enum={"AzureBlob"} +type ImportSourceProperties_StorageType string + +const ImportSourceProperties_StorageType_AzureBlob = ImportSourceProperties_StorageType("AzureBlob") + +// Mapping from string to ImportSourceProperties_StorageType +var importSourceProperties_StorageType_Values = map[string]ImportSourceProperties_StorageType{ + "azureblob": ImportSourceProperties_StorageType_AzureBlob, +} + +type ImportSourceProperties_StorageType_STATUS string + +const ImportSourceProperties_StorageType_STATUS_AzureBlob = ImportSourceProperties_StorageType_STATUS("AzureBlob") + +// Mapping from string to ImportSourceProperties_StorageType_STATUS +var importSourceProperties_StorageType_STATUS_Values = map[string]ImportSourceProperties_StorageType_STATUS{ + "azureblob": ImportSourceProperties_StorageType_STATUS_AzureBlob, +} + +// +kubebuilder:validation:Enum={"UserAssigned"} +type MySQLServerIdentity_Type string + +const MySQLServerIdentity_Type_UserAssigned = MySQLServerIdentity_Type("UserAssigned") + +// Mapping from string to MySQLServerIdentity_Type +var mySQLServerIdentity_Type_Values = map[string]MySQLServerIdentity_Type{ + "userassigned": MySQLServerIdentity_Type_UserAssigned, +} + +type MySQLServerIdentity_Type_STATUS string + +const MySQLServerIdentity_Type_STATUS_UserAssigned = MySQLServerIdentity_Type_STATUS("UserAssigned") + +// Mapping from string to MySQLServerIdentity_Type_STATUS +var mySQLServerIdentity_Type_STATUS_Values = map[string]MySQLServerIdentity_Type_STATUS{ + "userassigned": MySQLServerIdentity_Type_STATUS_UserAssigned, +} + +// +kubebuilder:validation:Enum={"Burstable","GeneralPurpose","MemoryOptimized"} +type MySQLServerSku_Tier string + +const ( + MySQLServerSku_Tier_Burstable = MySQLServerSku_Tier("Burstable") + MySQLServerSku_Tier_GeneralPurpose = MySQLServerSku_Tier("GeneralPurpose") + MySQLServerSku_Tier_MemoryOptimized = MySQLServerSku_Tier("MemoryOptimized") +) + +// Mapping from string to MySQLServerSku_Tier +var mySQLServerSku_Tier_Values = map[string]MySQLServerSku_Tier{ + "burstable": MySQLServerSku_Tier_Burstable, + "generalpurpose": MySQLServerSku_Tier_GeneralPurpose, + "memoryoptimized": MySQLServerSku_Tier_MemoryOptimized, +} + +type MySQLServerSku_Tier_STATUS string + +const ( + MySQLServerSku_Tier_STATUS_Burstable = MySQLServerSku_Tier_STATUS("Burstable") + MySQLServerSku_Tier_STATUS_GeneralPurpose = MySQLServerSku_Tier_STATUS("GeneralPurpose") + MySQLServerSku_Tier_STATUS_MemoryOptimized = MySQLServerSku_Tier_STATUS("MemoryOptimized") +) + +// Mapping from string to MySQLServerSku_Tier_STATUS +var mySQLServerSku_Tier_STATUS_Values = map[string]MySQLServerSku_Tier_STATUS{ + "burstable": MySQLServerSku_Tier_STATUS_Burstable, + "generalpurpose": MySQLServerSku_Tier_STATUS_GeneralPurpose, + "memoryoptimized": MySQLServerSku_Tier_STATUS_MemoryOptimized, +} + +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, +} + +// 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 +} + +func init() { + SchemeBuilder.Register(&FlexibleServer{}, &FlexibleServerList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_server_types_gen_test.go b/v2/api/dbformysql/v1api20231230/flexible_server_types_gen_test.go new file mode 100644 index 0000000000..54b60d48f9 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_server_types_gen_test.go @@ -0,0 +1,2974 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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_Backup_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Backup to Backup via AssignProperties_To_Backup & AssignProperties_From_Backup returns original", + prop.ForAll(RunPropertyAssignmentTestForBackup, BackupGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForBackup tests if a specific instance of Backup can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForBackup(subject Backup) 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.Backup + err := copied.AssignProperties_To_Backup(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Backup + err = actual.AssignProperties_From_Backup(&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_Backup_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 Backup via JSON returns original", + prop.ForAll(RunJSONSerializationTestForBackup, BackupGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForBackup runs a test to see if a specific instance of Backup round trips to JSON and back losslessly +func RunJSONSerializationTestForBackup(subject Backup) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Backup + 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 Backup instances for property testing - lazily instantiated by BackupGenerator() +var backupGenerator gopter.Gen + +// BackupGenerator returns a generator of Backup instances for property testing. +func BackupGenerator() gopter.Gen { + if backupGenerator != nil { + return backupGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForBackup(generators) + backupGenerator = gen.Struct(reflect.TypeOf(Backup{}), generators) + + return backupGenerator +} + +// AddIndependentPropertyGeneratorsForBackup is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForBackup(gens map[string]gopter.Gen) { + gens["BackupIntervalHours"] = gen.PtrOf(gen.Int()) + gens["BackupRetentionDays"] = gen.PtrOf(gen.Int()) + gens["GeoRedundantBackup"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) +} + +func Test_Backup_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Backup_STATUS to Backup_STATUS via AssignProperties_To_Backup_STATUS & AssignProperties_From_Backup_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForBackup_STATUS, Backup_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForBackup_STATUS tests if a specific instance of Backup_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForBackup_STATUS(subject Backup_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.Backup_STATUS + err := copied.AssignProperties_To_Backup_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Backup_STATUS + err = actual.AssignProperties_From_Backup_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_Backup_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 Backup_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForBackup_STATUS, Backup_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForBackup_STATUS runs a test to see if a specific instance of Backup_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForBackup_STATUS(subject Backup_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Backup_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 Backup_STATUS instances for property testing - lazily instantiated by Backup_STATUSGenerator() +var backup_STATUSGenerator gopter.Gen + +// Backup_STATUSGenerator returns a generator of Backup_STATUS instances for property testing. +func Backup_STATUSGenerator() gopter.Gen { + if backup_STATUSGenerator != nil { + return backup_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForBackup_STATUS(generators) + backup_STATUSGenerator = gen.Struct(reflect.TypeOf(Backup_STATUS{}), generators) + + return backup_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForBackup_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForBackup_STATUS(gens map[string]gopter.Gen) { + gens["BackupIntervalHours"] = gen.PtrOf(gen.Int()) + gens["BackupRetentionDays"] = gen.PtrOf(gen.Int()) + gens["EarliestRestoreDate"] = gen.PtrOf(gen.AlphaString()) + gens["GeoRedundantBackup"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) +} + +func Test_DataEncryption_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataEncryption to DataEncryption via AssignProperties_To_DataEncryption & AssignProperties_From_DataEncryption returns original", + prop.ForAll(RunPropertyAssignmentTestForDataEncryption, DataEncryptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataEncryption tests if a specific instance of DataEncryption can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForDataEncryption(subject DataEncryption) 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.DataEncryption + err := copied.AssignProperties_To_DataEncryption(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataEncryption + err = actual.AssignProperties_From_DataEncryption(&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_DataEncryption_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 DataEncryption via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataEncryption, DataEncryptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataEncryption runs a test to see if a specific instance of DataEncryption round trips to JSON and back losslessly +func RunJSONSerializationTestForDataEncryption(subject DataEncryption) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataEncryption + 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 DataEncryption instances for property testing - lazily instantiated by DataEncryptionGenerator() +var dataEncryptionGenerator gopter.Gen + +// DataEncryptionGenerator returns a generator of DataEncryption instances for property testing. +func DataEncryptionGenerator() gopter.Gen { + if dataEncryptionGenerator != nil { + return dataEncryptionGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataEncryption(generators) + dataEncryptionGenerator = gen.Struct(reflect.TypeOf(DataEncryption{}), generators) + + return dataEncryptionGenerator +} + +// AddIndependentPropertyGeneratorsForDataEncryption is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataEncryption(gens map[string]gopter.Gen) { + gens["GeoBackupKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(DataEncryption_Type_AzureKeyVault, DataEncryption_Type_SystemManaged)) +} + +func Test_DataEncryption_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataEncryption_STATUS to DataEncryption_STATUS via AssignProperties_To_DataEncryption_STATUS & AssignProperties_From_DataEncryption_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForDataEncryption_STATUS, DataEncryption_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataEncryption_STATUS tests if a specific instance of DataEncryption_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForDataEncryption_STATUS(subject DataEncryption_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.DataEncryption_STATUS + err := copied.AssignProperties_To_DataEncryption_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataEncryption_STATUS + err = actual.AssignProperties_From_DataEncryption_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_DataEncryption_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 DataEncryption_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataEncryption_STATUS, DataEncryption_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataEncryption_STATUS runs a test to see if a specific instance of DataEncryption_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDataEncryption_STATUS(subject DataEncryption_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataEncryption_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 DataEncryption_STATUS instances for property testing - lazily instantiated by +// DataEncryption_STATUSGenerator() +var dataEncryption_STATUSGenerator gopter.Gen + +// DataEncryption_STATUSGenerator returns a generator of DataEncryption_STATUS instances for property testing. +func DataEncryption_STATUSGenerator() gopter.Gen { + if dataEncryption_STATUSGenerator != nil { + return dataEncryption_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataEncryption_STATUS(generators) + dataEncryption_STATUSGenerator = gen.Struct(reflect.TypeOf(DataEncryption_STATUS{}), generators) + + return dataEncryption_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDataEncryption_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataEncryption_STATUS(gens map[string]gopter.Gen) { + gens["GeoBackupKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["GeoBackupUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(DataEncryption_Type_STATUS_AzureKeyVault, DataEncryption_Type_STATUS_SystemManaged)) +} + +func Test_FlexibleServer_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 FlexibleServer to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServer, FlexibleServerGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServer tests if a specific instance of FlexibleServer round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServer(subject FlexibleServer) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServer + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServer + 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_FlexibleServer_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServer to FlexibleServer via AssignProperties_To_FlexibleServer & AssignProperties_From_FlexibleServer returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServer, FlexibleServerGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServer tests if a specific instance of FlexibleServer can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServer(subject FlexibleServer) 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.FlexibleServer + err := copied.AssignProperties_To_FlexibleServer(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServer + err = actual.AssignProperties_From_FlexibleServer(&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_FlexibleServer_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 FlexibleServer via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer, FlexibleServerGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer runs a test to see if a specific instance of FlexibleServer round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer(subject FlexibleServer) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer + 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 FlexibleServer instances for property testing - lazily instantiated by FlexibleServerGenerator() +var flexibleServerGenerator gopter.Gen + +// FlexibleServerGenerator returns a generator of FlexibleServer instances for property testing. +func FlexibleServerGenerator() gopter.Gen { + if flexibleServerGenerator != nil { + return flexibleServerGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServer(generators) + flexibleServerGenerator = gen.Struct(reflect.TypeOf(FlexibleServer{}), generators) + + return flexibleServerGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServer is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServer_SpecGenerator() + gens["Status"] = FlexibleServer_STATUSGenerator() +} + +func Test_FlexibleServerOperatorConfigMaps_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServerOperatorConfigMaps to FlexibleServerOperatorConfigMaps via AssignProperties_To_FlexibleServerOperatorConfigMaps & AssignProperties_From_FlexibleServerOperatorConfigMaps returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps, FlexibleServerOperatorConfigMapsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps tests if a specific instance of FlexibleServerOperatorConfigMaps can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServerOperatorConfigMaps(subject FlexibleServerOperatorConfigMaps) 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.FlexibleServerOperatorConfigMaps + err := copied.AssignProperties_To_FlexibleServerOperatorConfigMaps(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServerOperatorConfigMaps + err = actual.AssignProperties_From_FlexibleServerOperatorConfigMaps(&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_FlexibleServerOperatorConfigMaps_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 FlexibleServerOperatorConfigMaps via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServerOperatorConfigMaps, FlexibleServerOperatorConfigMapsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServerOperatorConfigMaps runs a test to see if a specific instance of FlexibleServerOperatorConfigMaps round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServerOperatorConfigMaps(subject FlexibleServerOperatorConfigMaps) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServerOperatorConfigMaps + 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 FlexibleServerOperatorConfigMaps instances for property testing - lazily instantiated by +// FlexibleServerOperatorConfigMapsGenerator() +var flexibleServerOperatorConfigMapsGenerator gopter.Gen + +// FlexibleServerOperatorConfigMapsGenerator returns a generator of FlexibleServerOperatorConfigMaps instances for property testing. +func FlexibleServerOperatorConfigMapsGenerator() gopter.Gen { + if flexibleServerOperatorConfigMapsGenerator != nil { + return flexibleServerOperatorConfigMapsGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServerOperatorConfigMapsGenerator = gen.Struct(reflect.TypeOf(FlexibleServerOperatorConfigMaps{}), generators) + + return flexibleServerOperatorConfigMapsGenerator +} + +func Test_FlexibleServerOperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServerOperatorSecrets to FlexibleServerOperatorSecrets via AssignProperties_To_FlexibleServerOperatorSecrets & AssignProperties_From_FlexibleServerOperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServerOperatorSecrets, FlexibleServerOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServerOperatorSecrets tests if a specific instance of FlexibleServerOperatorSecrets can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServerOperatorSecrets(subject FlexibleServerOperatorSecrets) 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.FlexibleServerOperatorSecrets + err := copied.AssignProperties_To_FlexibleServerOperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServerOperatorSecrets + err = actual.AssignProperties_From_FlexibleServerOperatorSecrets(&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_FlexibleServerOperatorSecrets_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 FlexibleServerOperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServerOperatorSecrets, FlexibleServerOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServerOperatorSecrets runs a test to see if a specific instance of FlexibleServerOperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServerOperatorSecrets(subject FlexibleServerOperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServerOperatorSecrets + 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 FlexibleServerOperatorSecrets instances for property testing - lazily instantiated by +// FlexibleServerOperatorSecretsGenerator() +var flexibleServerOperatorSecretsGenerator gopter.Gen + +// FlexibleServerOperatorSecretsGenerator returns a generator of FlexibleServerOperatorSecrets instances for property testing. +func FlexibleServerOperatorSecretsGenerator() gopter.Gen { + if flexibleServerOperatorSecretsGenerator != nil { + return flexibleServerOperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServerOperatorSecretsGenerator = gen.Struct(reflect.TypeOf(FlexibleServerOperatorSecrets{}), generators) + + return flexibleServerOperatorSecretsGenerator +} + +func Test_FlexibleServerOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServerOperatorSpec to FlexibleServerOperatorSpec via AssignProperties_To_FlexibleServerOperatorSpec & AssignProperties_From_FlexibleServerOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServerOperatorSpec, FlexibleServerOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServerOperatorSpec tests if a specific instance of FlexibleServerOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServerOperatorSpec(subject FlexibleServerOperatorSpec) 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.FlexibleServerOperatorSpec + err := copied.AssignProperties_To_FlexibleServerOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServerOperatorSpec + err = actual.AssignProperties_From_FlexibleServerOperatorSpec(&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_FlexibleServerOperatorSpec_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 FlexibleServerOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServerOperatorSpec, FlexibleServerOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServerOperatorSpec runs a test to see if a specific instance of FlexibleServerOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServerOperatorSpec(subject FlexibleServerOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServerOperatorSpec + 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 FlexibleServerOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServerOperatorSpecGenerator() +var flexibleServerOperatorSpecGenerator gopter.Gen + +// FlexibleServerOperatorSpecGenerator returns a generator of FlexibleServerOperatorSpec instances for property testing. +func FlexibleServerOperatorSpecGenerator() gopter.Gen { + if flexibleServerOperatorSpecGenerator != nil { + return flexibleServerOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec(generators) + flexibleServerOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServerOperatorSpec{}), generators) + + return flexibleServerOperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec(gens map[string]gopter.Gen) { + gens["ConfigMaps"] = gen.PtrOf(FlexibleServerOperatorConfigMapsGenerator()) + gens["Secrets"] = gen.PtrOf(FlexibleServerOperatorSecretsGenerator()) +} + +func Test_FlexibleServer_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServer_STATUS to FlexibleServer_STATUS via AssignProperties_To_FlexibleServer_STATUS & AssignProperties_From_FlexibleServer_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServer_STATUS, FlexibleServer_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServer_STATUS tests if a specific instance of FlexibleServer_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServer_STATUS(subject FlexibleServer_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.FlexibleServer_STATUS + err := copied.AssignProperties_To_FlexibleServer_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServer_STATUS + err = actual.AssignProperties_From_FlexibleServer_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_FlexibleServer_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 FlexibleServer_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer_STATUS, FlexibleServer_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer_STATUS runs a test to see if a specific instance of FlexibleServer_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer_STATUS(subject FlexibleServer_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer_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 FlexibleServer_STATUS instances for property testing - lazily instantiated by +// FlexibleServer_STATUSGenerator() +var flexibleServer_STATUSGenerator gopter.Gen + +// FlexibleServer_STATUSGenerator returns a generator of FlexibleServer_STATUS instances for property testing. +// We first initialize flexibleServer_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 FlexibleServer_STATUSGenerator() gopter.Gen { + if flexibleServer_STATUSGenerator != nil { + return flexibleServer_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(generators) + flexibleServer_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(generators) + flexibleServer_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_STATUS{}), generators) + + return flexibleServer_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServer_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(gens map[string]gopter.Gen) { + gens["AdministratorLogin"] = gen.PtrOf(gen.AlphaString()) + gens["AvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf( + ServerProperties_CreateMode_STATUS_Default, + ServerProperties_CreateMode_STATUS_GeoRestore, + ServerProperties_CreateMode_STATUS_PointInTimeRestore, + ServerProperties_CreateMode_STATUS_Replica)) + gens["FullyQualifiedDomainName"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ReplicaCapacity"] = gen.PtrOf(gen.Int()) + gens["ReplicationRole"] = gen.PtrOf(gen.OneConstOf(ReplicationRole_STATUS_None, ReplicationRole_STATUS_Replica, ReplicationRole_STATUS_Source)) + gens["RestorePointInTime"] = gen.PtrOf(gen.AlphaString()) + gens["SourceServerResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["State"] = gen.PtrOf(gen.OneConstOf( + ServerProperties_State_STATUS_Disabled, + ServerProperties_State_STATUS_Dropping, + ServerProperties_State_STATUS_Ready, + ServerProperties_State_STATUS_Starting, + ServerProperties_State_STATUS_Stopped, + ServerProperties_State_STATUS_Stopping, + ServerProperties_State_STATUS_Updating)) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.OneConstOf(ServerVersion_STATUS_57, ServerVersion_STATUS_8021)) +} + +// AddRelatedPropertyGeneratorsForFlexibleServer_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(gens map[string]gopter.Gen) { + gens["Backup"] = gen.PtrOf(Backup_STATUSGenerator()) + gens["DataEncryption"] = gen.PtrOf(DataEncryption_STATUSGenerator()) + gens["HighAvailability"] = gen.PtrOf(HighAvailability_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(MySQLServerIdentity_STATUSGenerator()) + gens["ImportSourceProperties"] = gen.PtrOf(ImportSourceProperties_STATUSGenerator()) + gens["MaintenanceWindow"] = gen.PtrOf(MaintenanceWindow_STATUSGenerator()) + gens["Network"] = gen.PtrOf(Network_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(MySQLServerSku_STATUSGenerator()) + gens["Storage"] = gen.PtrOf(Storage_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServer_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServer_Spec to FlexibleServer_Spec via AssignProperties_To_FlexibleServer_Spec & AssignProperties_From_FlexibleServer_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServer_Spec, FlexibleServer_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServer_Spec tests if a specific instance of FlexibleServer_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServer_Spec(subject FlexibleServer_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.FlexibleServer_Spec + err := copied.AssignProperties_To_FlexibleServer_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServer_Spec + err = actual.AssignProperties_From_FlexibleServer_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_FlexibleServer_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 FlexibleServer_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer_Spec, FlexibleServer_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer_Spec runs a test to see if a specific instance of FlexibleServer_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer_Spec(subject FlexibleServer_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer_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 FlexibleServer_Spec instances for property testing - lazily instantiated by +// FlexibleServer_SpecGenerator() +var flexibleServer_SpecGenerator gopter.Gen + +// FlexibleServer_SpecGenerator returns a generator of FlexibleServer_Spec instances for property testing. +// We first initialize flexibleServer_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 FlexibleServer_SpecGenerator() gopter.Gen { + if flexibleServer_SpecGenerator != nil { + return flexibleServer_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_Spec(generators) + flexibleServer_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServer_Spec(generators) + flexibleServer_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_Spec{}), generators) + + return flexibleServer_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServer_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.Gen) { + gens["AdministratorLogin"] = gen.PtrOf(gen.AlphaString()) + gens["AvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["AzureName"] = gen.AlphaString() + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf( + ServerProperties_CreateMode_Default, + ServerProperties_CreateMode_GeoRestore, + ServerProperties_CreateMode_PointInTimeRestore, + ServerProperties_CreateMode_Replica)) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["ReplicationRole"] = gen.PtrOf(gen.OneConstOf(ReplicationRole_None, ReplicationRole_Replica, ReplicationRole_Source)) + gens["RestorePointInTime"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.OneConstOf(ServerVersion_57, ServerVersion_8021)) +} + +// AddRelatedPropertyGeneratorsForFlexibleServer_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.Gen) { + gens["Backup"] = gen.PtrOf(BackupGenerator()) + gens["DataEncryption"] = gen.PtrOf(DataEncryptionGenerator()) + gens["HighAvailability"] = gen.PtrOf(HighAvailabilityGenerator()) + gens["Identity"] = gen.PtrOf(MySQLServerIdentityGenerator()) + gens["ImportSourceProperties"] = gen.PtrOf(ImportSourcePropertiesGenerator()) + gens["MaintenanceWindow"] = gen.PtrOf(MaintenanceWindowGenerator()) + gens["Network"] = gen.PtrOf(NetworkGenerator()) + gens["OperatorSpec"] = gen.PtrOf(FlexibleServerOperatorSpecGenerator()) + gens["Sku"] = gen.PtrOf(MySQLServerSkuGenerator()) + gens["Storage"] = gen.PtrOf(StorageGenerator()) +} + +func Test_HighAvailability_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from HighAvailability to HighAvailability via AssignProperties_To_HighAvailability & AssignProperties_From_HighAvailability returns original", + prop.ForAll(RunPropertyAssignmentTestForHighAvailability, HighAvailabilityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForHighAvailability tests if a specific instance of HighAvailability can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForHighAvailability(subject HighAvailability) 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.HighAvailability + err := copied.AssignProperties_To_HighAvailability(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual HighAvailability + err = actual.AssignProperties_From_HighAvailability(&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_HighAvailability_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 HighAvailability via JSON returns original", + prop.ForAll(RunJSONSerializationTestForHighAvailability, HighAvailabilityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForHighAvailability runs a test to see if a specific instance of HighAvailability round trips to JSON and back losslessly +func RunJSONSerializationTestForHighAvailability(subject HighAvailability) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual HighAvailability + 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 HighAvailability instances for property testing - lazily instantiated by HighAvailabilityGenerator() +var highAvailabilityGenerator gopter.Gen + +// HighAvailabilityGenerator returns a generator of HighAvailability instances for property testing. +func HighAvailabilityGenerator() gopter.Gen { + if highAvailabilityGenerator != nil { + return highAvailabilityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForHighAvailability(generators) + highAvailabilityGenerator = gen.Struct(reflect.TypeOf(HighAvailability{}), generators) + + return highAvailabilityGenerator +} + +// AddIndependentPropertyGeneratorsForHighAvailability is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForHighAvailability(gens map[string]gopter.Gen) { + gens["Mode"] = gen.PtrOf(gen.OneConstOf(HighAvailability_Mode_Disabled, HighAvailability_Mode_SameZone, HighAvailability_Mode_ZoneRedundant)) + gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_HighAvailability_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from HighAvailability_STATUS to HighAvailability_STATUS via AssignProperties_To_HighAvailability_STATUS & AssignProperties_From_HighAvailability_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForHighAvailability_STATUS, HighAvailability_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForHighAvailability_STATUS tests if a specific instance of HighAvailability_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForHighAvailability_STATUS(subject HighAvailability_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.HighAvailability_STATUS + err := copied.AssignProperties_To_HighAvailability_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual HighAvailability_STATUS + err = actual.AssignProperties_From_HighAvailability_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_HighAvailability_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 HighAvailability_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForHighAvailability_STATUS, HighAvailability_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForHighAvailability_STATUS runs a test to see if a specific instance of HighAvailability_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForHighAvailability_STATUS(subject HighAvailability_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual HighAvailability_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 HighAvailability_STATUS instances for property testing - lazily instantiated by +// HighAvailability_STATUSGenerator() +var highAvailability_STATUSGenerator gopter.Gen + +// HighAvailability_STATUSGenerator returns a generator of HighAvailability_STATUS instances for property testing. +func HighAvailability_STATUSGenerator() gopter.Gen { + if highAvailability_STATUSGenerator != nil { + return highAvailability_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForHighAvailability_STATUS(generators) + highAvailability_STATUSGenerator = gen.Struct(reflect.TypeOf(HighAvailability_STATUS{}), generators) + + return highAvailability_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForHighAvailability_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForHighAvailability_STATUS(gens map[string]gopter.Gen) { + gens["Mode"] = gen.PtrOf(gen.OneConstOf(HighAvailability_Mode_STATUS_Disabled, HighAvailability_Mode_STATUS_SameZone, HighAvailability_Mode_STATUS_ZoneRedundant)) + gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["State"] = gen.PtrOf(gen.OneConstOf( + HighAvailability_State_STATUS_CreatingStandby, + HighAvailability_State_STATUS_FailingOver, + HighAvailability_State_STATUS_Healthy, + HighAvailability_State_STATUS_NotEnabled, + HighAvailability_State_STATUS_RemovingStandby)) +} + +func Test_ImportSourceProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ImportSourceProperties to ImportSourceProperties via AssignProperties_To_ImportSourceProperties & AssignProperties_From_ImportSourceProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForImportSourceProperties, ImportSourcePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForImportSourceProperties tests if a specific instance of ImportSourceProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForImportSourceProperties(subject ImportSourceProperties) 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.ImportSourceProperties + err := copied.AssignProperties_To_ImportSourceProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ImportSourceProperties + err = actual.AssignProperties_From_ImportSourceProperties(&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_ImportSourceProperties_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 ImportSourceProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForImportSourceProperties, ImportSourcePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForImportSourceProperties runs a test to see if a specific instance of ImportSourceProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForImportSourceProperties(subject ImportSourceProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ImportSourceProperties + 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 ImportSourceProperties instances for property testing - lazily instantiated by +// ImportSourcePropertiesGenerator() +var importSourcePropertiesGenerator gopter.Gen + +// ImportSourcePropertiesGenerator returns a generator of ImportSourceProperties instances for property testing. +func ImportSourcePropertiesGenerator() gopter.Gen { + if importSourcePropertiesGenerator != nil { + return importSourcePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForImportSourceProperties(generators) + importSourcePropertiesGenerator = gen.Struct(reflect.TypeOf(ImportSourceProperties{}), generators) + + return importSourcePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForImportSourceProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForImportSourceProperties(gens map[string]gopter.Gen) { + gens["DataDirPath"] = gen.PtrOf(gen.AlphaString()) + gens["StorageType"] = gen.PtrOf(gen.OneConstOf(ImportSourceProperties_StorageType_AzureBlob)) + gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ImportSourceProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ImportSourceProperties_STATUS to ImportSourceProperties_STATUS via AssignProperties_To_ImportSourceProperties_STATUS & AssignProperties_From_ImportSourceProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForImportSourceProperties_STATUS, ImportSourceProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForImportSourceProperties_STATUS tests if a specific instance of ImportSourceProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForImportSourceProperties_STATUS(subject ImportSourceProperties_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.ImportSourceProperties_STATUS + err := copied.AssignProperties_To_ImportSourceProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ImportSourceProperties_STATUS + err = actual.AssignProperties_From_ImportSourceProperties_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_ImportSourceProperties_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 ImportSourceProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForImportSourceProperties_STATUS, ImportSourceProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForImportSourceProperties_STATUS runs a test to see if a specific instance of ImportSourceProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForImportSourceProperties_STATUS(subject ImportSourceProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ImportSourceProperties_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 ImportSourceProperties_STATUS instances for property testing - lazily instantiated by +// ImportSourceProperties_STATUSGenerator() +var importSourceProperties_STATUSGenerator gopter.Gen + +// ImportSourceProperties_STATUSGenerator returns a generator of ImportSourceProperties_STATUS instances for property testing. +func ImportSourceProperties_STATUSGenerator() gopter.Gen { + if importSourceProperties_STATUSGenerator != nil { + return importSourceProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(generators) + importSourceProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ImportSourceProperties_STATUS{}), generators) + + return importSourceProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(gens map[string]gopter.Gen) { + gens["DataDirPath"] = gen.PtrOf(gen.AlphaString()) + gens["StorageType"] = gen.PtrOf(gen.OneConstOf(ImportSourceProperties_StorageType_STATUS_AzureBlob)) + gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_MaintenanceWindow_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MaintenanceWindow to MaintenanceWindow via AssignProperties_To_MaintenanceWindow & AssignProperties_From_MaintenanceWindow returns original", + prop.ForAll(RunPropertyAssignmentTestForMaintenanceWindow, MaintenanceWindowGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMaintenanceWindow tests if a specific instance of MaintenanceWindow can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMaintenanceWindow(subject MaintenanceWindow) 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.MaintenanceWindow + err := copied.AssignProperties_To_MaintenanceWindow(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MaintenanceWindow + err = actual.AssignProperties_From_MaintenanceWindow(&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_MaintenanceWindow_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 MaintenanceWindow via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMaintenanceWindow, MaintenanceWindowGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMaintenanceWindow runs a test to see if a specific instance of MaintenanceWindow round trips to JSON and back losslessly +func RunJSONSerializationTestForMaintenanceWindow(subject MaintenanceWindow) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MaintenanceWindow + 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 MaintenanceWindow instances for property testing - lazily instantiated by MaintenanceWindowGenerator() +var maintenanceWindowGenerator gopter.Gen + +// MaintenanceWindowGenerator returns a generator of MaintenanceWindow instances for property testing. +func MaintenanceWindowGenerator() gopter.Gen { + if maintenanceWindowGenerator != nil { + return maintenanceWindowGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMaintenanceWindow(generators) + maintenanceWindowGenerator = gen.Struct(reflect.TypeOf(MaintenanceWindow{}), generators) + + return maintenanceWindowGenerator +} + +// AddIndependentPropertyGeneratorsForMaintenanceWindow is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMaintenanceWindow(gens map[string]gopter.Gen) { + gens["CustomWindow"] = gen.PtrOf(gen.AlphaString()) + gens["DayOfWeek"] = gen.PtrOf(gen.Int()) + gens["StartHour"] = gen.PtrOf(gen.Int()) + gens["StartMinute"] = gen.PtrOf(gen.Int()) +} + +func Test_MaintenanceWindow_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MaintenanceWindow_STATUS to MaintenanceWindow_STATUS via AssignProperties_To_MaintenanceWindow_STATUS & AssignProperties_From_MaintenanceWindow_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForMaintenanceWindow_STATUS, MaintenanceWindow_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMaintenanceWindow_STATUS tests if a specific instance of MaintenanceWindow_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMaintenanceWindow_STATUS(subject MaintenanceWindow_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.MaintenanceWindow_STATUS + err := copied.AssignProperties_To_MaintenanceWindow_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MaintenanceWindow_STATUS + err = actual.AssignProperties_From_MaintenanceWindow_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_MaintenanceWindow_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 MaintenanceWindow_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMaintenanceWindow_STATUS, MaintenanceWindow_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMaintenanceWindow_STATUS runs a test to see if a specific instance of MaintenanceWindow_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMaintenanceWindow_STATUS(subject MaintenanceWindow_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MaintenanceWindow_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 MaintenanceWindow_STATUS instances for property testing - lazily instantiated by +// MaintenanceWindow_STATUSGenerator() +var maintenanceWindow_STATUSGenerator gopter.Gen + +// MaintenanceWindow_STATUSGenerator returns a generator of MaintenanceWindow_STATUS instances for property testing. +func MaintenanceWindow_STATUSGenerator() gopter.Gen { + if maintenanceWindow_STATUSGenerator != nil { + return maintenanceWindow_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(generators) + maintenanceWindow_STATUSGenerator = gen.Struct(reflect.TypeOf(MaintenanceWindow_STATUS{}), generators) + + return maintenanceWindow_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(gens map[string]gopter.Gen) { + gens["CustomWindow"] = gen.PtrOf(gen.AlphaString()) + gens["DayOfWeek"] = gen.PtrOf(gen.Int()) + gens["StartHour"] = gen.PtrOf(gen.Int()) + gens["StartMinute"] = gen.PtrOf(gen.Int()) +} + +func Test_MySQLServerIdentity_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerIdentity to MySQLServerIdentity via AssignProperties_To_MySQLServerIdentity & AssignProperties_From_MySQLServerIdentity returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerIdentity, MySQLServerIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerIdentity tests if a specific instance of MySQLServerIdentity can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerIdentity(subject MySQLServerIdentity) 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.MySQLServerIdentity + err := copied.AssignProperties_To_MySQLServerIdentity(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerIdentity + err = actual.AssignProperties_From_MySQLServerIdentity(&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_MySQLServerIdentity_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 MySQLServerIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerIdentity, MySQLServerIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerIdentity runs a test to see if a specific instance of MySQLServerIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerIdentity(subject MySQLServerIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerIdentity + 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 MySQLServerIdentity instances for property testing - lazily instantiated by +// MySQLServerIdentityGenerator() +var mySQLServerIdentityGenerator gopter.Gen + +// MySQLServerIdentityGenerator returns a generator of MySQLServerIdentity instances for property testing. +// We first initialize mySQLServerIdentityGenerator 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 MySQLServerIdentityGenerator() gopter.Gen { + if mySQLServerIdentityGenerator != nil { + return mySQLServerIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity(generators) + mySQLServerIdentityGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity(generators) + AddRelatedPropertyGeneratorsForMySQLServerIdentity(generators) + mySQLServerIdentityGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity{}), generators) + + return mySQLServerIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf(MySQLServerIdentity_Type_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_MySQLServerIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerIdentity_STATUS to MySQLServerIdentity_STATUS via AssignProperties_To_MySQLServerIdentity_STATUS & AssignProperties_From_MySQLServerIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerIdentity_STATUS, MySQLServerIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerIdentity_STATUS tests if a specific instance of MySQLServerIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerIdentity_STATUS(subject MySQLServerIdentity_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.MySQLServerIdentity_STATUS + err := copied.AssignProperties_To_MySQLServerIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerIdentity_STATUS + err = actual.AssignProperties_From_MySQLServerIdentity_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_MySQLServerIdentity_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 MySQLServerIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerIdentity_STATUS, MySQLServerIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerIdentity_STATUS runs a test to see if a specific instance of MySQLServerIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerIdentity_STATUS(subject MySQLServerIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerIdentity_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 MySQLServerIdentity_STATUS instances for property testing - lazily instantiated by +// MySQLServerIdentity_STATUSGenerator() +var mySQLServerIdentity_STATUSGenerator gopter.Gen + +// MySQLServerIdentity_STATUSGenerator returns a generator of MySQLServerIdentity_STATUS instances for property testing. +func MySQLServerIdentity_STATUSGenerator() gopter.Gen { + if mySQLServerIdentity_STATUSGenerator != nil { + return mySQLServerIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(generators) + mySQLServerIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity_STATUS{}), generators) + + return mySQLServerIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf(MySQLServerIdentity_Type_STATUS_UserAssigned)) +} + +func Test_MySQLServerSku_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerSku to MySQLServerSku via AssignProperties_To_MySQLServerSku & AssignProperties_From_MySQLServerSku returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerSku, MySQLServerSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerSku tests if a specific instance of MySQLServerSku can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerSku(subject MySQLServerSku) 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.MySQLServerSku + err := copied.AssignProperties_To_MySQLServerSku(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerSku + err = actual.AssignProperties_From_MySQLServerSku(&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_MySQLServerSku_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 MySQLServerSku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerSku, MySQLServerSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerSku runs a test to see if a specific instance of MySQLServerSku round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerSku(subject MySQLServerSku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerSku + 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 MySQLServerSku instances for property testing - lazily instantiated by MySQLServerSkuGenerator() +var mySQLServerSkuGenerator gopter.Gen + +// MySQLServerSkuGenerator returns a generator of MySQLServerSku instances for property testing. +func MySQLServerSkuGenerator() gopter.Gen { + if mySQLServerSkuGenerator != nil { + return mySQLServerSkuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerSku(generators) + mySQLServerSkuGenerator = gen.Struct(reflect.TypeOf(MySQLServerSku{}), generators) + + return mySQLServerSkuGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerSku(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf(MySQLServerSku_Tier_Burstable, MySQLServerSku_Tier_GeneralPurpose, MySQLServerSku_Tier_MemoryOptimized)) +} + +func Test_MySQLServerSku_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from MySQLServerSku_STATUS to MySQLServerSku_STATUS via AssignProperties_To_MySQLServerSku_STATUS & AssignProperties_From_MySQLServerSku_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForMySQLServerSku_STATUS, MySQLServerSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForMySQLServerSku_STATUS tests if a specific instance of MySQLServerSku_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForMySQLServerSku_STATUS(subject MySQLServerSku_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.MySQLServerSku_STATUS + err := copied.AssignProperties_To_MySQLServerSku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual MySQLServerSku_STATUS + err = actual.AssignProperties_From_MySQLServerSku_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_MySQLServerSku_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 MySQLServerSku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerSku_STATUS, MySQLServerSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerSku_STATUS runs a test to see if a specific instance of MySQLServerSku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerSku_STATUS(subject MySQLServerSku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerSku_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 MySQLServerSku_STATUS instances for property testing - lazily instantiated by +// MySQLServerSku_STATUSGenerator() +var mySQLServerSku_STATUSGenerator gopter.Gen + +// MySQLServerSku_STATUSGenerator returns a generator of MySQLServerSku_STATUS instances for property testing. +func MySQLServerSku_STATUSGenerator() gopter.Gen { + if mySQLServerSku_STATUSGenerator != nil { + return mySQLServerSku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(generators) + mySQLServerSku_STATUSGenerator = gen.Struct(reflect.TypeOf(MySQLServerSku_STATUS{}), generators) + + return mySQLServerSku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.OneConstOf(MySQLServerSku_Tier_STATUS_Burstable, MySQLServerSku_Tier_STATUS_GeneralPurpose, MySQLServerSku_Tier_STATUS_MemoryOptimized)) +} + +func Test_Network_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Network to Network via AssignProperties_To_Network & AssignProperties_From_Network returns original", + prop.ForAll(RunPropertyAssignmentTestForNetwork, NetworkGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetwork tests if a specific instance of Network can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetwork(subject Network) 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.Network + err := copied.AssignProperties_To_Network(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Network + err = actual.AssignProperties_From_Network(&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_Network_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 Network via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetwork, NetworkGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetwork runs a test to see if a specific instance of Network round trips to JSON and back losslessly +func RunJSONSerializationTestForNetwork(subject Network) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Network + 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 Network instances for property testing - lazily instantiated by NetworkGenerator() +var networkGenerator gopter.Gen + +// NetworkGenerator returns a generator of Network instances for property testing. +func NetworkGenerator() gopter.Gen { + if networkGenerator != nil { + return networkGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetwork(generators) + networkGenerator = gen.Struct(reflect.TypeOf(Network{}), generators) + + return networkGenerator +} + +// AddIndependentPropertyGeneratorsForNetwork is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetwork(gens map[string]gopter.Gen) { + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) +} + +func Test_Network_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Network_STATUS to Network_STATUS via AssignProperties_To_Network_STATUS & AssignProperties_From_Network_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForNetwork_STATUS, Network_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetwork_STATUS tests if a specific instance of Network_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetwork_STATUS(subject Network_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.Network_STATUS + err := copied.AssignProperties_To_Network_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Network_STATUS + err = actual.AssignProperties_From_Network_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_Network_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 Network_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetwork_STATUS, Network_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetwork_STATUS runs a test to see if a specific instance of Network_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetwork_STATUS(subject Network_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Network_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 Network_STATUS instances for property testing - lazily instantiated by Network_STATUSGenerator() +var network_STATUSGenerator gopter.Gen + +// Network_STATUSGenerator returns a generator of Network_STATUS instances for property testing. +func Network_STATUSGenerator() gopter.Gen { + if network_STATUSGenerator != nil { + return network_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetwork_STATUS(generators) + network_STATUSGenerator = gen.Struct(reflect.TypeOf(Network_STATUS{}), generators) + + return network_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetwork_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetwork_STATUS(gens map[string]gopter.Gen) { + gens["DelegatedSubnetResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PrivateDnsZoneResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) +} + +func Test_PrivateEndpointConnection_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnection_STATUS to PrivateEndpointConnection_STATUS via AssignProperties_To_PrivateEndpointConnection_STATUS & AssignProperties_From_PrivateEndpointConnection_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS tests if a specific instance of PrivateEndpointConnection_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_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.PrivateEndpointConnection_STATUS + err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnection_STATUS + err = actual.AssignProperties_From_PrivateEndpointConnection_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_PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS runs a test to see if a specific instance of PrivateEndpointConnection_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnection_STATUSGenerator() +var privateEndpointConnection_STATUSGenerator gopter.Gen + +// PrivateEndpointConnection_STATUSGenerator returns a generator of PrivateEndpointConnection_STATUS instances for property testing. +func PrivateEndpointConnection_STATUSGenerator() gopter.Gen { + if privateEndpointConnection_STATUSGenerator != nil { + return privateEndpointConnection_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(generators) + privateEndpointConnection_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS{}), generators) + + return privateEndpointConnection_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Storage_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Storage to Storage via AssignProperties_To_Storage & AssignProperties_From_Storage returns original", + prop.ForAll(RunPropertyAssignmentTestForStorage, StorageGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForStorage tests if a specific instance of Storage can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForStorage(subject Storage) 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.Storage + err := copied.AssignProperties_To_Storage(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Storage + err = actual.AssignProperties_From_Storage(&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_Storage_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 Storage via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStorage, StorageGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStorage runs a test to see if a specific instance of Storage round trips to JSON and back losslessly +func RunJSONSerializationTestForStorage(subject Storage) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Storage + 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 Storage instances for property testing - lazily instantiated by StorageGenerator() +var storageGenerator gopter.Gen + +// StorageGenerator returns a generator of Storage instances for property testing. +func StorageGenerator() gopter.Gen { + if storageGenerator != nil { + return storageGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStorage(generators) + storageGenerator = gen.Struct(reflect.TypeOf(Storage{}), generators) + + return storageGenerator +} + +// AddIndependentPropertyGeneratorsForStorage is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStorage(gens map[string]gopter.Gen) { + gens["AutoGrow"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) + gens["AutoIoScaling"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) + gens["Iops"] = gen.PtrOf(gen.Int()) + gens["LogOnDisk"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_Disabled, EnableStatusEnum_Enabled)) + gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) +} + +func Test_Storage_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Storage_STATUS to Storage_STATUS via AssignProperties_To_Storage_STATUS & AssignProperties_From_Storage_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForStorage_STATUS, Storage_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForStorage_STATUS tests if a specific instance of Storage_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForStorage_STATUS(subject Storage_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.Storage_STATUS + err := copied.AssignProperties_To_Storage_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Storage_STATUS + err = actual.AssignProperties_From_Storage_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_Storage_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 Storage_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStorage_STATUS, Storage_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStorage_STATUS runs a test to see if a specific instance of Storage_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForStorage_STATUS(subject Storage_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Storage_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 Storage_STATUS instances for property testing - lazily instantiated by Storage_STATUSGenerator() +var storage_STATUSGenerator gopter.Gen + +// Storage_STATUSGenerator returns a generator of Storage_STATUS instances for property testing. +func Storage_STATUSGenerator() gopter.Gen { + if storage_STATUSGenerator != nil { + return storage_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStorage_STATUS(generators) + storage_STATUSGenerator = gen.Struct(reflect.TypeOf(Storage_STATUS{}), generators) + + return storage_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForStorage_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStorage_STATUS(gens map[string]gopter.Gen) { + gens["AutoGrow"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) + gens["AutoIoScaling"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) + gens["Iops"] = gen.PtrOf(gen.Int()) + gens["LogOnDisk"] = gen.PtrOf(gen.OneConstOf(EnableStatusEnum_STATUS_Disabled, EnableStatusEnum_STATUS_Enabled)) + gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) + gens["StorageSku"] = gen.PtrOf(gen.AlphaString()) +} + +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)) +} + +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 +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen.go b/v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen.go new file mode 100644 index 0000000000..5f45fae50c --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen.go @@ -0,0 +1,1202 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/arm" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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: /mysql/resource-manager/Microsoft.DBforMySQL/AAD/stable/2023-12-30/AzureADAdministrator.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/administrators/{administratorName} +type FlexibleServersAdministrator struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersAdministrator_Spec `json:"spec,omitempty"` + Status FlexibleServersAdministrator_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersAdministrator{} + +// GetConditions returns the conditions of the resource +func (administrator *FlexibleServersAdministrator) GetConditions() conditions.Conditions { + return administrator.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (administrator *FlexibleServersAdministrator) SetConditions(conditions conditions.Conditions) { + administrator.Status.Conditions = conditions +} + +var _ conversion.Convertible = &FlexibleServersAdministrator{} + +// ConvertFrom populates our FlexibleServersAdministrator from the provided hub FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersAdministrator) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersAdministrator but received %T instead", hub) + } + + return administrator.AssignProperties_From_FlexibleServersAdministrator(source) +} + +// ConvertTo populates the provided hub FlexibleServersAdministrator from our FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersAdministrator) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersAdministrator but received %T instead", hub) + } + + return administrator.AssignProperties_To_FlexibleServersAdministrator(destination) +} + +// +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20231230-flexibleserversadministrator,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversadministrators,verbs=create;update,versions=v1api20231230,name=default.v1api20231230.flexibleserversadministrators.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &FlexibleServersAdministrator{} + +// Default applies defaults to the FlexibleServersAdministrator resource +func (administrator *FlexibleServersAdministrator) Default() { + administrator.defaultImpl() + var temp any = administrator + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultImpl applies the code generated defaults to the FlexibleServersAdministrator resource +func (administrator *FlexibleServersAdministrator) defaultImpl() {} + +var _ configmaps.Exporter = &FlexibleServersAdministrator{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (administrator *FlexibleServersAdministrator) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if administrator.Spec.OperatorSpec == nil { + return nil + } + return administrator.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersAdministrator{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (administrator *FlexibleServersAdministrator) SecretDestinationExpressions() []*core.DestinationExpression { + if administrator.Spec.OperatorSpec == nil { + return nil + } + return administrator.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &FlexibleServersAdministrator{} + +// InitializeSpec initializes the spec for this resource from the given status +func (administrator *FlexibleServersAdministrator) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*FlexibleServersAdministrator_STATUS); ok { + return administrator.Spec.Initialize_From_FlexibleServersAdministrator_STATUS(s) + } + + return fmt.Errorf("expected Status of type FlexibleServersAdministrator_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &FlexibleServersAdministrator{} + +// AzureName returns the Azure name of the resource (always "ActiveDirectory") +func (administrator *FlexibleServersAdministrator) AzureName() string { + return "ActiveDirectory" +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (administrator FlexibleServersAdministrator) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (administrator *FlexibleServersAdministrator) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (administrator *FlexibleServersAdministrator) GetSpec() genruntime.ConvertibleSpec { + return &administrator.Spec +} + +// GetStatus returns the status of this resource +func (administrator *FlexibleServersAdministrator) GetStatus() genruntime.ConvertibleStatus { + return &administrator.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (administrator *FlexibleServersAdministrator) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/administrators" +func (administrator *FlexibleServersAdministrator) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/administrators" +} + +// NewEmptyStatus returns a new empty (blank) status +func (administrator *FlexibleServersAdministrator) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersAdministrator_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (administrator *FlexibleServersAdministrator) Owner() *genruntime.ResourceReference { + if administrator.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(administrator.Spec) + return administrator.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (administrator *FlexibleServersAdministrator) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersAdministrator_STATUS); ok { + administrator.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersAdministrator_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + administrator.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-dbformysql-azure-com-v1api20231230-flexibleserversadministrator,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversadministrators,verbs=create;update,versions=v1api20231230,name=validate.v1api20231230.flexibleserversadministrators.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &FlexibleServersAdministrator{} + +// ValidateCreate validates the creation of the resource +func (administrator *FlexibleServersAdministrator) ValidateCreate() (admission.Warnings, error) { + validations := administrator.createValidations() + var temp any = administrator + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (administrator *FlexibleServersAdministrator) ValidateDelete() (admission.Warnings, error) { + validations := administrator.deleteValidations() + var temp any = administrator + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (administrator *FlexibleServersAdministrator) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := administrator.updateValidations() + var temp any = administrator + 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 (administrator *FlexibleServersAdministrator) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){administrator.validateResourceReferences, administrator.validateOwnerReference, administrator.validateSecretDestinations, administrator.validateConfigMapDestinations, administrator.validateOptionalConfigMapReferences} +} + +// deleteValidations validates the deletion of the resource +func (administrator *FlexibleServersAdministrator) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (administrator *FlexibleServersAdministrator) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return administrator.validateResourceReferences() + }, + administrator.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return administrator.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return administrator.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return administrator.validateConfigMapDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return administrator.validateOptionalConfigMapReferences() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (administrator *FlexibleServersAdministrator) validateConfigMapDestinations() (admission.Warnings, error) { + if administrator.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(administrator, nil, administrator.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOptionalConfigMapReferences validates all optional configmap reference pairs to ensure that at most 1 is set +func (administrator *FlexibleServersAdministrator) validateOptionalConfigMapReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindOptionalConfigMapReferences(&administrator.Spec) + if err != nil { + return nil, err + } + return configmaps.ValidateOptionalReferences(refs) +} + +// validateOwnerReference validates the owner field +func (administrator *FlexibleServersAdministrator) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(administrator) +} + +// validateResourceReferences validates all resource references +func (administrator *FlexibleServersAdministrator) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&administrator.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (administrator *FlexibleServersAdministrator) validateSecretDestinations() (admission.Warnings, error) { + if administrator.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(administrator, nil, administrator.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (administrator *FlexibleServersAdministrator) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*FlexibleServersAdministrator) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, administrator) +} + +// AssignProperties_From_FlexibleServersAdministrator populates our FlexibleServersAdministrator from the provided source FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) AssignProperties_From_FlexibleServersAdministrator(source *storage.FlexibleServersAdministrator) error { + + // ObjectMeta + administrator.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersAdministrator_Spec + err := spec.AssignProperties_From_FlexibleServersAdministrator_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersAdministrator_Spec() to populate field Spec") + } + administrator.Spec = spec + + // Status + var status FlexibleServersAdministrator_STATUS + err = status.AssignProperties_From_FlexibleServersAdministrator_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersAdministrator_STATUS() to populate field Status") + } + administrator.Status = status + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministrator populates the provided destination FlexibleServersAdministrator from our FlexibleServersAdministrator +func (administrator *FlexibleServersAdministrator) AssignProperties_To_FlexibleServersAdministrator(destination *storage.FlexibleServersAdministrator) error { + + // ObjectMeta + destination.ObjectMeta = *administrator.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersAdministrator_Spec + err := administrator.Spec.AssignProperties_To_FlexibleServersAdministrator_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersAdministrator_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersAdministrator_STATUS + err = administrator.Status.AssignProperties_To_FlexibleServersAdministrator_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersAdministrator_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 (administrator *FlexibleServersAdministrator) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: administrator.Spec.OriginalVersion(), + Kind: "FlexibleServersAdministrator", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/AAD/stable/2023-12-30/AzureADAdministrator.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/administrators/{administratorName} +type FlexibleServersAdministratorList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersAdministrator `json:"items"` +} + +type FlexibleServersAdministrator_Spec struct { + // AdministratorType: Type of the sever administrator. + AdministratorType *AdministratorProperties_AdministratorType `json:"administratorType,omitempty"` + + // IdentityResourceReference: The resource id of the identity used for AAD Authentication. + IdentityResourceReference *genruntime.ResourceReference `armReference:"IdentityResourceId" json:"identityResourceReference,omitempty"` + + // Login: Login name of the server administrator. + Login *string `json:"login,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *FlexibleServersAdministratorOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + + // Sid: SID (object ID) of the server administrator. + Sid *string `json:"sid,omitempty" optionalConfigMapPair:"Sid"` + + // SidFromConfig: SID (object ID) of the server administrator. + SidFromConfig *genruntime.ConfigMapReference `json:"sidFromConfig,omitempty" optionalConfigMapPair:"Sid"` + + // TenantId: Tenant ID of the administrator. + TenantId *string `json:"tenantId,omitempty" optionalConfigMapPair:"TenantId"` + + // TenantIdFromConfig: Tenant ID of the administrator. + TenantIdFromConfig *genruntime.ConfigMapReference `json:"tenantIdFromConfig,omitempty" optionalConfigMapPair:"TenantId"` +} + +var _ genruntime.ARMTransformer = &FlexibleServersAdministrator_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (administrator *FlexibleServersAdministrator_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if administrator == nil { + return nil, nil + } + result := &arm.FlexibleServersAdministrator_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if administrator.AdministratorType != nil || + administrator.IdentityResourceReference != nil || + administrator.Login != nil || + administrator.Sid != nil || + administrator.SidFromConfig != nil || + administrator.TenantId != nil || + administrator.TenantIdFromConfig != nil { + result.Properties = &arm.AdministratorProperties{} + } + if administrator.AdministratorType != nil { + var temp string + temp = string(*administrator.AdministratorType) + administratorType := arm.AdministratorProperties_AdministratorType(temp) + result.Properties.AdministratorType = &administratorType + } + if administrator.IdentityResourceReference != nil { + identityResourceIdARMID, err := resolved.ResolvedReferences.Lookup(*administrator.IdentityResourceReference) + if err != nil { + return nil, err + } + identityResourceId := identityResourceIdARMID + result.Properties.IdentityResourceId = &identityResourceId + } + if administrator.Login != nil { + login := *administrator.Login + result.Properties.Login = &login + } + if administrator.Sid != nil { + sid := *administrator.Sid + result.Properties.Sid = &sid + } + if administrator.SidFromConfig != nil { + sidValue, err := resolved.ResolvedConfigMaps.Lookup(*administrator.SidFromConfig) + if err != nil { + return nil, eris.Wrap(err, "looking up configmap for property Sid") + } + sid := sidValue + result.Properties.Sid = &sid + } + if administrator.TenantId != nil { + tenantId := *administrator.TenantId + result.Properties.TenantId = &tenantId + } + if administrator.TenantIdFromConfig != nil { + tenantIdValue, err := resolved.ResolvedConfigMaps.Lookup(*administrator.TenantIdFromConfig) + if err != nil { + return nil, eris.Wrap(err, "looking up configmap for property TenantId") + } + tenantId := tenantIdValue + result.Properties.TenantId = &tenantId + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (administrator *FlexibleServersAdministrator_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersAdministrator_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (administrator *FlexibleServersAdministrator_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersAdministrator_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersAdministrator_Spec, got %T", armInput) + } + + // Set property "AdministratorType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AdministratorType != nil { + var temp string + temp = string(*typedInput.Properties.AdministratorType) + administratorType := AdministratorProperties_AdministratorType(temp) + administrator.AdministratorType = &administratorType + } + } + + // no assignment for property "IdentityResourceReference" + + // Set property "Login": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Login != nil { + login := *typedInput.Properties.Login + administrator.Login = &login + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + administrator.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "Sid": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Sid != nil { + sid := *typedInput.Properties.Sid + administrator.Sid = &sid + } + } + + // no assignment for property "SidFromConfig" + + // Set property "TenantId": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.TenantId != nil { + tenantId := *typedInput.Properties.TenantId + administrator.TenantId = &tenantId + } + } + + // no assignment for property "TenantIdFromConfig" + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersAdministrator_Spec{} + +// ConvertSpecFrom populates our FlexibleServersAdministrator_Spec from the provided source +func (administrator *FlexibleServersAdministrator_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.FlexibleServersAdministrator_Spec) + if ok { + // Populate our instance from source + return administrator.AssignProperties_From_FlexibleServersAdministrator_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersAdministrator_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = administrator.AssignProperties_From_FlexibleServersAdministrator_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersAdministrator_Spec +func (administrator *FlexibleServersAdministrator_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.FlexibleServersAdministrator_Spec) + if ok { + // Populate destination from our instance + return administrator.AssignProperties_To_FlexibleServersAdministrator_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersAdministrator_Spec{} + err := administrator.AssignProperties_To_FlexibleServersAdministrator_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_FlexibleServersAdministrator_Spec populates our FlexibleServersAdministrator_Spec from the provided source FlexibleServersAdministrator_Spec +func (administrator *FlexibleServersAdministrator_Spec) AssignProperties_From_FlexibleServersAdministrator_Spec(source *storage.FlexibleServersAdministrator_Spec) error { + + // AdministratorType + if source.AdministratorType != nil { + administratorType := *source.AdministratorType + administratorTypeTemp := genruntime.ToEnum(administratorType, administratorProperties_AdministratorType_Values) + administrator.AdministratorType = &administratorTypeTemp + } else { + administrator.AdministratorType = nil + } + + // IdentityResourceReference + if source.IdentityResourceReference != nil { + identityResourceReference := source.IdentityResourceReference.Copy() + administrator.IdentityResourceReference = &identityResourceReference + } else { + administrator.IdentityResourceReference = nil + } + + // Login + administrator.Login = genruntime.ClonePointerToString(source.Login) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersAdministratorOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersAdministratorOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersAdministratorOperatorSpec() to populate field OperatorSpec") + } + administrator.OperatorSpec = &operatorSpec + } else { + administrator.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + administrator.Owner = &owner + } else { + administrator.Owner = nil + } + + // Sid + administrator.Sid = genruntime.ClonePointerToString(source.Sid) + + // SidFromConfig + if source.SidFromConfig != nil { + sidFromConfig := source.SidFromConfig.Copy() + administrator.SidFromConfig = &sidFromConfig + } else { + administrator.SidFromConfig = nil + } + + // TenantId + administrator.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // TenantIdFromConfig + if source.TenantIdFromConfig != nil { + tenantIdFromConfig := source.TenantIdFromConfig.Copy() + administrator.TenantIdFromConfig = &tenantIdFromConfig + } else { + administrator.TenantIdFromConfig = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministrator_Spec populates the provided destination FlexibleServersAdministrator_Spec from our FlexibleServersAdministrator_Spec +func (administrator *FlexibleServersAdministrator_Spec) AssignProperties_To_FlexibleServersAdministrator_Spec(destination *storage.FlexibleServersAdministrator_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdministratorType + if administrator.AdministratorType != nil { + administratorType := string(*administrator.AdministratorType) + destination.AdministratorType = &administratorType + } else { + destination.AdministratorType = nil + } + + // IdentityResourceReference + if administrator.IdentityResourceReference != nil { + identityResourceReference := administrator.IdentityResourceReference.Copy() + destination.IdentityResourceReference = &identityResourceReference + } else { + destination.IdentityResourceReference = nil + } + + // Login + destination.Login = genruntime.ClonePointerToString(administrator.Login) + + // OperatorSpec + if administrator.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersAdministratorOperatorSpec + err := administrator.OperatorSpec.AssignProperties_To_FlexibleServersAdministratorOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersAdministratorOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = administrator.OriginalVersion() + + // Owner + if administrator.Owner != nil { + owner := administrator.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Sid + destination.Sid = genruntime.ClonePointerToString(administrator.Sid) + + // SidFromConfig + if administrator.SidFromConfig != nil { + sidFromConfig := administrator.SidFromConfig.Copy() + destination.SidFromConfig = &sidFromConfig + } else { + destination.SidFromConfig = nil + } + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(administrator.TenantId) + + // TenantIdFromConfig + if administrator.TenantIdFromConfig != nil { + tenantIdFromConfig := administrator.TenantIdFromConfig.Copy() + destination.TenantIdFromConfig = &tenantIdFromConfig + } else { + destination.TenantIdFromConfig = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_FlexibleServersAdministrator_STATUS populates our FlexibleServersAdministrator_Spec from the provided source FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_Spec) Initialize_From_FlexibleServersAdministrator_STATUS(source *FlexibleServersAdministrator_STATUS) error { + + // AdministratorType + if source.AdministratorType != nil { + administratorType := genruntime.ToEnum(string(*source.AdministratorType), administratorProperties_AdministratorType_Values) + administrator.AdministratorType = &administratorType + } else { + administrator.AdministratorType = nil + } + + // IdentityResourceReference + if source.IdentityResourceId != nil { + identityResourceReference := genruntime.CreateResourceReferenceFromARMID(*source.IdentityResourceId) + administrator.IdentityResourceReference = &identityResourceReference + } else { + administrator.IdentityResourceReference = nil + } + + // Login + administrator.Login = genruntime.ClonePointerToString(source.Login) + + // Sid + administrator.Sid = genruntime.ClonePointerToString(source.Sid) + + // TenantId + administrator.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (administrator *FlexibleServersAdministrator_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +type FlexibleServersAdministrator_STATUS struct { + // AdministratorType: Type of the sever administrator. + AdministratorType *AdministratorProperties_AdministratorType_STATUS `json:"administratorType,omitempty"` + + // 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"` + + // IdentityResourceId: The resource id of the identity used for AAD Authentication. + IdentityResourceId *string `json:"identityResourceId,omitempty"` + + // Login: Login name of the server administrator. + Login *string `json:"login,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // Sid: SID (object ID) of the server administrator. + Sid *string `json:"sid,omitempty"` + + // SystemData: Azure Resource Manager metadata containing createdBy and modifiedBy information. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // TenantId: Tenant ID of the administrator. + TenantId *string `json:"tenantId,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServersAdministrator_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersAdministrator_STATUS from the provided source +func (administrator *FlexibleServersAdministrator_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.FlexibleServersAdministrator_STATUS) + if ok { + // Populate our instance from source + return administrator.AssignProperties_From_FlexibleServersAdministrator_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersAdministrator_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = administrator.AssignProperties_From_FlexibleServersAdministrator_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.FlexibleServersAdministrator_STATUS) + if ok { + // Populate destination from our instance + return administrator.AssignProperties_To_FlexibleServersAdministrator_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersAdministrator_STATUS{} + err := administrator.AssignProperties_To_FlexibleServersAdministrator_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 = &FlexibleServersAdministrator_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (administrator *FlexibleServersAdministrator_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersAdministrator_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (administrator *FlexibleServersAdministrator_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersAdministrator_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersAdministrator_STATUS, got %T", armInput) + } + + // Set property "AdministratorType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AdministratorType != nil { + var temp string + temp = string(*typedInput.Properties.AdministratorType) + administratorType := AdministratorProperties_AdministratorType_STATUS(temp) + administrator.AdministratorType = &administratorType + } + } + + // no assignment for property "Conditions" + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + administrator.Id = &id + } + + // Set property "IdentityResourceId": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.IdentityResourceId != nil { + identityResourceId := *typedInput.Properties.IdentityResourceId + administrator.IdentityResourceId = &identityResourceId + } + } + + // Set property "Login": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Login != nil { + login := *typedInput.Properties.Login + administrator.Login = &login + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + administrator.Name = &name + } + + // Set property "Sid": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Sid != nil { + sid := *typedInput.Properties.Sid + administrator.Sid = &sid + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + administrator.SystemData = &systemData + } + + // Set property "TenantId": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.TenantId != nil { + tenantId := *typedInput.Properties.TenantId + administrator.TenantId = &tenantId + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + administrator.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_FlexibleServersAdministrator_STATUS populates our FlexibleServersAdministrator_STATUS from the provided source FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_STATUS) AssignProperties_From_FlexibleServersAdministrator_STATUS(source *storage.FlexibleServersAdministrator_STATUS) error { + + // AdministratorType + if source.AdministratorType != nil { + administratorType := *source.AdministratorType + administratorTypeTemp := genruntime.ToEnum(administratorType, administratorProperties_AdministratorType_STATUS_Values) + administrator.AdministratorType = &administratorTypeTemp + } else { + administrator.AdministratorType = nil + } + + // Conditions + administrator.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + administrator.Id = genruntime.ClonePointerToString(source.Id) + + // IdentityResourceId + administrator.IdentityResourceId = genruntime.ClonePointerToString(source.IdentityResourceId) + + // Login + administrator.Login = genruntime.ClonePointerToString(source.Login) + + // Name + administrator.Name = genruntime.ClonePointerToString(source.Name) + + // Sid + administrator.Sid = genruntime.ClonePointerToString(source.Sid) + + // 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") + } + administrator.SystemData = &systemDatum + } else { + administrator.SystemData = nil + } + + // TenantId + administrator.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // Type + administrator.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersAdministrator_STATUS populates the provided destination FlexibleServersAdministrator_STATUS from our FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_STATUS) AssignProperties_To_FlexibleServersAdministrator_STATUS(destination *storage.FlexibleServersAdministrator_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdministratorType + if administrator.AdministratorType != nil { + administratorType := string(*administrator.AdministratorType) + destination.AdministratorType = &administratorType + } else { + destination.AdministratorType = nil + } + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(administrator.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(administrator.Id) + + // IdentityResourceId + destination.IdentityResourceId = genruntime.ClonePointerToString(administrator.IdentityResourceId) + + // Login + destination.Login = genruntime.ClonePointerToString(administrator.Login) + + // Name + destination.Name = genruntime.ClonePointerToString(administrator.Name) + + // Sid + destination.Sid = genruntime.ClonePointerToString(administrator.Sid) + + // SystemData + if administrator.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := administrator.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 + } + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(administrator.TenantId) + + // Type + destination.Type = genruntime.ClonePointerToString(administrator.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"ActiveDirectory"} +type AdministratorProperties_AdministratorType string + +const AdministratorProperties_AdministratorType_ActiveDirectory = AdministratorProperties_AdministratorType("ActiveDirectory") + +// Mapping from string to AdministratorProperties_AdministratorType +var administratorProperties_AdministratorType_Values = map[string]AdministratorProperties_AdministratorType{ + "activedirectory": AdministratorProperties_AdministratorType_ActiveDirectory, +} + +type AdministratorProperties_AdministratorType_STATUS string + +const AdministratorProperties_AdministratorType_STATUS_ActiveDirectory = AdministratorProperties_AdministratorType_STATUS("ActiveDirectory") + +// Mapping from string to AdministratorProperties_AdministratorType_STATUS +var administratorProperties_AdministratorType_STATUS_Values = map[string]AdministratorProperties_AdministratorType_STATUS{ + "activedirectory": AdministratorProperties_AdministratorType_STATUS_ActiveDirectory, +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServersAdministratorOperatorSpec 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_FlexibleServersAdministratorOperatorSpec populates our FlexibleServersAdministratorOperatorSpec from the provided source FlexibleServersAdministratorOperatorSpec +func (operator *FlexibleServersAdministratorOperatorSpec) AssignProperties_From_FlexibleServersAdministratorOperatorSpec(source *storage.FlexibleServersAdministratorOperatorSpec) 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_FlexibleServersAdministratorOperatorSpec populates the provided destination FlexibleServersAdministratorOperatorSpec from our FlexibleServersAdministratorOperatorSpec +func (operator *FlexibleServersAdministratorOperatorSpec) AssignProperties_To_FlexibleServersAdministratorOperatorSpec(destination *storage.FlexibleServersAdministratorOperatorSpec) 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 +} + +func init() { + SchemeBuilder.Register(&FlexibleServersAdministrator{}, &FlexibleServersAdministratorList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen_test.go b/v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen_test.go new file mode 100644 index 0000000000..78f56dd6df --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_administrator_types_gen_test.go @@ -0,0 +1,507 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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_FlexibleServersAdministrator_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 FlexibleServersAdministrator to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersAdministrator, FlexibleServersAdministratorGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersAdministrator tests if a specific instance of FlexibleServersAdministrator round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersAdministrator(subject FlexibleServersAdministrator) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersAdministrator + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersAdministrator + 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_FlexibleServersAdministrator_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministrator to FlexibleServersAdministrator via AssignProperties_To_FlexibleServersAdministrator & AssignProperties_From_FlexibleServersAdministrator returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministrator, FlexibleServersAdministratorGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministrator tests if a specific instance of FlexibleServersAdministrator can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministrator(subject FlexibleServersAdministrator) 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.FlexibleServersAdministrator + err := copied.AssignProperties_To_FlexibleServersAdministrator(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministrator + err = actual.AssignProperties_From_FlexibleServersAdministrator(&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_FlexibleServersAdministrator_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 FlexibleServersAdministrator via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator, FlexibleServersAdministratorGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator runs a test to see if a specific instance of FlexibleServersAdministrator round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator(subject FlexibleServersAdministrator) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator + 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 FlexibleServersAdministrator instances for property testing - lazily instantiated by +// FlexibleServersAdministratorGenerator() +var flexibleServersAdministratorGenerator gopter.Gen + +// FlexibleServersAdministratorGenerator returns a generator of FlexibleServersAdministrator instances for property testing. +func FlexibleServersAdministratorGenerator() gopter.Gen { + if flexibleServersAdministratorGenerator != nil { + return flexibleServersAdministratorGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator(generators) + flexibleServersAdministratorGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator{}), generators) + + return flexibleServersAdministratorGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersAdministrator_SpecGenerator() + gens["Status"] = FlexibleServersAdministrator_STATUSGenerator() +} + +func Test_FlexibleServersAdministratorOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministratorOperatorSpec to FlexibleServersAdministratorOperatorSpec via AssignProperties_To_FlexibleServersAdministratorOperatorSpec & AssignProperties_From_FlexibleServersAdministratorOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec, FlexibleServersAdministratorOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec tests if a specific instance of FlexibleServersAdministratorOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministratorOperatorSpec(subject FlexibleServersAdministratorOperatorSpec) 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.FlexibleServersAdministratorOperatorSpec + err := copied.AssignProperties_To_FlexibleServersAdministratorOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministratorOperatorSpec + err = actual.AssignProperties_From_FlexibleServersAdministratorOperatorSpec(&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_FlexibleServersAdministratorOperatorSpec_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 FlexibleServersAdministratorOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministratorOperatorSpec, FlexibleServersAdministratorOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministratorOperatorSpec runs a test to see if a specific instance of FlexibleServersAdministratorOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministratorOperatorSpec(subject FlexibleServersAdministratorOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministratorOperatorSpec + 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 FlexibleServersAdministratorOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersAdministratorOperatorSpecGenerator() +var flexibleServersAdministratorOperatorSpecGenerator gopter.Gen + +// FlexibleServersAdministratorOperatorSpecGenerator returns a generator of FlexibleServersAdministratorOperatorSpec instances for property testing. +func FlexibleServersAdministratorOperatorSpecGenerator() gopter.Gen { + if flexibleServersAdministratorOperatorSpecGenerator != nil { + return flexibleServersAdministratorOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersAdministratorOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministratorOperatorSpec{}), generators) + + return flexibleServersAdministratorOperatorSpecGenerator +} + +func Test_FlexibleServersAdministrator_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministrator_STATUS to FlexibleServersAdministrator_STATUS via AssignProperties_To_FlexibleServersAdministrator_STATUS & AssignProperties_From_FlexibleServersAdministrator_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS, FlexibleServersAdministrator_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS tests if a specific instance of FlexibleServersAdministrator_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministrator_STATUS(subject FlexibleServersAdministrator_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.FlexibleServersAdministrator_STATUS + err := copied.AssignProperties_To_FlexibleServersAdministrator_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministrator_STATUS + err = actual.AssignProperties_From_FlexibleServersAdministrator_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_FlexibleServersAdministrator_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 FlexibleServersAdministrator_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator_STATUS, FlexibleServersAdministrator_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator_STATUS runs a test to see if a specific instance of FlexibleServersAdministrator_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator_STATUS(subject FlexibleServersAdministrator_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator_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 FlexibleServersAdministrator_STATUS instances for property testing - lazily instantiated by +// FlexibleServersAdministrator_STATUSGenerator() +var flexibleServersAdministrator_STATUSGenerator gopter.Gen + +// FlexibleServersAdministrator_STATUSGenerator returns a generator of FlexibleServersAdministrator_STATUS instances for property testing. +// We first initialize flexibleServersAdministrator_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 FlexibleServersAdministrator_STATUSGenerator() gopter.Gen { + if flexibleServersAdministrator_STATUSGenerator != nil { + return flexibleServersAdministrator_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + flexibleServersAdministrator_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + flexibleServersAdministrator_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_STATUS{}), generators) + + return flexibleServersAdministrator_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map[string]gopter.Gen) { + gens["AdministratorType"] = gen.PtrOf(gen.OneConstOf(AdministratorProperties_AdministratorType_STATUS_ActiveDirectory)) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["IdentityResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["Login"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Sid"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersAdministrator_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersAdministrator_Spec to FlexibleServersAdministrator_Spec via AssignProperties_To_FlexibleServersAdministrator_Spec & AssignProperties_From_FlexibleServersAdministrator_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec, FlexibleServersAdministrator_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec tests if a specific instance of FlexibleServersAdministrator_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersAdministrator_Spec(subject FlexibleServersAdministrator_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.FlexibleServersAdministrator_Spec + err := copied.AssignProperties_To_FlexibleServersAdministrator_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersAdministrator_Spec + err = actual.AssignProperties_From_FlexibleServersAdministrator_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_FlexibleServersAdministrator_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 FlexibleServersAdministrator_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator_Spec, FlexibleServersAdministrator_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator_Spec runs a test to see if a specific instance of FlexibleServersAdministrator_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator_Spec(subject FlexibleServersAdministrator_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator_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 FlexibleServersAdministrator_Spec instances for property testing - lazily instantiated by +// FlexibleServersAdministrator_SpecGenerator() +var flexibleServersAdministrator_SpecGenerator gopter.Gen + +// FlexibleServersAdministrator_SpecGenerator returns a generator of FlexibleServersAdministrator_Spec instances for property testing. +// We first initialize flexibleServersAdministrator_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 FlexibleServersAdministrator_SpecGenerator() gopter.Gen { + if flexibleServersAdministrator_SpecGenerator != nil { + return flexibleServersAdministrator_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + flexibleServersAdministrator_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + flexibleServersAdministrator_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_Spec{}), generators) + + return flexibleServersAdministrator_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(gens map[string]gopter.Gen) { + gens["AdministratorType"] = gen.PtrOf(gen.OneConstOf(AdministratorProperties_AdministratorType_ActiveDirectory)) + gens["Login"] = gen.PtrOf(gen.AlphaString()) + gens["Sid"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersAdministratorOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen.go b/v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen.go new file mode 100644 index 0000000000..f57b860804 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen.go @@ -0,0 +1,1284 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/arm" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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: /mysql/resource-manager/Microsoft.DBforMySQL/Configurations/stable/2023-12-30/Configurations.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/configurations/{configurationName} +type FlexibleServersConfiguration struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersConfiguration_Spec `json:"spec,omitempty"` + Status FlexibleServersConfiguration_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersConfiguration{} + +// GetConditions returns the conditions of the resource +func (configuration *FlexibleServersConfiguration) GetConditions() conditions.Conditions { + return configuration.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (configuration *FlexibleServersConfiguration) SetConditions(conditions conditions.Conditions) { + configuration.Status.Conditions = conditions +} + +var _ conversion.Convertible = &FlexibleServersConfiguration{} + +// ConvertFrom populates our FlexibleServersConfiguration from the provided hub FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersConfiguration) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersConfiguration but received %T instead", hub) + } + + return configuration.AssignProperties_From_FlexibleServersConfiguration(source) +} + +// ConvertTo populates the provided hub FlexibleServersConfiguration from our FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersConfiguration) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersConfiguration but received %T instead", hub) + } + + return configuration.AssignProperties_To_FlexibleServersConfiguration(destination) +} + +// +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20231230-flexibleserversconfiguration,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversconfigurations,verbs=create;update,versions=v1api20231230,name=default.v1api20231230.flexibleserversconfigurations.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &FlexibleServersConfiguration{} + +// Default applies defaults to the FlexibleServersConfiguration resource +func (configuration *FlexibleServersConfiguration) Default() { + configuration.defaultImpl() + var temp any = configuration + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (configuration *FlexibleServersConfiguration) defaultAzureName() { + if configuration.Spec.AzureName == "" { + configuration.Spec.AzureName = configuration.Name + } +} + +// defaultImpl applies the code generated defaults to the FlexibleServersConfiguration resource +func (configuration *FlexibleServersConfiguration) defaultImpl() { configuration.defaultAzureName() } + +var _ configmaps.Exporter = &FlexibleServersConfiguration{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (configuration *FlexibleServersConfiguration) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if configuration.Spec.OperatorSpec == nil { + return nil + } + return configuration.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersConfiguration{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (configuration *FlexibleServersConfiguration) SecretDestinationExpressions() []*core.DestinationExpression { + if configuration.Spec.OperatorSpec == nil { + return nil + } + return configuration.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &FlexibleServersConfiguration{} + +// InitializeSpec initializes the spec for this resource from the given status +func (configuration *FlexibleServersConfiguration) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*FlexibleServersConfiguration_STATUS); ok { + return configuration.Spec.Initialize_From_FlexibleServersConfiguration_STATUS(s) + } + + return fmt.Errorf("expected Status of type FlexibleServersConfiguration_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &FlexibleServersConfiguration{} + +// AzureName returns the Azure name of the resource +func (configuration *FlexibleServersConfiguration) AzureName() string { + return configuration.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (configuration FlexibleServersConfiguration) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (configuration *FlexibleServersConfiguration) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (configuration *FlexibleServersConfiguration) GetSpec() genruntime.ConvertibleSpec { + return &configuration.Spec +} + +// GetStatus returns the status of this resource +func (configuration *FlexibleServersConfiguration) GetStatus() genruntime.ConvertibleStatus { + return &configuration.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (configuration *FlexibleServersConfiguration) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/configurations" +func (configuration *FlexibleServersConfiguration) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/configurations" +} + +// NewEmptyStatus returns a new empty (blank) status +func (configuration *FlexibleServersConfiguration) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersConfiguration_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (configuration *FlexibleServersConfiguration) Owner() *genruntime.ResourceReference { + if configuration.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(configuration.Spec) + return configuration.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (configuration *FlexibleServersConfiguration) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersConfiguration_STATUS); ok { + configuration.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersConfiguration_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + configuration.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-dbformysql-azure-com-v1api20231230-flexibleserversconfiguration,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversconfigurations,verbs=create;update,versions=v1api20231230,name=validate.v1api20231230.flexibleserversconfigurations.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &FlexibleServersConfiguration{} + +// ValidateCreate validates the creation of the resource +func (configuration *FlexibleServersConfiguration) ValidateCreate() (admission.Warnings, error) { + validations := configuration.createValidations() + var temp any = configuration + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (configuration *FlexibleServersConfiguration) ValidateDelete() (admission.Warnings, error) { + validations := configuration.deleteValidations() + var temp any = configuration + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (configuration *FlexibleServersConfiguration) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := configuration.updateValidations() + var temp any = configuration + 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 (configuration *FlexibleServersConfiguration) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){configuration.validateResourceReferences, configuration.validateOwnerReference, configuration.validateSecretDestinations, configuration.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (configuration *FlexibleServersConfiguration) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (configuration *FlexibleServersConfiguration) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return configuration.validateResourceReferences() + }, + configuration.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return configuration.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return configuration.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return configuration.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (configuration *FlexibleServersConfiguration) validateConfigMapDestinations() (admission.Warnings, error) { + if configuration.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(configuration, nil, configuration.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (configuration *FlexibleServersConfiguration) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(configuration) +} + +// validateResourceReferences validates all resource references +func (configuration *FlexibleServersConfiguration) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&configuration.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (configuration *FlexibleServersConfiguration) validateSecretDestinations() (admission.Warnings, error) { + if configuration.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(configuration, nil, configuration.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (configuration *FlexibleServersConfiguration) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*FlexibleServersConfiguration) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, configuration) +} + +// AssignProperties_From_FlexibleServersConfiguration populates our FlexibleServersConfiguration from the provided source FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) AssignProperties_From_FlexibleServersConfiguration(source *storage.FlexibleServersConfiguration) error { + + // ObjectMeta + configuration.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersConfiguration_Spec + err := spec.AssignProperties_From_FlexibleServersConfiguration_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersConfiguration_Spec() to populate field Spec") + } + configuration.Spec = spec + + // Status + var status FlexibleServersConfiguration_STATUS + err = status.AssignProperties_From_FlexibleServersConfiguration_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersConfiguration_STATUS() to populate field Status") + } + configuration.Status = status + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfiguration populates the provided destination FlexibleServersConfiguration from our FlexibleServersConfiguration +func (configuration *FlexibleServersConfiguration) AssignProperties_To_FlexibleServersConfiguration(destination *storage.FlexibleServersConfiguration) error { + + // ObjectMeta + destination.ObjectMeta = *configuration.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersConfiguration_Spec + err := configuration.Spec.AssignProperties_To_FlexibleServersConfiguration_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersConfiguration_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersConfiguration_STATUS + err = configuration.Status.AssignProperties_To_FlexibleServersConfiguration_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersConfiguration_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 (configuration *FlexibleServersConfiguration) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: configuration.Spec.OriginalVersion(), + Kind: "FlexibleServersConfiguration", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Configurations/stable/2023-12-30/Configurations.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/configurations/{configurationName} +type FlexibleServersConfigurationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersConfiguration `json:"items"` +} + +type FlexibleServersConfiguration_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"` + + // CurrentValue: Current value of the configuration. + CurrentValue *string `json:"currentValue,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *FlexibleServersConfigurationOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + + // Source: Source of the configuration. + Source *ConfigurationProperties_Source `json:"source,omitempty"` + + // Value: Value of the configuration. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ARMTransformer = &FlexibleServersConfiguration_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (configuration *FlexibleServersConfiguration_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if configuration == nil { + return nil, nil + } + result := &arm.FlexibleServersConfiguration_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if configuration.CurrentValue != nil || + configuration.Source != nil || + configuration.Value != nil { + result.Properties = &arm.ConfigurationProperties{} + } + if configuration.CurrentValue != nil { + currentValue := *configuration.CurrentValue + result.Properties.CurrentValue = ¤tValue + } + if configuration.Source != nil { + var temp string + temp = string(*configuration.Source) + source := arm.ConfigurationProperties_Source(temp) + result.Properties.Source = &source + } + if configuration.Value != nil { + value := *configuration.Value + result.Properties.Value = &value + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (configuration *FlexibleServersConfiguration_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersConfiguration_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (configuration *FlexibleServersConfiguration_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersConfiguration_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersConfiguration_Spec, got %T", armInput) + } + + // Set property "AzureName": + configuration.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "CurrentValue": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CurrentValue != nil { + currentValue := *typedInput.Properties.CurrentValue + configuration.CurrentValue = ¤tValue + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + configuration.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "Source": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Source != nil { + var temp string + temp = string(*typedInput.Properties.Source) + source := ConfigurationProperties_Source(temp) + configuration.Source = &source + } + } + + // Set property "Value": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Value != nil { + value := *typedInput.Properties.Value + configuration.Value = &value + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersConfiguration_Spec{} + +// ConvertSpecFrom populates our FlexibleServersConfiguration_Spec from the provided source +func (configuration *FlexibleServersConfiguration_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.FlexibleServersConfiguration_Spec) + if ok { + // Populate our instance from source + return configuration.AssignProperties_From_FlexibleServersConfiguration_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersConfiguration_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = configuration.AssignProperties_From_FlexibleServersConfiguration_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersConfiguration_Spec +func (configuration *FlexibleServersConfiguration_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.FlexibleServersConfiguration_Spec) + if ok { + // Populate destination from our instance + return configuration.AssignProperties_To_FlexibleServersConfiguration_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersConfiguration_Spec{} + err := configuration.AssignProperties_To_FlexibleServersConfiguration_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_FlexibleServersConfiguration_Spec populates our FlexibleServersConfiguration_Spec from the provided source FlexibleServersConfiguration_Spec +func (configuration *FlexibleServersConfiguration_Spec) AssignProperties_From_FlexibleServersConfiguration_Spec(source *storage.FlexibleServersConfiguration_Spec) error { + + // AzureName + configuration.AzureName = source.AzureName + + // CurrentValue + configuration.CurrentValue = genruntime.ClonePointerToString(source.CurrentValue) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersConfigurationOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersConfigurationOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersConfigurationOperatorSpec() to populate field OperatorSpec") + } + configuration.OperatorSpec = &operatorSpec + } else { + configuration.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + configuration.Owner = &owner + } else { + configuration.Owner = nil + } + + // Source + if source.Source != nil { + sourceValue := *source.Source + sourceTemp := genruntime.ToEnum(sourceValue, configurationProperties_Source_Values) + configuration.Source = &sourceTemp + } else { + configuration.Source = nil + } + + // Value + configuration.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfiguration_Spec populates the provided destination FlexibleServersConfiguration_Spec from our FlexibleServersConfiguration_Spec +func (configuration *FlexibleServersConfiguration_Spec) AssignProperties_To_FlexibleServersConfiguration_Spec(destination *storage.FlexibleServersConfiguration_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = configuration.AzureName + + // CurrentValue + destination.CurrentValue = genruntime.ClonePointerToString(configuration.CurrentValue) + + // OperatorSpec + if configuration.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersConfigurationOperatorSpec + err := configuration.OperatorSpec.AssignProperties_To_FlexibleServersConfigurationOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersConfigurationOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = configuration.OriginalVersion() + + // Owner + if configuration.Owner != nil { + owner := configuration.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Source + if configuration.Source != nil { + source := string(*configuration.Source) + destination.Source = &source + } else { + destination.Source = nil + } + + // Value + destination.Value = genruntime.ClonePointerToString(configuration.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_FlexibleServersConfiguration_STATUS populates our FlexibleServersConfiguration_Spec from the provided source FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_Spec) Initialize_From_FlexibleServersConfiguration_STATUS(source *FlexibleServersConfiguration_STATUS) error { + + // CurrentValue + configuration.CurrentValue = genruntime.ClonePointerToString(source.CurrentValue) + + // Source + if source.Source != nil { + sourceAsConfigurationProperties_Source := genruntime.ToEnum(string(*source.Source), configurationProperties_Source_Values) + configuration.Source = &sourceAsConfigurationProperties_Source + } else { + configuration.Source = nil + } + + // Value + configuration.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (configuration *FlexibleServersConfiguration_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (configuration *FlexibleServersConfiguration_Spec) SetAzureName(azureName string) { + configuration.AzureName = azureName +} + +type FlexibleServersConfiguration_STATUS struct { + // AllowedValues: Allowed values of the configuration. + AllowedValues *string `json:"allowedValues,omitempty"` + + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // CurrentValue: Current value of the configuration. + CurrentValue *string `json:"currentValue,omitempty"` + + // DataType: Data type of the configuration. + DataType *string `json:"dataType,omitempty"` + + // DefaultValue: Default value of the configuration. + DefaultValue *string `json:"defaultValue,omitempty"` + + // Description: Description of the configuration. + Description *string `json:"description,omitempty"` + + // DocumentationLink: The link used to get the document from community or Azure site. + DocumentationLink *string `json:"documentationLink,omitempty"` + + // Id: Fully qualified resource ID for the resource. E.g. + // "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}" + Id *string `json:"id,omitempty"` + + // IsConfigPendingRestart: If is the configuration pending restart or not. + IsConfigPendingRestart *ConfigurationProperties_IsConfigPendingRestart_STATUS `json:"isConfigPendingRestart,omitempty"` + + // IsDynamicConfig: If is the configuration dynamic. + IsDynamicConfig *ConfigurationProperties_IsDynamicConfig_STATUS `json:"isDynamicConfig,omitempty"` + + // IsReadOnly: If is the configuration read only. + IsReadOnly *ConfigurationProperties_IsReadOnly_STATUS `json:"isReadOnly,omitempty"` + + // Name: The name of the resource + Name *string `json:"name,omitempty"` + + // Source: Source of the configuration. + Source *ConfigurationProperties_Source_STATUS `json:"source,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"` + + // Value: Value of the configuration. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServersConfiguration_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersConfiguration_STATUS from the provided source +func (configuration *FlexibleServersConfiguration_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.FlexibleServersConfiguration_STATUS) + if ok { + // Populate our instance from source + return configuration.AssignProperties_From_FlexibleServersConfiguration_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersConfiguration_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = configuration.AssignProperties_From_FlexibleServersConfiguration_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.FlexibleServersConfiguration_STATUS) + if ok { + // Populate destination from our instance + return configuration.AssignProperties_To_FlexibleServersConfiguration_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersConfiguration_STATUS{} + err := configuration.AssignProperties_To_FlexibleServersConfiguration_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 = &FlexibleServersConfiguration_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (configuration *FlexibleServersConfiguration_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersConfiguration_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (configuration *FlexibleServersConfiguration_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersConfiguration_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersConfiguration_STATUS, got %T", armInput) + } + + // Set property "AllowedValues": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AllowedValues != nil { + allowedValues := *typedInput.Properties.AllowedValues + configuration.AllowedValues = &allowedValues + } + } + + // no assignment for property "Conditions" + + // Set property "CurrentValue": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CurrentValue != nil { + currentValue := *typedInput.Properties.CurrentValue + configuration.CurrentValue = ¤tValue + } + } + + // Set property "DataType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataType != nil { + dataType := *typedInput.Properties.DataType + configuration.DataType = &dataType + } + } + + // Set property "DefaultValue": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DefaultValue != nil { + defaultValue := *typedInput.Properties.DefaultValue + configuration.DefaultValue = &defaultValue + } + } + + // Set property "Description": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Description != nil { + description := *typedInput.Properties.Description + configuration.Description = &description + } + } + + // Set property "DocumentationLink": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DocumentationLink != nil { + documentationLink := *typedInput.Properties.DocumentationLink + configuration.DocumentationLink = &documentationLink + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + configuration.Id = &id + } + + // Set property "IsConfigPendingRestart": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.IsConfigPendingRestart != nil { + var temp string + temp = string(*typedInput.Properties.IsConfigPendingRestart) + isConfigPendingRestart := ConfigurationProperties_IsConfigPendingRestart_STATUS(temp) + configuration.IsConfigPendingRestart = &isConfigPendingRestart + } + } + + // Set property "IsDynamicConfig": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.IsDynamicConfig != nil { + var temp string + temp = string(*typedInput.Properties.IsDynamicConfig) + isDynamicConfig := ConfigurationProperties_IsDynamicConfig_STATUS(temp) + configuration.IsDynamicConfig = &isDynamicConfig + } + } + + // Set property "IsReadOnly": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.IsReadOnly != nil { + var temp string + temp = string(*typedInput.Properties.IsReadOnly) + isReadOnly := ConfigurationProperties_IsReadOnly_STATUS(temp) + configuration.IsReadOnly = &isReadOnly + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + configuration.Name = &name + } + + // Set property "Source": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Source != nil { + var temp string + temp = string(*typedInput.Properties.Source) + source := ConfigurationProperties_Source_STATUS(temp) + configuration.Source = &source + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + configuration.SystemData = &systemData + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + configuration.Type = &typeVar + } + + // Set property "Value": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Value != nil { + value := *typedInput.Properties.Value + configuration.Value = &value + } + } + + // No error + return nil +} + +// AssignProperties_From_FlexibleServersConfiguration_STATUS populates our FlexibleServersConfiguration_STATUS from the provided source FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_STATUS) AssignProperties_From_FlexibleServersConfiguration_STATUS(source *storage.FlexibleServersConfiguration_STATUS) error { + + // AllowedValues + configuration.AllowedValues = genruntime.ClonePointerToString(source.AllowedValues) + + // Conditions + configuration.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CurrentValue + configuration.CurrentValue = genruntime.ClonePointerToString(source.CurrentValue) + + // DataType + configuration.DataType = genruntime.ClonePointerToString(source.DataType) + + // DefaultValue + configuration.DefaultValue = genruntime.ClonePointerToString(source.DefaultValue) + + // Description + configuration.Description = genruntime.ClonePointerToString(source.Description) + + // DocumentationLink + configuration.DocumentationLink = genruntime.ClonePointerToString(source.DocumentationLink) + + // Id + configuration.Id = genruntime.ClonePointerToString(source.Id) + + // IsConfigPendingRestart + if source.IsConfigPendingRestart != nil { + isConfigPendingRestart := *source.IsConfigPendingRestart + isConfigPendingRestartTemp := genruntime.ToEnum(isConfigPendingRestart, configurationProperties_IsConfigPendingRestart_STATUS_Values) + configuration.IsConfigPendingRestart = &isConfigPendingRestartTemp + } else { + configuration.IsConfigPendingRestart = nil + } + + // IsDynamicConfig + if source.IsDynamicConfig != nil { + isDynamicConfig := *source.IsDynamicConfig + isDynamicConfigTemp := genruntime.ToEnum(isDynamicConfig, configurationProperties_IsDynamicConfig_STATUS_Values) + configuration.IsDynamicConfig = &isDynamicConfigTemp + } else { + configuration.IsDynamicConfig = nil + } + + // IsReadOnly + if source.IsReadOnly != nil { + isReadOnly := *source.IsReadOnly + isReadOnlyTemp := genruntime.ToEnum(isReadOnly, configurationProperties_IsReadOnly_STATUS_Values) + configuration.IsReadOnly = &isReadOnlyTemp + } else { + configuration.IsReadOnly = nil + } + + // Name + configuration.Name = genruntime.ClonePointerToString(source.Name) + + // Source + if source.Source != nil { + sourceValue := *source.Source + sourceTemp := genruntime.ToEnum(sourceValue, configurationProperties_Source_STATUS_Values) + configuration.Source = &sourceTemp + } else { + configuration.Source = 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") + } + configuration.SystemData = &systemDatum + } else { + configuration.SystemData = nil + } + + // Type + configuration.Type = genruntime.ClonePointerToString(source.Type) + + // Value + configuration.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersConfiguration_STATUS populates the provided destination FlexibleServersConfiguration_STATUS from our FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_STATUS) AssignProperties_To_FlexibleServersConfiguration_STATUS(destination *storage.FlexibleServersConfiguration_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AllowedValues + destination.AllowedValues = genruntime.ClonePointerToString(configuration.AllowedValues) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(configuration.Conditions) + + // CurrentValue + destination.CurrentValue = genruntime.ClonePointerToString(configuration.CurrentValue) + + // DataType + destination.DataType = genruntime.ClonePointerToString(configuration.DataType) + + // DefaultValue + destination.DefaultValue = genruntime.ClonePointerToString(configuration.DefaultValue) + + // Description + destination.Description = genruntime.ClonePointerToString(configuration.Description) + + // DocumentationLink + destination.DocumentationLink = genruntime.ClonePointerToString(configuration.DocumentationLink) + + // Id + destination.Id = genruntime.ClonePointerToString(configuration.Id) + + // IsConfigPendingRestart + if configuration.IsConfigPendingRestart != nil { + isConfigPendingRestart := string(*configuration.IsConfigPendingRestart) + destination.IsConfigPendingRestart = &isConfigPendingRestart + } else { + destination.IsConfigPendingRestart = nil + } + + // IsDynamicConfig + if configuration.IsDynamicConfig != nil { + isDynamicConfig := string(*configuration.IsDynamicConfig) + destination.IsDynamicConfig = &isDynamicConfig + } else { + destination.IsDynamicConfig = nil + } + + // IsReadOnly + if configuration.IsReadOnly != nil { + isReadOnly := string(*configuration.IsReadOnly) + destination.IsReadOnly = &isReadOnly + } else { + destination.IsReadOnly = nil + } + + // Name + destination.Name = genruntime.ClonePointerToString(configuration.Name) + + // Source + if configuration.Source != nil { + source := string(*configuration.Source) + destination.Source = &source + } else { + destination.Source = nil + } + + // SystemData + if configuration.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := configuration.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(configuration.Type) + + // Value + destination.Value = genruntime.ClonePointerToString(configuration.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type ConfigurationProperties_IsConfigPendingRestart_STATUS string + +const ( + ConfigurationProperties_IsConfigPendingRestart_STATUS_False = ConfigurationProperties_IsConfigPendingRestart_STATUS("False") + ConfigurationProperties_IsConfigPendingRestart_STATUS_True = ConfigurationProperties_IsConfigPendingRestart_STATUS("True") +) + +// Mapping from string to ConfigurationProperties_IsConfigPendingRestart_STATUS +var configurationProperties_IsConfigPendingRestart_STATUS_Values = map[string]ConfigurationProperties_IsConfigPendingRestart_STATUS{ + "false": ConfigurationProperties_IsConfigPendingRestart_STATUS_False, + "true": ConfigurationProperties_IsConfigPendingRestart_STATUS_True, +} + +type ConfigurationProperties_IsDynamicConfig_STATUS string + +const ( + ConfigurationProperties_IsDynamicConfig_STATUS_False = ConfigurationProperties_IsDynamicConfig_STATUS("False") + ConfigurationProperties_IsDynamicConfig_STATUS_True = ConfigurationProperties_IsDynamicConfig_STATUS("True") +) + +// Mapping from string to ConfigurationProperties_IsDynamicConfig_STATUS +var configurationProperties_IsDynamicConfig_STATUS_Values = map[string]ConfigurationProperties_IsDynamicConfig_STATUS{ + "false": ConfigurationProperties_IsDynamicConfig_STATUS_False, + "true": ConfigurationProperties_IsDynamicConfig_STATUS_True, +} + +type ConfigurationProperties_IsReadOnly_STATUS string + +const ( + ConfigurationProperties_IsReadOnly_STATUS_False = ConfigurationProperties_IsReadOnly_STATUS("False") + ConfigurationProperties_IsReadOnly_STATUS_True = ConfigurationProperties_IsReadOnly_STATUS("True") +) + +// Mapping from string to ConfigurationProperties_IsReadOnly_STATUS +var configurationProperties_IsReadOnly_STATUS_Values = map[string]ConfigurationProperties_IsReadOnly_STATUS{ + "false": ConfigurationProperties_IsReadOnly_STATUS_False, + "true": ConfigurationProperties_IsReadOnly_STATUS_True, +} + +// +kubebuilder:validation:Enum={"system-default","user-override"} +type ConfigurationProperties_Source string + +const ( + ConfigurationProperties_Source_SystemDefault = ConfigurationProperties_Source("system-default") + ConfigurationProperties_Source_UserOverride = ConfigurationProperties_Source("user-override") +) + +// Mapping from string to ConfigurationProperties_Source +var configurationProperties_Source_Values = map[string]ConfigurationProperties_Source{ + "system-default": ConfigurationProperties_Source_SystemDefault, + "user-override": ConfigurationProperties_Source_UserOverride, +} + +type ConfigurationProperties_Source_STATUS string + +const ( + ConfigurationProperties_Source_STATUS_SystemDefault = ConfigurationProperties_Source_STATUS("system-default") + ConfigurationProperties_Source_STATUS_UserOverride = ConfigurationProperties_Source_STATUS("user-override") +) + +// Mapping from string to ConfigurationProperties_Source_STATUS +var configurationProperties_Source_STATUS_Values = map[string]ConfigurationProperties_Source_STATUS{ + "system-default": ConfigurationProperties_Source_STATUS_SystemDefault, + "user-override": ConfigurationProperties_Source_STATUS_UserOverride, +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServersConfigurationOperatorSpec 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_FlexibleServersConfigurationOperatorSpec populates our FlexibleServersConfigurationOperatorSpec from the provided source FlexibleServersConfigurationOperatorSpec +func (operator *FlexibleServersConfigurationOperatorSpec) AssignProperties_From_FlexibleServersConfigurationOperatorSpec(source *storage.FlexibleServersConfigurationOperatorSpec) 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_FlexibleServersConfigurationOperatorSpec populates the provided destination FlexibleServersConfigurationOperatorSpec from our FlexibleServersConfigurationOperatorSpec +func (operator *FlexibleServersConfigurationOperatorSpec) AssignProperties_To_FlexibleServersConfigurationOperatorSpec(destination *storage.FlexibleServersConfigurationOperatorSpec) 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 +} + +func init() { + SchemeBuilder.Register(&FlexibleServersConfiguration{}, &FlexibleServersConfigurationList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen_test.go b/v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen_test.go new file mode 100644 index 0000000000..0459ec6ba8 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_configuration_types_gen_test.go @@ -0,0 +1,513 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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_FlexibleServersConfiguration_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 FlexibleServersConfiguration to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersConfiguration, FlexibleServersConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersConfiguration tests if a specific instance of FlexibleServersConfiguration round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersConfiguration(subject FlexibleServersConfiguration) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersConfiguration + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersConfiguration + 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_FlexibleServersConfiguration_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfiguration to FlexibleServersConfiguration via AssignProperties_To_FlexibleServersConfiguration & AssignProperties_From_FlexibleServersConfiguration returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfiguration, FlexibleServersConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfiguration tests if a specific instance of FlexibleServersConfiguration can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfiguration(subject FlexibleServersConfiguration) 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.FlexibleServersConfiguration + err := copied.AssignProperties_To_FlexibleServersConfiguration(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfiguration + err = actual.AssignProperties_From_FlexibleServersConfiguration(&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_FlexibleServersConfiguration_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 FlexibleServersConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration, FlexibleServersConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration runs a test to see if a specific instance of FlexibleServersConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration(subject FlexibleServersConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration + 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 FlexibleServersConfiguration instances for property testing - lazily instantiated by +// FlexibleServersConfigurationGenerator() +var flexibleServersConfigurationGenerator gopter.Gen + +// FlexibleServersConfigurationGenerator returns a generator of FlexibleServersConfiguration instances for property testing. +func FlexibleServersConfigurationGenerator() gopter.Gen { + if flexibleServersConfigurationGenerator != nil { + return flexibleServersConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration(generators) + flexibleServersConfigurationGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration{}), generators) + + return flexibleServersConfigurationGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersConfiguration_SpecGenerator() + gens["Status"] = FlexibleServersConfiguration_STATUSGenerator() +} + +func Test_FlexibleServersConfigurationOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfigurationOperatorSpec to FlexibleServersConfigurationOperatorSpec via AssignProperties_To_FlexibleServersConfigurationOperatorSpec & AssignProperties_From_FlexibleServersConfigurationOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec, FlexibleServersConfigurationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec tests if a specific instance of FlexibleServersConfigurationOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfigurationOperatorSpec(subject FlexibleServersConfigurationOperatorSpec) 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.FlexibleServersConfigurationOperatorSpec + err := copied.AssignProperties_To_FlexibleServersConfigurationOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfigurationOperatorSpec + err = actual.AssignProperties_From_FlexibleServersConfigurationOperatorSpec(&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_FlexibleServersConfigurationOperatorSpec_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 FlexibleServersConfigurationOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfigurationOperatorSpec, FlexibleServersConfigurationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfigurationOperatorSpec runs a test to see if a specific instance of FlexibleServersConfigurationOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfigurationOperatorSpec(subject FlexibleServersConfigurationOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfigurationOperatorSpec + 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 FlexibleServersConfigurationOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersConfigurationOperatorSpecGenerator() +var flexibleServersConfigurationOperatorSpecGenerator gopter.Gen + +// FlexibleServersConfigurationOperatorSpecGenerator returns a generator of FlexibleServersConfigurationOperatorSpec instances for property testing. +func FlexibleServersConfigurationOperatorSpecGenerator() gopter.Gen { + if flexibleServersConfigurationOperatorSpecGenerator != nil { + return flexibleServersConfigurationOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersConfigurationOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfigurationOperatorSpec{}), generators) + + return flexibleServersConfigurationOperatorSpecGenerator +} + +func Test_FlexibleServersConfiguration_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfiguration_STATUS to FlexibleServersConfiguration_STATUS via AssignProperties_To_FlexibleServersConfiguration_STATUS & AssignProperties_From_FlexibleServersConfiguration_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS, FlexibleServersConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS tests if a specific instance of FlexibleServersConfiguration_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfiguration_STATUS(subject FlexibleServersConfiguration_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.FlexibleServersConfiguration_STATUS + err := copied.AssignProperties_To_FlexibleServersConfiguration_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfiguration_STATUS + err = actual.AssignProperties_From_FlexibleServersConfiguration_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_FlexibleServersConfiguration_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 FlexibleServersConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration_STATUS, FlexibleServersConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration_STATUS runs a test to see if a specific instance of FlexibleServersConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration_STATUS(subject FlexibleServersConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration_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 FlexibleServersConfiguration_STATUS instances for property testing - lazily instantiated by +// FlexibleServersConfiguration_STATUSGenerator() +var flexibleServersConfiguration_STATUSGenerator gopter.Gen + +// FlexibleServersConfiguration_STATUSGenerator returns a generator of FlexibleServersConfiguration_STATUS instances for property testing. +// We first initialize flexibleServersConfiguration_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 FlexibleServersConfiguration_STATUSGenerator() gopter.Gen { + if flexibleServersConfiguration_STATUSGenerator != nil { + return flexibleServersConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + flexibleServersConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + flexibleServersConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_STATUS{}), generators) + + return flexibleServersConfiguration_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["AllowedValues"] = gen.PtrOf(gen.AlphaString()) + gens["CurrentValue"] = gen.PtrOf(gen.AlphaString()) + gens["DataType"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultValue"] = gen.PtrOf(gen.AlphaString()) + gens["Description"] = gen.PtrOf(gen.AlphaString()) + gens["DocumentationLink"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["IsConfigPendingRestart"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_IsConfigPendingRestart_STATUS_False, ConfigurationProperties_IsConfigPendingRestart_STATUS_True)) + gens["IsDynamicConfig"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_IsDynamicConfig_STATUS_False, ConfigurationProperties_IsDynamicConfig_STATUS_True)) + gens["IsReadOnly"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_IsReadOnly_STATUS_False, ConfigurationProperties_IsReadOnly_STATUS_True)) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Source"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_Source_STATUS_SystemDefault, ConfigurationProperties_Source_STATUS_UserOverride)) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersConfiguration_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersConfiguration_Spec to FlexibleServersConfiguration_Spec via AssignProperties_To_FlexibleServersConfiguration_Spec & AssignProperties_From_FlexibleServersConfiguration_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec, FlexibleServersConfiguration_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec tests if a specific instance of FlexibleServersConfiguration_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersConfiguration_Spec(subject FlexibleServersConfiguration_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.FlexibleServersConfiguration_Spec + err := copied.AssignProperties_To_FlexibleServersConfiguration_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersConfiguration_Spec + err = actual.AssignProperties_From_FlexibleServersConfiguration_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_FlexibleServersConfiguration_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 FlexibleServersConfiguration_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration_Spec, FlexibleServersConfiguration_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration_Spec runs a test to see if a specific instance of FlexibleServersConfiguration_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration_Spec(subject FlexibleServersConfiguration_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration_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 FlexibleServersConfiguration_Spec instances for property testing - lazily instantiated by +// FlexibleServersConfiguration_SpecGenerator() +var flexibleServersConfiguration_SpecGenerator gopter.Gen + +// FlexibleServersConfiguration_SpecGenerator returns a generator of FlexibleServersConfiguration_Spec instances for property testing. +// We first initialize flexibleServersConfiguration_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 FlexibleServersConfiguration_SpecGenerator() gopter.Gen { + if flexibleServersConfiguration_SpecGenerator != nil { + return flexibleServersConfiguration_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + flexibleServersConfiguration_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + flexibleServersConfiguration_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_Spec{}), generators) + + return flexibleServersConfiguration_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["CurrentValue"] = gen.PtrOf(gen.AlphaString()) + gens["Source"] = gen.PtrOf(gen.OneConstOf(ConfigurationProperties_Source_SystemDefault, ConfigurationProperties_Source_UserOverride)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersConfigurationOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen.go b/v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen.go new file mode 100644 index 0000000000..a8413c8908 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen.go @@ -0,0 +1,958 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/arm" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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: /mysql/resource-manager/Microsoft.DBforMySQL/Databases/stable/2023-12-30/Databases.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/databases/{databaseName} +type FlexibleServersDatabase struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersDatabase_Spec `json:"spec,omitempty"` + Status FlexibleServersDatabase_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersDatabase{} + +// GetConditions returns the conditions of the resource +func (database *FlexibleServersDatabase) GetConditions() conditions.Conditions { + return database.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (database *FlexibleServersDatabase) SetConditions(conditions conditions.Conditions) { + database.Status.Conditions = conditions +} + +var _ conversion.Convertible = &FlexibleServersDatabase{} + +// ConvertFrom populates our FlexibleServersDatabase from the provided hub FlexibleServersDatabase +func (database *FlexibleServersDatabase) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersDatabase) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersDatabase but received %T instead", hub) + } + + return database.AssignProperties_From_FlexibleServersDatabase(source) +} + +// ConvertTo populates the provided hub FlexibleServersDatabase from our FlexibleServersDatabase +func (database *FlexibleServersDatabase) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersDatabase) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersDatabase but received %T instead", hub) + } + + return database.AssignProperties_To_FlexibleServersDatabase(destination) +} + +// +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20231230-flexibleserversdatabase,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversdatabases,verbs=create;update,versions=v1api20231230,name=default.v1api20231230.flexibleserversdatabases.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &FlexibleServersDatabase{} + +// Default applies defaults to the FlexibleServersDatabase resource +func (database *FlexibleServersDatabase) Default() { + database.defaultImpl() + var temp any = database + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (database *FlexibleServersDatabase) defaultAzureName() { + if database.Spec.AzureName == "" { + database.Spec.AzureName = database.Name + } +} + +// defaultImpl applies the code generated defaults to the FlexibleServersDatabase resource +func (database *FlexibleServersDatabase) defaultImpl() { database.defaultAzureName() } + +var _ configmaps.Exporter = &FlexibleServersDatabase{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (database *FlexibleServersDatabase) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if database.Spec.OperatorSpec == nil { + return nil + } + return database.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersDatabase{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (database *FlexibleServersDatabase) SecretDestinationExpressions() []*core.DestinationExpression { + if database.Spec.OperatorSpec == nil { + return nil + } + return database.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &FlexibleServersDatabase{} + +// InitializeSpec initializes the spec for this resource from the given status +func (database *FlexibleServersDatabase) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*FlexibleServersDatabase_STATUS); ok { + return database.Spec.Initialize_From_FlexibleServersDatabase_STATUS(s) + } + + return fmt.Errorf("expected Status of type FlexibleServersDatabase_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &FlexibleServersDatabase{} + +// AzureName returns the Azure name of the resource +func (database *FlexibleServersDatabase) AzureName() string { + return database.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (database FlexibleServersDatabase) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (database *FlexibleServersDatabase) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (database *FlexibleServersDatabase) GetSpec() genruntime.ConvertibleSpec { + return &database.Spec +} + +// GetStatus returns the status of this resource +func (database *FlexibleServersDatabase) GetStatus() genruntime.ConvertibleStatus { + return &database.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (database *FlexibleServersDatabase) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/databases" +func (database *FlexibleServersDatabase) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/databases" +} + +// NewEmptyStatus returns a new empty (blank) status +func (database *FlexibleServersDatabase) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersDatabase_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (database *FlexibleServersDatabase) Owner() *genruntime.ResourceReference { + if database.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(database.Spec) + return database.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (database *FlexibleServersDatabase) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersDatabase_STATUS); ok { + database.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersDatabase_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + database.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-dbformysql-azure-com-v1api20231230-flexibleserversdatabase,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversdatabases,verbs=create;update,versions=v1api20231230,name=validate.v1api20231230.flexibleserversdatabases.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &FlexibleServersDatabase{} + +// ValidateCreate validates the creation of the resource +func (database *FlexibleServersDatabase) ValidateCreate() (admission.Warnings, error) { + validations := database.createValidations() + var temp any = database + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (database *FlexibleServersDatabase) ValidateDelete() (admission.Warnings, error) { + validations := database.deleteValidations() + var temp any = database + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (database *FlexibleServersDatabase) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := database.updateValidations() + var temp any = database + 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 (database *FlexibleServersDatabase) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){database.validateResourceReferences, database.validateOwnerReference, database.validateSecretDestinations, database.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (database *FlexibleServersDatabase) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (database *FlexibleServersDatabase) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return database.validateResourceReferences() + }, + database.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return database.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return database.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return database.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (database *FlexibleServersDatabase) validateConfigMapDestinations() (admission.Warnings, error) { + if database.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(database, nil, database.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (database *FlexibleServersDatabase) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(database) +} + +// validateResourceReferences validates all resource references +func (database *FlexibleServersDatabase) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&database.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (database *FlexibleServersDatabase) validateSecretDestinations() (admission.Warnings, error) { + if database.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(database, nil, database.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (database *FlexibleServersDatabase) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*FlexibleServersDatabase) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, database) +} + +// AssignProperties_From_FlexibleServersDatabase populates our FlexibleServersDatabase from the provided source FlexibleServersDatabase +func (database *FlexibleServersDatabase) AssignProperties_From_FlexibleServersDatabase(source *storage.FlexibleServersDatabase) error { + + // ObjectMeta + database.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersDatabase_Spec + err := spec.AssignProperties_From_FlexibleServersDatabase_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersDatabase_Spec() to populate field Spec") + } + database.Spec = spec + + // Status + var status FlexibleServersDatabase_STATUS + err = status.AssignProperties_From_FlexibleServersDatabase_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersDatabase_STATUS() to populate field Status") + } + database.Status = status + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabase populates the provided destination FlexibleServersDatabase from our FlexibleServersDatabase +func (database *FlexibleServersDatabase) AssignProperties_To_FlexibleServersDatabase(destination *storage.FlexibleServersDatabase) error { + + // ObjectMeta + destination.ObjectMeta = *database.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersDatabase_Spec + err := database.Spec.AssignProperties_To_FlexibleServersDatabase_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersDatabase_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersDatabase_STATUS + err = database.Status.AssignProperties_To_FlexibleServersDatabase_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersDatabase_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 (database *FlexibleServersDatabase) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: database.Spec.OriginalVersion(), + Kind: "FlexibleServersDatabase", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Databases/stable/2023-12-30/Databases.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/databases/{databaseName} +type FlexibleServersDatabaseList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersDatabase `json:"items"` +} + +type FlexibleServersDatabase_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"` + + // Charset: The charset of the database. + Charset *string `json:"charset,omitempty"` + + // Collation: The collation of the database. + Collation *string `json:"collation,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *FlexibleServersDatabaseOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` +} + +var _ genruntime.ARMTransformer = &FlexibleServersDatabase_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (database *FlexibleServersDatabase_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if database == nil { + return nil, nil + } + result := &arm.FlexibleServersDatabase_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if database.Charset != nil || database.Collation != nil { + result.Properties = &arm.DatabaseProperties{} + } + if database.Charset != nil { + charset := *database.Charset + result.Properties.Charset = &charset + } + if database.Collation != nil { + collation := *database.Collation + result.Properties.Collation = &collation + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (database *FlexibleServersDatabase_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersDatabase_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (database *FlexibleServersDatabase_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersDatabase_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersDatabase_Spec, got %T", armInput) + } + + // Set property "AzureName": + database.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "Charset": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Charset != nil { + charset := *typedInput.Properties.Charset + database.Charset = &charset + } + } + + // Set property "Collation": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Collation != nil { + collation := *typedInput.Properties.Collation + database.Collation = &collation + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + database.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersDatabase_Spec{} + +// ConvertSpecFrom populates our FlexibleServersDatabase_Spec from the provided source +func (database *FlexibleServersDatabase_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.FlexibleServersDatabase_Spec) + if ok { + // Populate our instance from source + return database.AssignProperties_From_FlexibleServersDatabase_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersDatabase_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = database.AssignProperties_From_FlexibleServersDatabase_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersDatabase_Spec +func (database *FlexibleServersDatabase_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.FlexibleServersDatabase_Spec) + if ok { + // Populate destination from our instance + return database.AssignProperties_To_FlexibleServersDatabase_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersDatabase_Spec{} + err := database.AssignProperties_To_FlexibleServersDatabase_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_FlexibleServersDatabase_Spec populates our FlexibleServersDatabase_Spec from the provided source FlexibleServersDatabase_Spec +func (database *FlexibleServersDatabase_Spec) AssignProperties_From_FlexibleServersDatabase_Spec(source *storage.FlexibleServersDatabase_Spec) error { + + // AzureName + database.AzureName = source.AzureName + + // Charset + database.Charset = genruntime.ClonePointerToString(source.Charset) + + // Collation + database.Collation = genruntime.ClonePointerToString(source.Collation) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersDatabaseOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersDatabaseOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersDatabaseOperatorSpec() to populate field OperatorSpec") + } + database.OperatorSpec = &operatorSpec + } else { + database.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + database.Owner = &owner + } else { + database.Owner = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabase_Spec populates the provided destination FlexibleServersDatabase_Spec from our FlexibleServersDatabase_Spec +func (database *FlexibleServersDatabase_Spec) AssignProperties_To_FlexibleServersDatabase_Spec(destination *storage.FlexibleServersDatabase_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = database.AzureName + + // Charset + destination.Charset = genruntime.ClonePointerToString(database.Charset) + + // Collation + destination.Collation = genruntime.ClonePointerToString(database.Collation) + + // OperatorSpec + if database.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersDatabaseOperatorSpec + err := database.OperatorSpec.AssignProperties_To_FlexibleServersDatabaseOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersDatabaseOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = database.OriginalVersion() + + // Owner + if database.Owner != nil { + owner := database.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_FlexibleServersDatabase_STATUS populates our FlexibleServersDatabase_Spec from the provided source FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_Spec) Initialize_From_FlexibleServersDatabase_STATUS(source *FlexibleServersDatabase_STATUS) error { + + // Charset + database.Charset = genruntime.ClonePointerToString(source.Charset) + + // Collation + database.Collation = genruntime.ClonePointerToString(source.Collation) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (database *FlexibleServersDatabase_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (database *FlexibleServersDatabase_Spec) SetAzureName(azureName string) { + database.AzureName = azureName +} + +type FlexibleServersDatabase_STATUS struct { + // Charset: The charset of the database. + Charset *string `json:"charset,omitempty"` + + // Collation: The collation of the database. + Collation *string `json:"collation,omitempty"` + + // 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"` + + // Name: The name of the resource + Name *string `json:"name,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 = &FlexibleServersDatabase_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersDatabase_STATUS from the provided source +func (database *FlexibleServersDatabase_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.FlexibleServersDatabase_STATUS) + if ok { + // Populate our instance from source + return database.AssignProperties_From_FlexibleServersDatabase_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersDatabase_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = database.AssignProperties_From_FlexibleServersDatabase_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.FlexibleServersDatabase_STATUS) + if ok { + // Populate destination from our instance + return database.AssignProperties_To_FlexibleServersDatabase_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersDatabase_STATUS{} + err := database.AssignProperties_To_FlexibleServersDatabase_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 = &FlexibleServersDatabase_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (database *FlexibleServersDatabase_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersDatabase_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (database *FlexibleServersDatabase_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersDatabase_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersDatabase_STATUS, got %T", armInput) + } + + // Set property "Charset": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Charset != nil { + charset := *typedInput.Properties.Charset + database.Charset = &charset + } + } + + // Set property "Collation": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Collation != nil { + collation := *typedInput.Properties.Collation + database.Collation = &collation + } + } + + // no assignment for property "Conditions" + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + database.Id = &id + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + database.Name = &name + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + database.SystemData = &systemData + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + database.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_FlexibleServersDatabase_STATUS populates our FlexibleServersDatabase_STATUS from the provided source FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_STATUS) AssignProperties_From_FlexibleServersDatabase_STATUS(source *storage.FlexibleServersDatabase_STATUS) error { + + // Charset + database.Charset = genruntime.ClonePointerToString(source.Charset) + + // Collation + database.Collation = genruntime.ClonePointerToString(source.Collation) + + // Conditions + database.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + database.Id = genruntime.ClonePointerToString(source.Id) + + // Name + database.Name = genruntime.ClonePointerToString(source.Name) + + // 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") + } + database.SystemData = &systemDatum + } else { + database.SystemData = nil + } + + // Type + database.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersDatabase_STATUS populates the provided destination FlexibleServersDatabase_STATUS from our FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_STATUS) AssignProperties_To_FlexibleServersDatabase_STATUS(destination *storage.FlexibleServersDatabase_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Charset + destination.Charset = genruntime.ClonePointerToString(database.Charset) + + // Collation + destination.Collation = genruntime.ClonePointerToString(database.Collation) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(database.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(database.Id) + + // Name + destination.Name = genruntime.ClonePointerToString(database.Name) + + // SystemData + if database.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := database.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(database.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 FlexibleServersDatabaseOperatorSpec 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_FlexibleServersDatabaseOperatorSpec populates our FlexibleServersDatabaseOperatorSpec from the provided source FlexibleServersDatabaseOperatorSpec +func (operator *FlexibleServersDatabaseOperatorSpec) AssignProperties_From_FlexibleServersDatabaseOperatorSpec(source *storage.FlexibleServersDatabaseOperatorSpec) 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_FlexibleServersDatabaseOperatorSpec populates the provided destination FlexibleServersDatabaseOperatorSpec from our FlexibleServersDatabaseOperatorSpec +func (operator *FlexibleServersDatabaseOperatorSpec) AssignProperties_To_FlexibleServersDatabaseOperatorSpec(destination *storage.FlexibleServersDatabaseOperatorSpec) 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 +} + +func init() { + SchemeBuilder.Register(&FlexibleServersDatabase{}, &FlexibleServersDatabaseList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen_test.go b/v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen_test.go new file mode 100644 index 0000000000..42f2a7be78 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_database_types_gen_test.go @@ -0,0 +1,503 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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_FlexibleServersDatabase_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 FlexibleServersDatabase to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersDatabase, FlexibleServersDatabaseGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersDatabase tests if a specific instance of FlexibleServersDatabase round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersDatabase(subject FlexibleServersDatabase) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersDatabase + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersDatabase + 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_FlexibleServersDatabase_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabase to FlexibleServersDatabase via AssignProperties_To_FlexibleServersDatabase & AssignProperties_From_FlexibleServersDatabase returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabase, FlexibleServersDatabaseGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabase tests if a specific instance of FlexibleServersDatabase can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabase(subject FlexibleServersDatabase) 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.FlexibleServersDatabase + err := copied.AssignProperties_To_FlexibleServersDatabase(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabase + err = actual.AssignProperties_From_FlexibleServersDatabase(&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_FlexibleServersDatabase_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 FlexibleServersDatabase via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase, FlexibleServersDatabaseGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase runs a test to see if a specific instance of FlexibleServersDatabase round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase(subject FlexibleServersDatabase) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase + 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 FlexibleServersDatabase instances for property testing - lazily instantiated by +// FlexibleServersDatabaseGenerator() +var flexibleServersDatabaseGenerator gopter.Gen + +// FlexibleServersDatabaseGenerator returns a generator of FlexibleServersDatabase instances for property testing. +func FlexibleServersDatabaseGenerator() gopter.Gen { + if flexibleServersDatabaseGenerator != nil { + return flexibleServersDatabaseGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase(generators) + flexibleServersDatabaseGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase{}), generators) + + return flexibleServersDatabaseGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersDatabase_SpecGenerator() + gens["Status"] = FlexibleServersDatabase_STATUSGenerator() +} + +func Test_FlexibleServersDatabaseOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabaseOperatorSpec to FlexibleServersDatabaseOperatorSpec via AssignProperties_To_FlexibleServersDatabaseOperatorSpec & AssignProperties_From_FlexibleServersDatabaseOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec, FlexibleServersDatabaseOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec tests if a specific instance of FlexibleServersDatabaseOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabaseOperatorSpec(subject FlexibleServersDatabaseOperatorSpec) 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.FlexibleServersDatabaseOperatorSpec + err := copied.AssignProperties_To_FlexibleServersDatabaseOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabaseOperatorSpec + err = actual.AssignProperties_From_FlexibleServersDatabaseOperatorSpec(&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_FlexibleServersDatabaseOperatorSpec_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 FlexibleServersDatabaseOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabaseOperatorSpec, FlexibleServersDatabaseOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabaseOperatorSpec runs a test to see if a specific instance of FlexibleServersDatabaseOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabaseOperatorSpec(subject FlexibleServersDatabaseOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabaseOperatorSpec + 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 FlexibleServersDatabaseOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersDatabaseOperatorSpecGenerator() +var flexibleServersDatabaseOperatorSpecGenerator gopter.Gen + +// FlexibleServersDatabaseOperatorSpecGenerator returns a generator of FlexibleServersDatabaseOperatorSpec instances for property testing. +func FlexibleServersDatabaseOperatorSpecGenerator() gopter.Gen { + if flexibleServersDatabaseOperatorSpecGenerator != nil { + return flexibleServersDatabaseOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersDatabaseOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabaseOperatorSpec{}), generators) + + return flexibleServersDatabaseOperatorSpecGenerator +} + +func Test_FlexibleServersDatabase_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabase_STATUS to FlexibleServersDatabase_STATUS via AssignProperties_To_FlexibleServersDatabase_STATUS & AssignProperties_From_FlexibleServersDatabase_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS, FlexibleServersDatabase_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS tests if a specific instance of FlexibleServersDatabase_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabase_STATUS(subject FlexibleServersDatabase_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.FlexibleServersDatabase_STATUS + err := copied.AssignProperties_To_FlexibleServersDatabase_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabase_STATUS + err = actual.AssignProperties_From_FlexibleServersDatabase_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_FlexibleServersDatabase_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 FlexibleServersDatabase_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase_STATUS, FlexibleServersDatabase_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase_STATUS runs a test to see if a specific instance of FlexibleServersDatabase_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase_STATUS(subject FlexibleServersDatabase_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase_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 FlexibleServersDatabase_STATUS instances for property testing - lazily instantiated by +// FlexibleServersDatabase_STATUSGenerator() +var flexibleServersDatabase_STATUSGenerator gopter.Gen + +// FlexibleServersDatabase_STATUSGenerator returns a generator of FlexibleServersDatabase_STATUS instances for property testing. +// We first initialize flexibleServersDatabase_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 FlexibleServersDatabase_STATUSGenerator() gopter.Gen { + if flexibleServersDatabase_STATUSGenerator != nil { + return flexibleServersDatabase_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + flexibleServersDatabase_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + flexibleServersDatabase_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_STATUS{}), generators) + + return flexibleServersDatabase_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[string]gopter.Gen) { + gens["Charset"] = gen.PtrOf(gen.AlphaString()) + gens["Collation"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersDatabase_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersDatabase_Spec to FlexibleServersDatabase_Spec via AssignProperties_To_FlexibleServersDatabase_Spec & AssignProperties_From_FlexibleServersDatabase_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersDatabase_Spec, FlexibleServersDatabase_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersDatabase_Spec tests if a specific instance of FlexibleServersDatabase_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersDatabase_Spec(subject FlexibleServersDatabase_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.FlexibleServersDatabase_Spec + err := copied.AssignProperties_To_FlexibleServersDatabase_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersDatabase_Spec + err = actual.AssignProperties_From_FlexibleServersDatabase_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_FlexibleServersDatabase_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 FlexibleServersDatabase_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase_Spec, FlexibleServersDatabase_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase_Spec runs a test to see if a specific instance of FlexibleServersDatabase_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase_Spec(subject FlexibleServersDatabase_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase_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 FlexibleServersDatabase_Spec instances for property testing - lazily instantiated by +// FlexibleServersDatabase_SpecGenerator() +var flexibleServersDatabase_SpecGenerator gopter.Gen + +// FlexibleServersDatabase_SpecGenerator returns a generator of FlexibleServersDatabase_Spec instances for property testing. +// We first initialize flexibleServersDatabase_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 FlexibleServersDatabase_SpecGenerator() gopter.Gen { + if flexibleServersDatabase_SpecGenerator != nil { + return flexibleServersDatabase_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + flexibleServersDatabase_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + flexibleServersDatabase_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_Spec{}), generators) + + return flexibleServersDatabase_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Charset"] = gen.PtrOf(gen.AlphaString()) + gens["Collation"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersDatabaseOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen.go b/v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen.go new file mode 100644 index 0000000000..8eda90275e --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen.go @@ -0,0 +1,992 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/arm" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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: /mysql/resource-manager/Microsoft.DBforMySQL/Firewall/stable/2023-12-30/FirewallRules.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/firewallRules/{firewallRuleName} +type FlexibleServersFirewallRule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersFirewallRule_Spec `json:"spec,omitempty"` + Status FlexibleServersFirewallRule_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersFirewallRule{} + +// GetConditions returns the conditions of the resource +func (rule *FlexibleServersFirewallRule) GetConditions() conditions.Conditions { + return rule.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (rule *FlexibleServersFirewallRule) SetConditions(conditions conditions.Conditions) { + rule.Status.Conditions = conditions +} + +var _ conversion.Convertible = &FlexibleServersFirewallRule{} + +// ConvertFrom populates our FlexibleServersFirewallRule from the provided hub FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.FlexibleServersFirewallRule) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersFirewallRule but received %T instead", hub) + } + + return rule.AssignProperties_From_FlexibleServersFirewallRule(source) +} + +// ConvertTo populates the provided hub FlexibleServersFirewallRule from our FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.FlexibleServersFirewallRule) + if !ok { + return fmt.Errorf("expected dbformysql/v1api20231230/storage/FlexibleServersFirewallRule but received %T instead", hub) + } + + return rule.AssignProperties_To_FlexibleServersFirewallRule(destination) +} + +// +kubebuilder:webhook:path=/mutate-dbformysql-azure-com-v1api20231230-flexibleserversfirewallrule,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversfirewallrules,verbs=create;update,versions=v1api20231230,name=default.v1api20231230.flexibleserversfirewallrules.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &FlexibleServersFirewallRule{} + +// Default applies defaults to the FlexibleServersFirewallRule resource +func (rule *FlexibleServersFirewallRule) Default() { + rule.defaultImpl() + var temp any = rule + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (rule *FlexibleServersFirewallRule) defaultAzureName() { + if rule.Spec.AzureName == "" { + rule.Spec.AzureName = rule.Name + } +} + +// defaultImpl applies the code generated defaults to the FlexibleServersFirewallRule resource +func (rule *FlexibleServersFirewallRule) defaultImpl() { rule.defaultAzureName() } + +var _ configmaps.Exporter = &FlexibleServersFirewallRule{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (rule *FlexibleServersFirewallRule) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if rule.Spec.OperatorSpec == nil { + return nil + } + return rule.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersFirewallRule{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (rule *FlexibleServersFirewallRule) SecretDestinationExpressions() []*core.DestinationExpression { + if rule.Spec.OperatorSpec == nil { + return nil + } + return rule.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &FlexibleServersFirewallRule{} + +// InitializeSpec initializes the spec for this resource from the given status +func (rule *FlexibleServersFirewallRule) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*FlexibleServersFirewallRule_STATUS); ok { + return rule.Spec.Initialize_From_FlexibleServersFirewallRule_STATUS(s) + } + + return fmt.Errorf("expected Status of type FlexibleServersFirewallRule_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &FlexibleServersFirewallRule{} + +// AzureName returns the Azure name of the resource +func (rule *FlexibleServersFirewallRule) AzureName() string { + return rule.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (rule FlexibleServersFirewallRule) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (rule *FlexibleServersFirewallRule) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (rule *FlexibleServersFirewallRule) GetSpec() genruntime.ConvertibleSpec { + return &rule.Spec +} + +// GetStatus returns the status of this resource +func (rule *FlexibleServersFirewallRule) GetStatus() genruntime.ConvertibleStatus { + return &rule.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (rule *FlexibleServersFirewallRule) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/firewallRules" +func (rule *FlexibleServersFirewallRule) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/firewallRules" +} + +// NewEmptyStatus returns a new empty (blank) status +func (rule *FlexibleServersFirewallRule) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersFirewallRule_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (rule *FlexibleServersFirewallRule) Owner() *genruntime.ResourceReference { + if rule.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(rule.Spec) + return rule.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (rule *FlexibleServersFirewallRule) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersFirewallRule_STATUS); ok { + rule.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersFirewallRule_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + rule.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-dbformysql-azure-com-v1api20231230-flexibleserversfirewallrule,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=dbformysql.azure.com,resources=flexibleserversfirewallrules,verbs=create;update,versions=v1api20231230,name=validate.v1api20231230.flexibleserversfirewallrules.dbformysql.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &FlexibleServersFirewallRule{} + +// ValidateCreate validates the creation of the resource +func (rule *FlexibleServersFirewallRule) ValidateCreate() (admission.Warnings, error) { + validations := rule.createValidations() + var temp any = rule + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (rule *FlexibleServersFirewallRule) ValidateDelete() (admission.Warnings, error) { + validations := rule.deleteValidations() + var temp any = rule + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (rule *FlexibleServersFirewallRule) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := rule.updateValidations() + var temp any = rule + 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 (rule *FlexibleServersFirewallRule) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){rule.validateResourceReferences, rule.validateOwnerReference, rule.validateSecretDestinations, rule.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (rule *FlexibleServersFirewallRule) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (rule *FlexibleServersFirewallRule) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return rule.validateResourceReferences() + }, + rule.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return rule.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return rule.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return rule.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (rule *FlexibleServersFirewallRule) validateConfigMapDestinations() (admission.Warnings, error) { + if rule.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(rule, nil, rule.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (rule *FlexibleServersFirewallRule) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(rule) +} + +// validateResourceReferences validates all resource references +func (rule *FlexibleServersFirewallRule) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&rule.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (rule *FlexibleServersFirewallRule) validateSecretDestinations() (admission.Warnings, error) { + if rule.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(rule, nil, rule.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (rule *FlexibleServersFirewallRule) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*FlexibleServersFirewallRule) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, rule) +} + +// AssignProperties_From_FlexibleServersFirewallRule populates our FlexibleServersFirewallRule from the provided source FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) AssignProperties_From_FlexibleServersFirewallRule(source *storage.FlexibleServersFirewallRule) error { + + // ObjectMeta + rule.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec FlexibleServersFirewallRule_Spec + err := spec.AssignProperties_From_FlexibleServersFirewallRule_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersFirewallRule_Spec() to populate field Spec") + } + rule.Spec = spec + + // Status + var status FlexibleServersFirewallRule_STATUS + err = status.AssignProperties_From_FlexibleServersFirewallRule_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersFirewallRule_STATUS() to populate field Status") + } + rule.Status = status + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRule populates the provided destination FlexibleServersFirewallRule from our FlexibleServersFirewallRule +func (rule *FlexibleServersFirewallRule) AssignProperties_To_FlexibleServersFirewallRule(destination *storage.FlexibleServersFirewallRule) error { + + // ObjectMeta + destination.ObjectMeta = *rule.ObjectMeta.DeepCopy() + + // Spec + var spec storage.FlexibleServersFirewallRule_Spec + err := rule.Spec.AssignProperties_To_FlexibleServersFirewallRule_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersFirewallRule_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.FlexibleServersFirewallRule_STATUS + err = rule.Status.AssignProperties_To_FlexibleServersFirewallRule_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersFirewallRule_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 (rule *FlexibleServersFirewallRule) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: rule.Spec.OriginalVersion(), + Kind: "FlexibleServersFirewallRule", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Firewall/stable/2023-12-30/FirewallRules.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/firewallRules/{firewallRuleName} +type FlexibleServersFirewallRuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersFirewallRule `json:"items"` +} + +type FlexibleServersFirewallRule_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 + // +kubebuilder:validation:Pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" + // EndIpAddress: The end IP address of the server firewall rule. Must be IPv4 format. + EndIpAddress *string `json:"endIpAddress,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *FlexibleServersFirewallRuleOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + + // +kubebuilder:validation:Required + // +kubebuilder:validation:Pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" + // StartIpAddress: The start IP address of the server firewall rule. Must be IPv4 format. + StartIpAddress *string `json:"startIpAddress,omitempty"` +} + +var _ genruntime.ARMTransformer = &FlexibleServersFirewallRule_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (rule *FlexibleServersFirewallRule_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if rule == nil { + return nil, nil + } + result := &arm.FlexibleServersFirewallRule_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if rule.EndIpAddress != nil || rule.StartIpAddress != nil { + result.Properties = &arm.FirewallRuleProperties{} + } + if rule.EndIpAddress != nil { + endIpAddress := *rule.EndIpAddress + result.Properties.EndIpAddress = &endIpAddress + } + if rule.StartIpAddress != nil { + startIpAddress := *rule.StartIpAddress + result.Properties.StartIpAddress = &startIpAddress + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (rule *FlexibleServersFirewallRule_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersFirewallRule_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (rule *FlexibleServersFirewallRule_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersFirewallRule_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersFirewallRule_Spec, got %T", armInput) + } + + // Set property "AzureName": + rule.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "EndIpAddress": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.EndIpAddress != nil { + endIpAddress := *typedInput.Properties.EndIpAddress + rule.EndIpAddress = &endIpAddress + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + rule.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "StartIpAddress": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.StartIpAddress != nil { + startIpAddress := *typedInput.Properties.StartIpAddress + rule.StartIpAddress = &startIpAddress + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersFirewallRule_Spec{} + +// ConvertSpecFrom populates our FlexibleServersFirewallRule_Spec from the provided source +func (rule *FlexibleServersFirewallRule_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.FlexibleServersFirewallRule_Spec) + if ok { + // Populate our instance from source + return rule.AssignProperties_From_FlexibleServersFirewallRule_Spec(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersFirewallRule_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = rule.AssignProperties_From_FlexibleServersFirewallRule_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersFirewallRule_Spec +func (rule *FlexibleServersFirewallRule_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.FlexibleServersFirewallRule_Spec) + if ok { + // Populate destination from our instance + return rule.AssignProperties_To_FlexibleServersFirewallRule_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersFirewallRule_Spec{} + err := rule.AssignProperties_To_FlexibleServersFirewallRule_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_FlexibleServersFirewallRule_Spec populates our FlexibleServersFirewallRule_Spec from the provided source FlexibleServersFirewallRule_Spec +func (rule *FlexibleServersFirewallRule_Spec) AssignProperties_From_FlexibleServersFirewallRule_Spec(source *storage.FlexibleServersFirewallRule_Spec) error { + + // AzureName + rule.AzureName = source.AzureName + + // EndIpAddress + if source.EndIpAddress != nil { + endIpAddress := *source.EndIpAddress + rule.EndIpAddress = &endIpAddress + } else { + rule.EndIpAddress = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec FlexibleServersFirewallRuleOperatorSpec + err := operatorSpec.AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec() to populate field OperatorSpec") + } + rule.OperatorSpec = &operatorSpec + } else { + rule.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + rule.Owner = &owner + } else { + rule.Owner = nil + } + + // StartIpAddress + if source.StartIpAddress != nil { + startIpAddress := *source.StartIpAddress + rule.StartIpAddress = &startIpAddress + } else { + rule.StartIpAddress = nil + } + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRule_Spec populates the provided destination FlexibleServersFirewallRule_Spec from our FlexibleServersFirewallRule_Spec +func (rule *FlexibleServersFirewallRule_Spec) AssignProperties_To_FlexibleServersFirewallRule_Spec(destination *storage.FlexibleServersFirewallRule_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = rule.AzureName + + // EndIpAddress + if rule.EndIpAddress != nil { + endIpAddress := *rule.EndIpAddress + destination.EndIpAddress = &endIpAddress + } else { + destination.EndIpAddress = nil + } + + // OperatorSpec + if rule.OperatorSpec != nil { + var operatorSpec storage.FlexibleServersFirewallRuleOperatorSpec + err := rule.OperatorSpec.AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = rule.OriginalVersion() + + // Owner + if rule.Owner != nil { + owner := rule.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // StartIpAddress + if rule.StartIpAddress != nil { + startIpAddress := *rule.StartIpAddress + destination.StartIpAddress = &startIpAddress + } else { + destination.StartIpAddress = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_FlexibleServersFirewallRule_STATUS populates our FlexibleServersFirewallRule_Spec from the provided source FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_Spec) Initialize_From_FlexibleServersFirewallRule_STATUS(source *FlexibleServersFirewallRule_STATUS) error { + + // EndIpAddress + if source.EndIpAddress != nil { + endIpAddress := *source.EndIpAddress + rule.EndIpAddress = &endIpAddress + } else { + rule.EndIpAddress = nil + } + + // StartIpAddress + if source.StartIpAddress != nil { + startIpAddress := *source.StartIpAddress + rule.StartIpAddress = &startIpAddress + } else { + rule.StartIpAddress = nil + } + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (rule *FlexibleServersFirewallRule_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (rule *FlexibleServersFirewallRule_Spec) SetAzureName(azureName string) { + rule.AzureName = azureName +} + +type FlexibleServersFirewallRule_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // EndIpAddress: The end IP address of the server firewall rule. Must be IPv4 format. + EndIpAddress *string `json:"endIpAddress,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"` + + // StartIpAddress: The start IP address of the server firewall rule. Must be IPv4 format. + StartIpAddress *string `json:"startIpAddress,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 = &FlexibleServersFirewallRule_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersFirewallRule_STATUS from the provided source +func (rule *FlexibleServersFirewallRule_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.FlexibleServersFirewallRule_STATUS) + if ok { + // Populate our instance from source + return rule.AssignProperties_From_FlexibleServersFirewallRule_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.FlexibleServersFirewallRule_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = rule.AssignProperties_From_FlexibleServersFirewallRule_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.FlexibleServersFirewallRule_STATUS) + if ok { + // Populate destination from our instance + return rule.AssignProperties_To_FlexibleServersFirewallRule_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.FlexibleServersFirewallRule_STATUS{} + err := rule.AssignProperties_To_FlexibleServersFirewallRule_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 = &FlexibleServersFirewallRule_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (rule *FlexibleServersFirewallRule_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.FlexibleServersFirewallRule_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (rule *FlexibleServersFirewallRule_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.FlexibleServersFirewallRule_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.FlexibleServersFirewallRule_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "EndIpAddress": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.EndIpAddress != nil { + endIpAddress := *typedInput.Properties.EndIpAddress + rule.EndIpAddress = &endIpAddress + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + rule.Id = &id + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + rule.Name = &name + } + + // Set property "StartIpAddress": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.StartIpAddress != nil { + startIpAddress := *typedInput.Properties.StartIpAddress + rule.StartIpAddress = &startIpAddress + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + rule.SystemData = &systemData + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + rule.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_FlexibleServersFirewallRule_STATUS populates our FlexibleServersFirewallRule_STATUS from the provided source FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_STATUS) AssignProperties_From_FlexibleServersFirewallRule_STATUS(source *storage.FlexibleServersFirewallRule_STATUS) error { + + // Conditions + rule.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // EndIpAddress + rule.EndIpAddress = genruntime.ClonePointerToString(source.EndIpAddress) + + // Id + rule.Id = genruntime.ClonePointerToString(source.Id) + + // Name + rule.Name = genruntime.ClonePointerToString(source.Name) + + // StartIpAddress + rule.StartIpAddress = genruntime.ClonePointerToString(source.StartIpAddress) + + // 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") + } + rule.SystemData = &systemDatum + } else { + rule.SystemData = nil + } + + // Type + rule.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_FlexibleServersFirewallRule_STATUS populates the provided destination FlexibleServersFirewallRule_STATUS from our FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_STATUS) AssignProperties_To_FlexibleServersFirewallRule_STATUS(destination *storage.FlexibleServersFirewallRule_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(rule.Conditions) + + // EndIpAddress + destination.EndIpAddress = genruntime.ClonePointerToString(rule.EndIpAddress) + + // Id + destination.Id = genruntime.ClonePointerToString(rule.Id) + + // Name + destination.Name = genruntime.ClonePointerToString(rule.Name) + + // StartIpAddress + destination.StartIpAddress = genruntime.ClonePointerToString(rule.StartIpAddress) + + // SystemData + if rule.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := rule.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(rule.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 FlexibleServersFirewallRuleOperatorSpec 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_FlexibleServersFirewallRuleOperatorSpec populates our FlexibleServersFirewallRuleOperatorSpec from the provided source FlexibleServersFirewallRuleOperatorSpec +func (operator *FlexibleServersFirewallRuleOperatorSpec) AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec(source *storage.FlexibleServersFirewallRuleOperatorSpec) 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_FlexibleServersFirewallRuleOperatorSpec populates the provided destination FlexibleServersFirewallRuleOperatorSpec from our FlexibleServersFirewallRuleOperatorSpec +func (operator *FlexibleServersFirewallRuleOperatorSpec) AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(destination *storage.FlexibleServersFirewallRuleOperatorSpec) 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 +} + +func init() { + SchemeBuilder.Register(&FlexibleServersFirewallRule{}, &FlexibleServersFirewallRuleList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen_test.go b/v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen_test.go new file mode 100644 index 0000000000..70b899c5ce --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/flexible_servers_firewall_rule_types_gen_test.go @@ -0,0 +1,503 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20231230 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/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_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule to hub returns original", + prop.ForAll(RunResourceConversionTestForFlexibleServersFirewallRule, FlexibleServersFirewallRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForFlexibleServersFirewallRule tests if a specific instance of FlexibleServersFirewallRule round trips to the hub storage version and back losslessly +func RunResourceConversionTestForFlexibleServersFirewallRule(subject FlexibleServersFirewallRule) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.FlexibleServersFirewallRule + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual FlexibleServersFirewallRule + 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_FlexibleServersFirewallRule_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRule to FlexibleServersFirewallRule via AssignProperties_To_FlexibleServersFirewallRule & AssignProperties_From_FlexibleServersFirewallRule returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRule, FlexibleServersFirewallRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRule tests if a specific instance of FlexibleServersFirewallRule can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRule(subject FlexibleServersFirewallRule) 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.FlexibleServersFirewallRule + err := copied.AssignProperties_To_FlexibleServersFirewallRule(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRule + err = actual.AssignProperties_From_FlexibleServersFirewallRule(&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_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule, FlexibleServersFirewallRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule runs a test to see if a specific instance of FlexibleServersFirewallRule round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule(subject FlexibleServersFirewallRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule + 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 FlexibleServersFirewallRule instances for property testing - lazily instantiated by +// FlexibleServersFirewallRuleGenerator() +var flexibleServersFirewallRuleGenerator gopter.Gen + +// FlexibleServersFirewallRuleGenerator returns a generator of FlexibleServersFirewallRule instances for property testing. +func FlexibleServersFirewallRuleGenerator() gopter.Gen { + if flexibleServersFirewallRuleGenerator != nil { + return flexibleServersFirewallRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule(generators) + flexibleServersFirewallRuleGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule{}), generators) + + return flexibleServersFirewallRuleGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersFirewallRule_SpecGenerator() + gens["Status"] = FlexibleServersFirewallRule_STATUSGenerator() +} + +func Test_FlexibleServersFirewallRuleOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRuleOperatorSpec to FlexibleServersFirewallRuleOperatorSpec via AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec & AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec, FlexibleServersFirewallRuleOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec tests if a specific instance of FlexibleServersFirewallRuleOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRuleOperatorSpec(subject FlexibleServersFirewallRuleOperatorSpec) 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.FlexibleServersFirewallRuleOperatorSpec + err := copied.AssignProperties_To_FlexibleServersFirewallRuleOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRuleOperatorSpec + err = actual.AssignProperties_From_FlexibleServersFirewallRuleOperatorSpec(&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_FlexibleServersFirewallRuleOperatorSpec_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 FlexibleServersFirewallRuleOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRuleOperatorSpec, FlexibleServersFirewallRuleOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRuleOperatorSpec runs a test to see if a specific instance of FlexibleServersFirewallRuleOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRuleOperatorSpec(subject FlexibleServersFirewallRuleOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRuleOperatorSpec + 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 FlexibleServersFirewallRuleOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersFirewallRuleOperatorSpecGenerator() +var flexibleServersFirewallRuleOperatorSpecGenerator gopter.Gen + +// FlexibleServersFirewallRuleOperatorSpecGenerator returns a generator of FlexibleServersFirewallRuleOperatorSpec instances for property testing. +func FlexibleServersFirewallRuleOperatorSpecGenerator() gopter.Gen { + if flexibleServersFirewallRuleOperatorSpecGenerator != nil { + return flexibleServersFirewallRuleOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersFirewallRuleOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRuleOperatorSpec{}), generators) + + return flexibleServersFirewallRuleOperatorSpecGenerator +} + +func Test_FlexibleServersFirewallRule_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRule_STATUS to FlexibleServersFirewallRule_STATUS via AssignProperties_To_FlexibleServersFirewallRule_STATUS & AssignProperties_From_FlexibleServersFirewallRule_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS, FlexibleServersFirewallRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS tests if a specific instance of FlexibleServersFirewallRule_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRule_STATUS(subject FlexibleServersFirewallRule_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.FlexibleServersFirewallRule_STATUS + err := copied.AssignProperties_To_FlexibleServersFirewallRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRule_STATUS + err = actual.AssignProperties_From_FlexibleServersFirewallRule_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_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS, FlexibleServersFirewallRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS runs a test to see if a specific instance of FlexibleServersFirewallRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS(subject FlexibleServersFirewallRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUS instances for property testing - lazily instantiated by +// FlexibleServersFirewallRule_STATUSGenerator() +var flexibleServersFirewallRule_STATUSGenerator gopter.Gen + +// FlexibleServersFirewallRule_STATUSGenerator returns a generator of FlexibleServersFirewallRule_STATUS instances for property testing. +// We first initialize flexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUSGenerator() gopter.Gen { + if flexibleServersFirewallRule_STATUSGenerator != nil { + return flexibleServersFirewallRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + flexibleServersFirewallRule_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + flexibleServersFirewallRule_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_STATUS{}), generators) + + return flexibleServersFirewallRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[string]gopter.Gen) { + gens["EndIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["StartIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersFirewallRule_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from FlexibleServersFirewallRule_Spec to FlexibleServersFirewallRule_Spec via AssignProperties_To_FlexibleServersFirewallRule_Spec & AssignProperties_From_FlexibleServersFirewallRule_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec, FlexibleServersFirewallRule_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec tests if a specific instance of FlexibleServersFirewallRule_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForFlexibleServersFirewallRule_Spec(subject FlexibleServersFirewallRule_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.FlexibleServersFirewallRule_Spec + err := copied.AssignProperties_To_FlexibleServersFirewallRule_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual FlexibleServersFirewallRule_Spec + err = actual.AssignProperties_From_FlexibleServersFirewallRule_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_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule_Spec, FlexibleServersFirewallRule_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule_Spec runs a test to see if a specific instance of FlexibleServersFirewallRule_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule_Spec(subject FlexibleServersFirewallRule_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_Spec instances for property testing - lazily instantiated by +// FlexibleServersFirewallRule_SpecGenerator() +var flexibleServersFirewallRule_SpecGenerator gopter.Gen + +// FlexibleServersFirewallRule_SpecGenerator returns a generator of FlexibleServersFirewallRule_Spec instances for property testing. +// We first initialize flexibleServersFirewallRule_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 FlexibleServersFirewallRule_SpecGenerator() gopter.Gen { + if flexibleServersFirewallRule_SpecGenerator != nil { + return flexibleServersFirewallRule_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + flexibleServersFirewallRule_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + flexibleServersFirewallRule_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_Spec{}), generators) + + return flexibleServersFirewallRule_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["EndIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["StartIpAddress"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersFirewallRuleOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/groupversion_info_gen.go b/v2/api/dbformysql/v1api20231230/groupversion_info_gen.go new file mode 100644 index 0000000000..aee81f81ec --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/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 v1api20231230 contains API Schema definitions for the dbformysql v1api20231230 API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=dbformysql.azure.com +// +versionName=v1api20231230 +package v1api20231230 + +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: "dbformysql.azure.com", Version: "v1api20231230"} + + // 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/dbformysql/v1api20231230/storage/flexible_server_types_gen.go b/v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen.go new file mode 100644 index 0000000000..4be60ed079 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen.go @@ -0,0 +1,542 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "context" + "github.com/Azure/azure-service-operator/v2/internal/genericarmclient" + "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/go-logr/logr" + "github.com/rotisserie/eris" + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// +kubebuilder:rbac:groups=dbformysql.azure.com,resources=flexibleservers,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleservers/status,flexibleservers/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 v1api20231230.FlexibleServer +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers/stable/2023-12-30/FlexibleServers.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName} +type FlexibleServer struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServer_Spec `json:"spec,omitempty"` + Status FlexibleServer_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServer{} + +// GetConditions returns the conditions of the resource +func (server *FlexibleServer) GetConditions() conditions.Conditions { + return server.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (server *FlexibleServer) SetConditions(conditions conditions.Conditions) { + server.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &FlexibleServer{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (server *FlexibleServer) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if server.Spec.OperatorSpec == nil { + return nil + } + return server.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServer{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (server *FlexibleServer) SecretDestinationExpressions() []*core.DestinationExpression { + if server.Spec.OperatorSpec == nil { + return nil + } + return server.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesConfigExporter = &FlexibleServer{} + +// ExportKubernetesConfigMaps defines a resource which can create ConfigMaps in Kubernetes. +func (server *FlexibleServer) ExportKubernetesConfigMaps(_ context.Context, _ genruntime.MetaObject, _ *genericarmclient.GenericClient, _ logr.Logger) ([]client.Object, error) { + collector := configmaps.NewCollector(server.Namespace) + if server.Spec.OperatorSpec != nil && server.Spec.OperatorSpec.ConfigMaps != nil { + if server.Status.AdministratorLogin != nil { + collector.AddValue(server.Spec.OperatorSpec.ConfigMaps.AdministratorLogin, *server.Status.AdministratorLogin) + } + } + if server.Spec.OperatorSpec != nil && server.Spec.OperatorSpec.ConfigMaps != nil { + if server.Status.FullyQualifiedDomainName != nil { + collector.AddValue(server.Spec.OperatorSpec.ConfigMaps.FullyQualifiedDomainName, *server.Status.FullyQualifiedDomainName) + } + } + result, err := collector.Values() + if err != nil { + return nil, err + } + return configmaps.SliceToClientObjectSlice(result), nil +} + +var _ genruntime.KubernetesResource = &FlexibleServer{} + +// AzureName returns the Azure name of the resource +func (server *FlexibleServer) AzureName() string { + return server.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (server FlexibleServer) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (server *FlexibleServer) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (server *FlexibleServer) GetSpec() genruntime.ConvertibleSpec { + return &server.Spec +} + +// GetStatus returns the status of this resource +func (server *FlexibleServer) GetStatus() genruntime.ConvertibleStatus { + return &server.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (server *FlexibleServer) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers" +func (server *FlexibleServer) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers" +} + +// NewEmptyStatus returns a new empty (blank) status +func (server *FlexibleServer) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServer_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (server *FlexibleServer) Owner() *genruntime.ResourceReference { + if server.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(server.Spec) + return server.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (server *FlexibleServer) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServer_STATUS); ok { + server.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServer_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + server.Status = st + return nil +} + +// Hub marks that this FlexibleServer is the hub type for conversion +func (server *FlexibleServer) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (server *FlexibleServer) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: server.Spec.OriginalVersion, + Kind: "FlexibleServer", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20231230.FlexibleServer +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers/stable/2023-12-30/FlexibleServers.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName} +type FlexibleServerList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServer `json:"items"` +} + +// Storage version of v1api20231230.APIVersion +// +kubebuilder:validation:Enum={"2023-12-30"} +type APIVersion string + +const APIVersion_Value = APIVersion("2023-12-30") + +// Storage version of v1api20231230.FlexibleServer_Spec +type FlexibleServer_Spec struct { + AdministratorLogin *string `json:"administratorLogin,omitempty"` + AdministratorLoginPassword *genruntime.SecretReference `json:"administratorLoginPassword,omitempty"` + AvailabilityZone *string `json:"availabilityZone,omitempty"` + + // 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"` + Backup *Backup `json:"backup,omitempty"` + CreateMode *string `json:"createMode,omitempty"` + DataEncryption *DataEncryption `json:"dataEncryption,omitempty"` + HighAvailability *HighAvailability `json:"highAvailability,omitempty"` + Identity *MySQLServerIdentity `json:"identity,omitempty"` + ImportSourceProperties *ImportSourceProperties `json:"importSourceProperties,omitempty"` + Location *string `json:"location,omitempty"` + MaintenanceWindow *MaintenanceWindow `json:"maintenanceWindow,omitempty"` + Network *Network `json:"network,omitempty"` + OperatorSpec *FlexibleServerOperatorSpec `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"` + ReplicationRole *string `json:"replicationRole,omitempty"` + RestorePointInTime *string `json:"restorePointInTime,omitempty"` + Sku *MySQLServerSku `json:"sku,omitempty"` + + // SourceServerResourceReference: The source MySQL server id. + SourceServerResourceReference *genruntime.ResourceReference `armReference:"SourceServerResourceId" json:"sourceServerResourceReference,omitempty"` + Storage *Storage `json:"storage,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Version *string `json:"version,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &FlexibleServer_Spec{} + +// ConvertSpecFrom populates our FlexibleServer_Spec from the provided source +func (server *FlexibleServer_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == server { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(server) +} + +// ConvertSpecTo populates the provided destination from our FlexibleServer_Spec +func (server *FlexibleServer_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == server { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(server) +} + +// Storage version of v1api20231230.FlexibleServer_STATUS +type FlexibleServer_STATUS struct { + AdministratorLogin *string `json:"administratorLogin,omitempty"` + AvailabilityZone *string `json:"availabilityZone,omitempty"` + Backup *Backup_STATUS `json:"backup,omitempty"` + Conditions []conditions.Condition `json:"conditions,omitempty"` + CreateMode *string `json:"createMode,omitempty"` + DataEncryption *DataEncryption_STATUS `json:"dataEncryption,omitempty"` + FullyQualifiedDomainName *string `json:"fullyQualifiedDomainName,omitempty"` + HighAvailability *HighAvailability_STATUS `json:"highAvailability,omitempty"` + Id *string `json:"id,omitempty"` + Identity *MySQLServerIdentity_STATUS `json:"identity,omitempty"` + ImportSourceProperties *ImportSourceProperties_STATUS `json:"importSourceProperties,omitempty"` + Location *string `json:"location,omitempty"` + MaintenanceWindow *MaintenanceWindow_STATUS `json:"maintenanceWindow,omitempty"` + Name *string `json:"name,omitempty"` + Network *Network_STATUS `json:"network,omitempty"` + PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ReplicaCapacity *int `json:"replicaCapacity,omitempty"` + ReplicationRole *string `json:"replicationRole,omitempty"` + RestorePointInTime *string `json:"restorePointInTime,omitempty"` + Sku *MySQLServerSku_STATUS `json:"sku,omitempty"` + SourceServerResourceId *string `json:"sourceServerResourceId,omitempty"` + State *string `json:"state,omitempty"` + Storage *Storage_STATUS `json:"storage,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Version *string `json:"version,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServer_STATUS{} + +// ConvertStatusFrom populates our FlexibleServer_STATUS from the provided source +func (server *FlexibleServer_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == server { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(server) +} + +// ConvertStatusTo populates the provided destination from our FlexibleServer_STATUS +func (server *FlexibleServer_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == server { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(server) +} + +// Storage version of v1api20231230.Backup +// Storage Profile properties of a server +type Backup struct { + BackupIntervalHours *int `json:"backupIntervalHours,omitempty"` + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + GeoRedundantBackup *string `json:"geoRedundantBackup,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20231230.Backup_STATUS +// Storage Profile properties of a server +type Backup_STATUS struct { + BackupIntervalHours *int `json:"backupIntervalHours,omitempty"` + BackupRetentionDays *int `json:"backupRetentionDays,omitempty"` + EarliestRestoreDate *string `json:"earliestRestoreDate,omitempty"` + GeoRedundantBackup *string `json:"geoRedundantBackup,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20231230.DataEncryption +// The date encryption for cmk. +type DataEncryption struct { + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + + // GeoBackupUserAssignedIdentityReference: Geo backup user identity resource id as identity can't cross region, need + // identity in same region as geo backup + GeoBackupUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"GeoBackupUserAssignedIdentityId" json:"geoBackupUserAssignedIdentityReference,omitempty"` + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + + // PrimaryUserAssignedIdentityReference: Primary user identity resource id + PrimaryUserAssignedIdentityReference *genruntime.ResourceReference `armReference:"PrimaryUserAssignedIdentityId" json:"primaryUserAssignedIdentityReference,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v1api20231230.DataEncryption_STATUS +// The date encryption for cmk. +type DataEncryption_STATUS struct { + GeoBackupKeyURI *string `json:"geoBackupKeyURI,omitempty"` + GeoBackupUserAssignedIdentityId *string `json:"geoBackupUserAssignedIdentityId,omitempty"` + PrimaryKeyURI *string `json:"primaryKeyURI,omitempty"` + PrimaryUserAssignedIdentityId *string `json:"primaryUserAssignedIdentityId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v1api20231230.FlexibleServerOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServerOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + ConfigMaps *FlexibleServerOperatorConfigMaps `json:"configMaps,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` + Secrets *FlexibleServerOperatorSecrets `json:"secrets,omitempty"` +} + +// Storage version of v1api20231230.HighAvailability +// High availability properties of a server +type HighAvailability struct { + Mode *string `json:"mode,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` +} + +// Storage version of v1api20231230.HighAvailability_STATUS +// High availability properties of a server +type HighAvailability_STATUS struct { + Mode *string `json:"mode,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StandbyAvailabilityZone *string `json:"standbyAvailabilityZone,omitempty"` + State *string `json:"state,omitempty"` +} + +// Storage version of v1api20231230.ImportSourceProperties +// Import source related properties. +type ImportSourceProperties struct { + DataDirPath *string `json:"dataDirPath,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SasToken *genruntime.SecretReference `json:"sasToken,omitempty"` + StorageType *string `json:"storageType,omitempty"` + StorageUrl *string `json:"storageUrl,omitempty"` +} + +// Storage version of v1api20231230.ImportSourceProperties_STATUS +// Import source related properties. +type ImportSourceProperties_STATUS struct { + DataDirPath *string `json:"dataDirPath,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StorageType *string `json:"storageType,omitempty"` + StorageUrl *string `json:"storageUrl,omitempty"` +} + +// Storage version of v1api20231230.MaintenanceWindow +// Maintenance window of a server. +type MaintenanceWindow struct { + CustomWindow *string `json:"customWindow,omitempty"` + DayOfWeek *int `json:"dayOfWeek,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StartHour *int `json:"startHour,omitempty"` + StartMinute *int `json:"startMinute,omitempty"` +} + +// Storage version of v1api20231230.MaintenanceWindow_STATUS +// Maintenance window of a server. +type MaintenanceWindow_STATUS struct { + CustomWindow *string `json:"customWindow,omitempty"` + DayOfWeek *int `json:"dayOfWeek,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StartHour *int `json:"startHour,omitempty"` + StartMinute *int `json:"startMinute,omitempty"` +} + +// Storage version of v1api20231230.MySQLServerIdentity +// Properties to configure Identity for Bring your Own Keys +type MySQLServerIdentity struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v1api20231230.MySQLServerIdentity_STATUS +// Properties to configure Identity for Bring your Own Keys +type MySQLServerIdentity_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]v1.JSON `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v1api20231230.MySQLServerSku +// Billing information related properties of a server. +type MySQLServerSku struct { + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +// Storage version of v1api20231230.MySQLServerSku_STATUS +// Billing information related properties of a server. +type MySQLServerSku_STATUS struct { + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +// Storage version of v1api20231230.Network +// Network related properties of a server +type Network struct { + // DelegatedSubnetResourceReference: Delegated subnet resource id used to setup vnet for a server. + DelegatedSubnetResourceReference *genruntime.ResourceReference `armReference:"DelegatedSubnetResourceId" json:"delegatedSubnetResourceReference,omitempty"` + + // PrivateDnsZoneResourceReference: Private DNS zone resource id. + PrivateDnsZoneResourceReference *genruntime.ResourceReference `armReference:"PrivateDnsZoneResourceId" json:"privateDnsZoneResourceReference,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` +} + +// Storage version of v1api20231230.Network_STATUS +// Network related properties of a server +type Network_STATUS struct { + DelegatedSubnetResourceId *string `json:"delegatedSubnetResourceId,omitempty"` + PrivateDnsZoneResourceId *string `json:"privateDnsZoneResourceId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` +} + +// Storage version of v1api20231230.PrivateEndpointConnection_STATUS +// The private endpoint connection resource. +type PrivateEndpointConnection_STATUS struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20231230.Storage +// Storage Profile properties of a server +type Storage struct { + AutoGrow *string `json:"autoGrow,omitempty"` + AutoIoScaling *string `json:"autoIoScaling,omitempty"` + Iops *int `json:"iops,omitempty"` + LogOnDisk *string `json:"logOnDisk,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StorageSizeGB *int `json:"storageSizeGB,omitempty"` +} + +// Storage version of v1api20231230.Storage_STATUS +// Storage Profile properties of a server +type Storage_STATUS struct { + AutoGrow *string `json:"autoGrow,omitempty"` + AutoIoScaling *string `json:"autoIoScaling,omitempty"` + Iops *int `json:"iops,omitempty"` + LogOnDisk *string `json:"logOnDisk,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StorageSizeGB *int `json:"storageSizeGB,omitempty"` + StorageSku *string `json:"storageSku,omitempty"` +} + +// Storage version of v1api20231230.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"` +} + +// Storage version of v1api20231230.FlexibleServerOperatorConfigMaps +type FlexibleServerOperatorConfigMaps struct { + AdministratorLogin *genruntime.ConfigMapDestination `json:"administratorLogin,omitempty"` + FullyQualifiedDomainName *genruntime.ConfigMapDestination `json:"fullyQualifiedDomainName,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20231230.FlexibleServerOperatorSecrets +type FlexibleServerOperatorSecrets struct { + FullyQualifiedDomainName *genruntime.SecretDestination `json:"fullyQualifiedDomainName,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20231230.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"` +} + +func init() { + SchemeBuilder.Register(&FlexibleServer{}, &FlexibleServerList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen_test.go b/v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen_test.go new file mode 100644 index 0000000000..182b39daa8 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_server_types_gen_test.go @@ -0,0 +1,1769 @@ +// 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_Backup_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 Backup via JSON returns original", + prop.ForAll(RunJSONSerializationTestForBackup, BackupGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForBackup runs a test to see if a specific instance of Backup round trips to JSON and back losslessly +func RunJSONSerializationTestForBackup(subject Backup) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Backup + 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 Backup instances for property testing - lazily instantiated by BackupGenerator() +var backupGenerator gopter.Gen + +// BackupGenerator returns a generator of Backup instances for property testing. +func BackupGenerator() gopter.Gen { + if backupGenerator != nil { + return backupGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForBackup(generators) + backupGenerator = gen.Struct(reflect.TypeOf(Backup{}), generators) + + return backupGenerator +} + +// AddIndependentPropertyGeneratorsForBackup is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForBackup(gens map[string]gopter.Gen) { + gens["BackupIntervalHours"] = gen.PtrOf(gen.Int()) + gens["BackupRetentionDays"] = gen.PtrOf(gen.Int()) + gens["GeoRedundantBackup"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Backup_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 Backup_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForBackup_STATUS, Backup_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForBackup_STATUS runs a test to see if a specific instance of Backup_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForBackup_STATUS(subject Backup_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Backup_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 Backup_STATUS instances for property testing - lazily instantiated by Backup_STATUSGenerator() +var backup_STATUSGenerator gopter.Gen + +// Backup_STATUSGenerator returns a generator of Backup_STATUS instances for property testing. +func Backup_STATUSGenerator() gopter.Gen { + if backup_STATUSGenerator != nil { + return backup_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForBackup_STATUS(generators) + backup_STATUSGenerator = gen.Struct(reflect.TypeOf(Backup_STATUS{}), generators) + + return backup_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForBackup_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForBackup_STATUS(gens map[string]gopter.Gen) { + gens["BackupIntervalHours"] = gen.PtrOf(gen.Int()) + gens["BackupRetentionDays"] = gen.PtrOf(gen.Int()) + gens["EarliestRestoreDate"] = gen.PtrOf(gen.AlphaString()) + gens["GeoRedundantBackup"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_DataEncryption_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 DataEncryption via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataEncryption, DataEncryptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataEncryption runs a test to see if a specific instance of DataEncryption round trips to JSON and back losslessly +func RunJSONSerializationTestForDataEncryption(subject DataEncryption) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataEncryption + 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 DataEncryption instances for property testing - lazily instantiated by DataEncryptionGenerator() +var dataEncryptionGenerator gopter.Gen + +// DataEncryptionGenerator returns a generator of DataEncryption instances for property testing. +func DataEncryptionGenerator() gopter.Gen { + if dataEncryptionGenerator != nil { + return dataEncryptionGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataEncryption(generators) + dataEncryptionGenerator = gen.Struct(reflect.TypeOf(DataEncryption{}), generators) + + return dataEncryptionGenerator +} + +// AddIndependentPropertyGeneratorsForDataEncryption is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataEncryption(gens map[string]gopter.Gen) { + gens["GeoBackupKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_DataEncryption_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 DataEncryption_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataEncryption_STATUS, DataEncryption_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataEncryption_STATUS runs a test to see if a specific instance of DataEncryption_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDataEncryption_STATUS(subject DataEncryption_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataEncryption_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 DataEncryption_STATUS instances for property testing - lazily instantiated by +// DataEncryption_STATUSGenerator() +var dataEncryption_STATUSGenerator gopter.Gen + +// DataEncryption_STATUSGenerator returns a generator of DataEncryption_STATUS instances for property testing. +func DataEncryption_STATUSGenerator() gopter.Gen { + if dataEncryption_STATUSGenerator != nil { + return dataEncryption_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataEncryption_STATUS(generators) + dataEncryption_STATUSGenerator = gen.Struct(reflect.TypeOf(DataEncryption_STATUS{}), generators) + + return dataEncryption_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDataEncryption_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataEncryption_STATUS(gens map[string]gopter.Gen) { + gens["GeoBackupKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["GeoBackupUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryKeyURI"] = gen.PtrOf(gen.AlphaString()) + gens["PrimaryUserAssignedIdentityId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_FlexibleServer_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 FlexibleServer via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer, FlexibleServerGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer runs a test to see if a specific instance of FlexibleServer round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer(subject FlexibleServer) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer + 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 FlexibleServer instances for property testing - lazily instantiated by FlexibleServerGenerator() +var flexibleServerGenerator gopter.Gen + +// FlexibleServerGenerator returns a generator of FlexibleServer instances for property testing. +func FlexibleServerGenerator() gopter.Gen { + if flexibleServerGenerator != nil { + return flexibleServerGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServer(generators) + flexibleServerGenerator = gen.Struct(reflect.TypeOf(FlexibleServer{}), generators) + + return flexibleServerGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServer is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServer_SpecGenerator() + gens["Status"] = FlexibleServer_STATUSGenerator() +} + +func Test_FlexibleServerOperatorConfigMaps_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 FlexibleServerOperatorConfigMaps via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServerOperatorConfigMaps, FlexibleServerOperatorConfigMapsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServerOperatorConfigMaps runs a test to see if a specific instance of FlexibleServerOperatorConfigMaps round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServerOperatorConfigMaps(subject FlexibleServerOperatorConfigMaps) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServerOperatorConfigMaps + 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 FlexibleServerOperatorConfigMaps instances for property testing - lazily instantiated by +// FlexibleServerOperatorConfigMapsGenerator() +var flexibleServerOperatorConfigMapsGenerator gopter.Gen + +// FlexibleServerOperatorConfigMapsGenerator returns a generator of FlexibleServerOperatorConfigMaps instances for property testing. +func FlexibleServerOperatorConfigMapsGenerator() gopter.Gen { + if flexibleServerOperatorConfigMapsGenerator != nil { + return flexibleServerOperatorConfigMapsGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServerOperatorConfigMapsGenerator = gen.Struct(reflect.TypeOf(FlexibleServerOperatorConfigMaps{}), generators) + + return flexibleServerOperatorConfigMapsGenerator +} + +func Test_FlexibleServerOperatorSecrets_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 FlexibleServerOperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServerOperatorSecrets, FlexibleServerOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServerOperatorSecrets runs a test to see if a specific instance of FlexibleServerOperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServerOperatorSecrets(subject FlexibleServerOperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServerOperatorSecrets + 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 FlexibleServerOperatorSecrets instances for property testing - lazily instantiated by +// FlexibleServerOperatorSecretsGenerator() +var flexibleServerOperatorSecretsGenerator gopter.Gen + +// FlexibleServerOperatorSecretsGenerator returns a generator of FlexibleServerOperatorSecrets instances for property testing. +func FlexibleServerOperatorSecretsGenerator() gopter.Gen { + if flexibleServerOperatorSecretsGenerator != nil { + return flexibleServerOperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServerOperatorSecretsGenerator = gen.Struct(reflect.TypeOf(FlexibleServerOperatorSecrets{}), generators) + + return flexibleServerOperatorSecretsGenerator +} + +func Test_FlexibleServerOperatorSpec_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 FlexibleServerOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServerOperatorSpec, FlexibleServerOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServerOperatorSpec runs a test to see if a specific instance of FlexibleServerOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServerOperatorSpec(subject FlexibleServerOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServerOperatorSpec + 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 FlexibleServerOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServerOperatorSpecGenerator() +var flexibleServerOperatorSpecGenerator gopter.Gen + +// FlexibleServerOperatorSpecGenerator returns a generator of FlexibleServerOperatorSpec instances for property testing. +func FlexibleServerOperatorSpecGenerator() gopter.Gen { + if flexibleServerOperatorSpecGenerator != nil { + return flexibleServerOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec(generators) + flexibleServerOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServerOperatorSpec{}), generators) + + return flexibleServerOperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServerOperatorSpec(gens map[string]gopter.Gen) { + gens["ConfigMaps"] = gen.PtrOf(FlexibleServerOperatorConfigMapsGenerator()) + gens["Secrets"] = gen.PtrOf(FlexibleServerOperatorSecretsGenerator()) +} + +func Test_FlexibleServer_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 FlexibleServer_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer_STATUS, FlexibleServer_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer_STATUS runs a test to see if a specific instance of FlexibleServer_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer_STATUS(subject FlexibleServer_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer_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 FlexibleServer_STATUS instances for property testing - lazily instantiated by +// FlexibleServer_STATUSGenerator() +var flexibleServer_STATUSGenerator gopter.Gen + +// FlexibleServer_STATUSGenerator returns a generator of FlexibleServer_STATUS instances for property testing. +// We first initialize flexibleServer_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 FlexibleServer_STATUSGenerator() gopter.Gen { + if flexibleServer_STATUSGenerator != nil { + return flexibleServer_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(generators) + flexibleServer_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(generators) + flexibleServer_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_STATUS{}), generators) + + return flexibleServer_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServer_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServer_STATUS(gens map[string]gopter.Gen) { + gens["AdministratorLogin"] = gen.PtrOf(gen.AlphaString()) + gens["AvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["CreateMode"] = gen.PtrOf(gen.AlphaString()) + gens["FullyQualifiedDomainName"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ReplicaCapacity"] = gen.PtrOf(gen.Int()) + gens["ReplicationRole"] = gen.PtrOf(gen.AlphaString()) + gens["RestorePointInTime"] = gen.PtrOf(gen.AlphaString()) + gens["SourceServerResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["State"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServer_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer_STATUS(gens map[string]gopter.Gen) { + gens["Backup"] = gen.PtrOf(Backup_STATUSGenerator()) + gens["DataEncryption"] = gen.PtrOf(DataEncryption_STATUSGenerator()) + gens["HighAvailability"] = gen.PtrOf(HighAvailability_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(MySQLServerIdentity_STATUSGenerator()) + gens["ImportSourceProperties"] = gen.PtrOf(ImportSourceProperties_STATUSGenerator()) + gens["MaintenanceWindow"] = gen.PtrOf(MaintenanceWindow_STATUSGenerator()) + gens["Network"] = gen.PtrOf(Network_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(MySQLServerSku_STATUSGenerator()) + gens["Storage"] = gen.PtrOf(Storage_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServer_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 FlexibleServer_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServer_Spec, FlexibleServer_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServer_Spec runs a test to see if a specific instance of FlexibleServer_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServer_Spec(subject FlexibleServer_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServer_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 FlexibleServer_Spec instances for property testing - lazily instantiated by +// FlexibleServer_SpecGenerator() +var flexibleServer_SpecGenerator gopter.Gen + +// FlexibleServer_SpecGenerator returns a generator of FlexibleServer_Spec instances for property testing. +// We first initialize flexibleServer_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 FlexibleServer_SpecGenerator() gopter.Gen { + if flexibleServer_SpecGenerator != nil { + return flexibleServer_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_Spec(generators) + flexibleServer_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServer_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServer_Spec(generators) + flexibleServer_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServer_Spec{}), generators) + + return flexibleServer_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServer_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.Gen) { + gens["AdministratorLogin"] = gen.PtrOf(gen.AlphaString()) + gens["AvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["AzureName"] = gen.AlphaString() + gens["CreateMode"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["ReplicationRole"] = gen.PtrOf(gen.AlphaString()) + gens["RestorePointInTime"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Version"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServer_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServer_Spec(gens map[string]gopter.Gen) { + gens["Backup"] = gen.PtrOf(BackupGenerator()) + gens["DataEncryption"] = gen.PtrOf(DataEncryptionGenerator()) + gens["HighAvailability"] = gen.PtrOf(HighAvailabilityGenerator()) + gens["Identity"] = gen.PtrOf(MySQLServerIdentityGenerator()) + gens["ImportSourceProperties"] = gen.PtrOf(ImportSourcePropertiesGenerator()) + gens["MaintenanceWindow"] = gen.PtrOf(MaintenanceWindowGenerator()) + gens["Network"] = gen.PtrOf(NetworkGenerator()) + gens["OperatorSpec"] = gen.PtrOf(FlexibleServerOperatorSpecGenerator()) + gens["Sku"] = gen.PtrOf(MySQLServerSkuGenerator()) + gens["Storage"] = gen.PtrOf(StorageGenerator()) +} + +func Test_HighAvailability_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 HighAvailability via JSON returns original", + prop.ForAll(RunJSONSerializationTestForHighAvailability, HighAvailabilityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForHighAvailability runs a test to see if a specific instance of HighAvailability round trips to JSON and back losslessly +func RunJSONSerializationTestForHighAvailability(subject HighAvailability) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual HighAvailability + 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 HighAvailability instances for property testing - lazily instantiated by HighAvailabilityGenerator() +var highAvailabilityGenerator gopter.Gen + +// HighAvailabilityGenerator returns a generator of HighAvailability instances for property testing. +func HighAvailabilityGenerator() gopter.Gen { + if highAvailabilityGenerator != nil { + return highAvailabilityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForHighAvailability(generators) + highAvailabilityGenerator = gen.Struct(reflect.TypeOf(HighAvailability{}), generators) + + return highAvailabilityGenerator +} + +// AddIndependentPropertyGeneratorsForHighAvailability is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForHighAvailability(gens map[string]gopter.Gen) { + gens["Mode"] = gen.PtrOf(gen.AlphaString()) + gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_HighAvailability_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 HighAvailability_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForHighAvailability_STATUS, HighAvailability_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForHighAvailability_STATUS runs a test to see if a specific instance of HighAvailability_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForHighAvailability_STATUS(subject HighAvailability_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual HighAvailability_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 HighAvailability_STATUS instances for property testing - lazily instantiated by +// HighAvailability_STATUSGenerator() +var highAvailability_STATUSGenerator gopter.Gen + +// HighAvailability_STATUSGenerator returns a generator of HighAvailability_STATUS instances for property testing. +func HighAvailability_STATUSGenerator() gopter.Gen { + if highAvailability_STATUSGenerator != nil { + return highAvailability_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForHighAvailability_STATUS(generators) + highAvailability_STATUSGenerator = gen.Struct(reflect.TypeOf(HighAvailability_STATUS{}), generators) + + return highAvailability_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForHighAvailability_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForHighAvailability_STATUS(gens map[string]gopter.Gen) { + gens["Mode"] = gen.PtrOf(gen.AlphaString()) + gens["StandbyAvailabilityZone"] = gen.PtrOf(gen.AlphaString()) + gens["State"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ImportSourceProperties_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 ImportSourceProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForImportSourceProperties, ImportSourcePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForImportSourceProperties runs a test to see if a specific instance of ImportSourceProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForImportSourceProperties(subject ImportSourceProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ImportSourceProperties + 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 ImportSourceProperties instances for property testing - lazily instantiated by +// ImportSourcePropertiesGenerator() +var importSourcePropertiesGenerator gopter.Gen + +// ImportSourcePropertiesGenerator returns a generator of ImportSourceProperties instances for property testing. +func ImportSourcePropertiesGenerator() gopter.Gen { + if importSourcePropertiesGenerator != nil { + return importSourcePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForImportSourceProperties(generators) + importSourcePropertiesGenerator = gen.Struct(reflect.TypeOf(ImportSourceProperties{}), generators) + + return importSourcePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForImportSourceProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForImportSourceProperties(gens map[string]gopter.Gen) { + gens["DataDirPath"] = gen.PtrOf(gen.AlphaString()) + gens["StorageType"] = gen.PtrOf(gen.AlphaString()) + gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ImportSourceProperties_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 ImportSourceProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForImportSourceProperties_STATUS, ImportSourceProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForImportSourceProperties_STATUS runs a test to see if a specific instance of ImportSourceProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForImportSourceProperties_STATUS(subject ImportSourceProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ImportSourceProperties_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 ImportSourceProperties_STATUS instances for property testing - lazily instantiated by +// ImportSourceProperties_STATUSGenerator() +var importSourceProperties_STATUSGenerator gopter.Gen + +// ImportSourceProperties_STATUSGenerator returns a generator of ImportSourceProperties_STATUS instances for property testing. +func ImportSourceProperties_STATUSGenerator() gopter.Gen { + if importSourceProperties_STATUSGenerator != nil { + return importSourceProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(generators) + importSourceProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ImportSourceProperties_STATUS{}), generators) + + return importSourceProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForImportSourceProperties_STATUS(gens map[string]gopter.Gen) { + gens["DataDirPath"] = gen.PtrOf(gen.AlphaString()) + gens["StorageType"] = gen.PtrOf(gen.AlphaString()) + gens["StorageUrl"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_MaintenanceWindow_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 MaintenanceWindow via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMaintenanceWindow, MaintenanceWindowGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMaintenanceWindow runs a test to see if a specific instance of MaintenanceWindow round trips to JSON and back losslessly +func RunJSONSerializationTestForMaintenanceWindow(subject MaintenanceWindow) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MaintenanceWindow + 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 MaintenanceWindow instances for property testing - lazily instantiated by MaintenanceWindowGenerator() +var maintenanceWindowGenerator gopter.Gen + +// MaintenanceWindowGenerator returns a generator of MaintenanceWindow instances for property testing. +func MaintenanceWindowGenerator() gopter.Gen { + if maintenanceWindowGenerator != nil { + return maintenanceWindowGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMaintenanceWindow(generators) + maintenanceWindowGenerator = gen.Struct(reflect.TypeOf(MaintenanceWindow{}), generators) + + return maintenanceWindowGenerator +} + +// AddIndependentPropertyGeneratorsForMaintenanceWindow is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMaintenanceWindow(gens map[string]gopter.Gen) { + gens["CustomWindow"] = gen.PtrOf(gen.AlphaString()) + gens["DayOfWeek"] = gen.PtrOf(gen.Int()) + gens["StartHour"] = gen.PtrOf(gen.Int()) + gens["StartMinute"] = gen.PtrOf(gen.Int()) +} + +func Test_MaintenanceWindow_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 MaintenanceWindow_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMaintenanceWindow_STATUS, MaintenanceWindow_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMaintenanceWindow_STATUS runs a test to see if a specific instance of MaintenanceWindow_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMaintenanceWindow_STATUS(subject MaintenanceWindow_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MaintenanceWindow_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 MaintenanceWindow_STATUS instances for property testing - lazily instantiated by +// MaintenanceWindow_STATUSGenerator() +var maintenanceWindow_STATUSGenerator gopter.Gen + +// MaintenanceWindow_STATUSGenerator returns a generator of MaintenanceWindow_STATUS instances for property testing. +func MaintenanceWindow_STATUSGenerator() gopter.Gen { + if maintenanceWindow_STATUSGenerator != nil { + return maintenanceWindow_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(generators) + maintenanceWindow_STATUSGenerator = gen.Struct(reflect.TypeOf(MaintenanceWindow_STATUS{}), generators) + + return maintenanceWindow_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMaintenanceWindow_STATUS(gens map[string]gopter.Gen) { + gens["CustomWindow"] = gen.PtrOf(gen.AlphaString()) + gens["DayOfWeek"] = gen.PtrOf(gen.Int()) + gens["StartHour"] = gen.PtrOf(gen.Int()) + gens["StartMinute"] = gen.PtrOf(gen.Int()) +} + +func Test_MySQLServerIdentity_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 MySQLServerIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerIdentity, MySQLServerIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerIdentity runs a test to see if a specific instance of MySQLServerIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerIdentity(subject MySQLServerIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerIdentity + 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 MySQLServerIdentity instances for property testing - lazily instantiated by +// MySQLServerIdentityGenerator() +var mySQLServerIdentityGenerator gopter.Gen + +// MySQLServerIdentityGenerator returns a generator of MySQLServerIdentity instances for property testing. +// We first initialize mySQLServerIdentityGenerator 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 MySQLServerIdentityGenerator() gopter.Gen { + if mySQLServerIdentityGenerator != nil { + return mySQLServerIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity(generators) + mySQLServerIdentityGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity(generators) + AddRelatedPropertyGeneratorsForMySQLServerIdentity(generators) + mySQLServerIdentityGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity{}), generators) + + return mySQLServerIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForMySQLServerIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForMySQLServerIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_MySQLServerIdentity_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 MySQLServerIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerIdentity_STATUS, MySQLServerIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerIdentity_STATUS runs a test to see if a specific instance of MySQLServerIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerIdentity_STATUS(subject MySQLServerIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerIdentity_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 MySQLServerIdentity_STATUS instances for property testing - lazily instantiated by +// MySQLServerIdentity_STATUSGenerator() +var mySQLServerIdentity_STATUSGenerator gopter.Gen + +// MySQLServerIdentity_STATUSGenerator returns a generator of MySQLServerIdentity_STATUS instances for property testing. +func MySQLServerIdentity_STATUSGenerator() gopter.Gen { + if mySQLServerIdentity_STATUSGenerator != nil { + return mySQLServerIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(generators) + mySQLServerIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(MySQLServerIdentity_STATUS{}), generators) + + return mySQLServerIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_MySQLServerSku_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 MySQLServerSku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerSku, MySQLServerSkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerSku runs a test to see if a specific instance of MySQLServerSku round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerSku(subject MySQLServerSku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerSku + 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 MySQLServerSku instances for property testing - lazily instantiated by MySQLServerSkuGenerator() +var mySQLServerSkuGenerator gopter.Gen + +// MySQLServerSkuGenerator returns a generator of MySQLServerSku instances for property testing. +func MySQLServerSkuGenerator() gopter.Gen { + if mySQLServerSkuGenerator != nil { + return mySQLServerSkuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerSku(generators) + mySQLServerSkuGenerator = gen.Struct(reflect.TypeOf(MySQLServerSku{}), generators) + + return mySQLServerSkuGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerSku(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_MySQLServerSku_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 MySQLServerSku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForMySQLServerSku_STATUS, MySQLServerSku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForMySQLServerSku_STATUS runs a test to see if a specific instance of MySQLServerSku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForMySQLServerSku_STATUS(subject MySQLServerSku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual MySQLServerSku_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 MySQLServerSku_STATUS instances for property testing - lazily instantiated by +// MySQLServerSku_STATUSGenerator() +var mySQLServerSku_STATUSGenerator gopter.Gen + +// MySQLServerSku_STATUSGenerator returns a generator of MySQLServerSku_STATUS instances for property testing. +func MySQLServerSku_STATUSGenerator() gopter.Gen { + if mySQLServerSku_STATUSGenerator != nil { + return mySQLServerSku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(generators) + mySQLServerSku_STATUSGenerator = gen.Struct(reflect.TypeOf(MySQLServerSku_STATUS{}), generators) + + return mySQLServerSku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForMySQLServerSku_STATUS(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Network_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 Network via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetwork, NetworkGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetwork runs a test to see if a specific instance of Network round trips to JSON and back losslessly +func RunJSONSerializationTestForNetwork(subject Network) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Network + 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 Network instances for property testing - lazily instantiated by NetworkGenerator() +var networkGenerator gopter.Gen + +// NetworkGenerator returns a generator of Network instances for property testing. +func NetworkGenerator() gopter.Gen { + if networkGenerator != nil { + return networkGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetwork(generators) + networkGenerator = gen.Struct(reflect.TypeOf(Network{}), generators) + + return networkGenerator +} + +// AddIndependentPropertyGeneratorsForNetwork is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetwork(gens map[string]gopter.Gen) { + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Network_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 Network_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetwork_STATUS, Network_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetwork_STATUS runs a test to see if a specific instance of Network_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetwork_STATUS(subject Network_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Network_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 Network_STATUS instances for property testing - lazily instantiated by Network_STATUSGenerator() +var network_STATUSGenerator gopter.Gen + +// Network_STATUSGenerator returns a generator of Network_STATUS instances for property testing. +func Network_STATUSGenerator() gopter.Gen { + if network_STATUSGenerator != nil { + return network_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetwork_STATUS(generators) + network_STATUSGenerator = gen.Struct(reflect.TypeOf(Network_STATUS{}), generators) + + return network_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetwork_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetwork_STATUS(gens map[string]gopter.Gen) { + gens["DelegatedSubnetResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PrivateDnsZoneResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS runs a test to see if a specific instance of PrivateEndpointConnection_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnection_STATUSGenerator() +var privateEndpointConnection_STATUSGenerator gopter.Gen + +// PrivateEndpointConnection_STATUSGenerator returns a generator of PrivateEndpointConnection_STATUS instances for property testing. +func PrivateEndpointConnection_STATUSGenerator() gopter.Gen { + if privateEndpointConnection_STATUSGenerator != nil { + return privateEndpointConnection_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(generators) + privateEndpointConnection_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS{}), generators) + + return privateEndpointConnection_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Storage_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 Storage via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStorage, StorageGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStorage runs a test to see if a specific instance of Storage round trips to JSON and back losslessly +func RunJSONSerializationTestForStorage(subject Storage) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Storage + 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 Storage instances for property testing - lazily instantiated by StorageGenerator() +var storageGenerator gopter.Gen + +// StorageGenerator returns a generator of Storage instances for property testing. +func StorageGenerator() gopter.Gen { + if storageGenerator != nil { + return storageGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStorage(generators) + storageGenerator = gen.Struct(reflect.TypeOf(Storage{}), generators) + + return storageGenerator +} + +// AddIndependentPropertyGeneratorsForStorage is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStorage(gens map[string]gopter.Gen) { + gens["AutoGrow"] = gen.PtrOf(gen.AlphaString()) + gens["AutoIoScaling"] = gen.PtrOf(gen.AlphaString()) + gens["Iops"] = gen.PtrOf(gen.Int()) + gens["LogOnDisk"] = gen.PtrOf(gen.AlphaString()) + gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) +} + +func Test_Storage_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 Storage_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStorage_STATUS, Storage_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStorage_STATUS runs a test to see if a specific instance of Storage_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForStorage_STATUS(subject Storage_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Storage_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 Storage_STATUS instances for property testing - lazily instantiated by Storage_STATUSGenerator() +var storage_STATUSGenerator gopter.Gen + +// Storage_STATUSGenerator returns a generator of Storage_STATUS instances for property testing. +func Storage_STATUSGenerator() gopter.Gen { + if storage_STATUSGenerator != nil { + return storage_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStorage_STATUS(generators) + storage_STATUSGenerator = gen.Struct(reflect.TypeOf(Storage_STATUS{}), generators) + + return storage_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForStorage_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStorage_STATUS(gens map[string]gopter.Gen) { + gens["AutoGrow"] = gen.PtrOf(gen.AlphaString()) + gens["AutoIoScaling"] = gen.PtrOf(gen.AlphaString()) + gens["Iops"] = gen.PtrOf(gen.Int()) + gens["LogOnDisk"] = gen.PtrOf(gen.AlphaString()) + gens["StorageSizeGB"] = gen.PtrOf(gen.Int()) + gens["StorageSku"] = gen.PtrOf(gen.AlphaString()) +} + +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()) +} + +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/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen.go new file mode 100644 index 0000000000..2d67238d76 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen.go @@ -0,0 +1,255 @@ +// 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=dbformysql.azure.com,resources=flexibleserversadministrators,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversadministrators/status,flexibleserversadministrators/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 v1api20231230.FlexibleServersAdministrator +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/AAD/stable/2023-12-30/AzureADAdministrator.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/administrators/{administratorName} +type FlexibleServersAdministrator struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersAdministrator_Spec `json:"spec,omitempty"` + Status FlexibleServersAdministrator_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersAdministrator{} + +// GetConditions returns the conditions of the resource +func (administrator *FlexibleServersAdministrator) GetConditions() conditions.Conditions { + return administrator.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (administrator *FlexibleServersAdministrator) SetConditions(conditions conditions.Conditions) { + administrator.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &FlexibleServersAdministrator{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (administrator *FlexibleServersAdministrator) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if administrator.Spec.OperatorSpec == nil { + return nil + } + return administrator.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersAdministrator{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (administrator *FlexibleServersAdministrator) SecretDestinationExpressions() []*core.DestinationExpression { + if administrator.Spec.OperatorSpec == nil { + return nil + } + return administrator.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &FlexibleServersAdministrator{} + +// AzureName returns the Azure name of the resource (always "ActiveDirectory") +func (administrator *FlexibleServersAdministrator) AzureName() string { + return "ActiveDirectory" +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (administrator FlexibleServersAdministrator) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (administrator *FlexibleServersAdministrator) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (administrator *FlexibleServersAdministrator) GetSpec() genruntime.ConvertibleSpec { + return &administrator.Spec +} + +// GetStatus returns the status of this resource +func (administrator *FlexibleServersAdministrator) GetStatus() genruntime.ConvertibleStatus { + return &administrator.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (administrator *FlexibleServersAdministrator) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/administrators" +func (administrator *FlexibleServersAdministrator) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/administrators" +} + +// NewEmptyStatus returns a new empty (blank) status +func (administrator *FlexibleServersAdministrator) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersAdministrator_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (administrator *FlexibleServersAdministrator) Owner() *genruntime.ResourceReference { + if administrator.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(administrator.Spec) + return administrator.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (administrator *FlexibleServersAdministrator) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersAdministrator_STATUS); ok { + administrator.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersAdministrator_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + administrator.Status = st + return nil +} + +// Hub marks that this FlexibleServersAdministrator is the hub type for conversion +func (administrator *FlexibleServersAdministrator) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (administrator *FlexibleServersAdministrator) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: administrator.Spec.OriginalVersion, + Kind: "FlexibleServersAdministrator", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20231230.FlexibleServersAdministrator +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/AAD/stable/2023-12-30/AzureADAdministrator.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/administrators/{administratorName} +type FlexibleServersAdministratorList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersAdministrator `json:"items"` +} + +// Storage version of v1api20231230.FlexibleServersAdministrator_Spec +type FlexibleServersAdministrator_Spec struct { + AdministratorType *string `json:"administratorType,omitempty"` + + // IdentityResourceReference: The resource id of the identity used for AAD Authentication. + IdentityResourceReference *genruntime.ResourceReference `armReference:"IdentityResourceId" json:"identityResourceReference,omitempty"` + Login *string `json:"login,omitempty"` + OperatorSpec *FlexibleServersAdministratorOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Sid *string `json:"sid,omitempty" optionalConfigMapPair:"Sid"` + SidFromConfig *genruntime.ConfigMapReference `json:"sidFromConfig,omitempty" optionalConfigMapPair:"Sid"` + TenantId *string `json:"tenantId,omitempty" optionalConfigMapPair:"TenantId"` + TenantIdFromConfig *genruntime.ConfigMapReference `json:"tenantIdFromConfig,omitempty" optionalConfigMapPair:"TenantId"` +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersAdministrator_Spec{} + +// ConvertSpecFrom populates our FlexibleServersAdministrator_Spec from the provided source +func (administrator *FlexibleServersAdministrator_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == administrator { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(administrator) +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersAdministrator_Spec +func (administrator *FlexibleServersAdministrator_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == administrator { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(administrator) +} + +// Storage version of v1api20231230.FlexibleServersAdministrator_STATUS +type FlexibleServersAdministrator_STATUS struct { + AdministratorType *string `json:"administratorType,omitempty"` + Conditions []conditions.Condition `json:"conditions,omitempty"` + Id *string `json:"id,omitempty"` + IdentityResourceId *string `json:"identityResourceId,omitempty"` + Login *string `json:"login,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Sid *string `json:"sid,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + TenantId *string `json:"tenantId,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServersAdministrator_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersAdministrator_STATUS from the provided source +func (administrator *FlexibleServersAdministrator_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == administrator { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(administrator) +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersAdministrator_STATUS +func (administrator *FlexibleServersAdministrator_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == administrator { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(administrator) +} + +// Storage version of v1api20231230.FlexibleServersAdministratorOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServersAdministratorOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&FlexibleServersAdministrator{}, &FlexibleServersAdministratorList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen_test.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen_test.go new file mode 100644 index 0000000000..c06cdd5710 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_administrator_types_gen_test.go @@ -0,0 +1,296 @@ +// 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_FlexibleServersAdministrator_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 FlexibleServersAdministrator via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator, FlexibleServersAdministratorGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator runs a test to see if a specific instance of FlexibleServersAdministrator round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator(subject FlexibleServersAdministrator) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator + 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 FlexibleServersAdministrator instances for property testing - lazily instantiated by +// FlexibleServersAdministratorGenerator() +var flexibleServersAdministratorGenerator gopter.Gen + +// FlexibleServersAdministratorGenerator returns a generator of FlexibleServersAdministrator instances for property testing. +func FlexibleServersAdministratorGenerator() gopter.Gen { + if flexibleServersAdministratorGenerator != nil { + return flexibleServersAdministratorGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator(generators) + flexibleServersAdministratorGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator{}), generators) + + return flexibleServersAdministratorGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersAdministrator_SpecGenerator() + gens["Status"] = FlexibleServersAdministrator_STATUSGenerator() +} + +func Test_FlexibleServersAdministratorOperatorSpec_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 FlexibleServersAdministratorOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministratorOperatorSpec, FlexibleServersAdministratorOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministratorOperatorSpec runs a test to see if a specific instance of FlexibleServersAdministratorOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministratorOperatorSpec(subject FlexibleServersAdministratorOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministratorOperatorSpec + 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 FlexibleServersAdministratorOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersAdministratorOperatorSpecGenerator() +var flexibleServersAdministratorOperatorSpecGenerator gopter.Gen + +// FlexibleServersAdministratorOperatorSpecGenerator returns a generator of FlexibleServersAdministratorOperatorSpec instances for property testing. +func FlexibleServersAdministratorOperatorSpecGenerator() gopter.Gen { + if flexibleServersAdministratorOperatorSpecGenerator != nil { + return flexibleServersAdministratorOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersAdministratorOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministratorOperatorSpec{}), generators) + + return flexibleServersAdministratorOperatorSpecGenerator +} + +func Test_FlexibleServersAdministrator_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 FlexibleServersAdministrator_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator_STATUS, FlexibleServersAdministrator_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator_STATUS runs a test to see if a specific instance of FlexibleServersAdministrator_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator_STATUS(subject FlexibleServersAdministrator_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator_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 FlexibleServersAdministrator_STATUS instances for property testing - lazily instantiated by +// FlexibleServersAdministrator_STATUSGenerator() +var flexibleServersAdministrator_STATUSGenerator gopter.Gen + +// FlexibleServersAdministrator_STATUSGenerator returns a generator of FlexibleServersAdministrator_STATUS instances for property testing. +// We first initialize flexibleServersAdministrator_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 FlexibleServersAdministrator_STATUSGenerator() gopter.Gen { + if flexibleServersAdministrator_STATUSGenerator != nil { + return flexibleServersAdministrator_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + flexibleServersAdministrator_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(generators) + flexibleServersAdministrator_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_STATUS{}), generators) + + return flexibleServersAdministrator_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map[string]gopter.Gen) { + gens["AdministratorType"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["IdentityResourceId"] = gen.PtrOf(gen.AlphaString()) + gens["Login"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Sid"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersAdministrator_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 FlexibleServersAdministrator_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersAdministrator_Spec, FlexibleServersAdministrator_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersAdministrator_Spec runs a test to see if a specific instance of FlexibleServersAdministrator_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersAdministrator_Spec(subject FlexibleServersAdministrator_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersAdministrator_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 FlexibleServersAdministrator_Spec instances for property testing - lazily instantiated by +// FlexibleServersAdministrator_SpecGenerator() +var flexibleServersAdministrator_SpecGenerator gopter.Gen + +// FlexibleServersAdministrator_SpecGenerator returns a generator of FlexibleServersAdministrator_Spec instances for property testing. +// We first initialize flexibleServersAdministrator_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 FlexibleServersAdministrator_SpecGenerator() gopter.Gen { + if flexibleServersAdministrator_SpecGenerator != nil { + return flexibleServersAdministrator_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + flexibleServersAdministrator_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec(generators) + flexibleServersAdministrator_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersAdministrator_Spec{}), generators) + + return flexibleServersAdministrator_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersAdministrator_Spec(gens map[string]gopter.Gen) { + gens["AdministratorType"] = gen.PtrOf(gen.AlphaString()) + gens["Login"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["Sid"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersAdministrator_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersAdministratorOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen.go new file mode 100644 index 0000000000..f3c05e99da --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen.go @@ -0,0 +1,257 @@ +// 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=dbformysql.azure.com,resources=flexibleserversconfigurations,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversconfigurations/status,flexibleserversconfigurations/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 v1api20231230.FlexibleServersConfiguration +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Configurations/stable/2023-12-30/Configurations.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/configurations/{configurationName} +type FlexibleServersConfiguration struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersConfiguration_Spec `json:"spec,omitempty"` + Status FlexibleServersConfiguration_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersConfiguration{} + +// GetConditions returns the conditions of the resource +func (configuration *FlexibleServersConfiguration) GetConditions() conditions.Conditions { + return configuration.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (configuration *FlexibleServersConfiguration) SetConditions(conditions conditions.Conditions) { + configuration.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &FlexibleServersConfiguration{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (configuration *FlexibleServersConfiguration) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if configuration.Spec.OperatorSpec == nil { + return nil + } + return configuration.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersConfiguration{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (configuration *FlexibleServersConfiguration) SecretDestinationExpressions() []*core.DestinationExpression { + if configuration.Spec.OperatorSpec == nil { + return nil + } + return configuration.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &FlexibleServersConfiguration{} + +// AzureName returns the Azure name of the resource +func (configuration *FlexibleServersConfiguration) AzureName() string { + return configuration.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (configuration FlexibleServersConfiguration) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (configuration *FlexibleServersConfiguration) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (configuration *FlexibleServersConfiguration) GetSpec() genruntime.ConvertibleSpec { + return &configuration.Spec +} + +// GetStatus returns the status of this resource +func (configuration *FlexibleServersConfiguration) GetStatus() genruntime.ConvertibleStatus { + return &configuration.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (configuration *FlexibleServersConfiguration) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/configurations" +func (configuration *FlexibleServersConfiguration) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/configurations" +} + +// NewEmptyStatus returns a new empty (blank) status +func (configuration *FlexibleServersConfiguration) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersConfiguration_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (configuration *FlexibleServersConfiguration) Owner() *genruntime.ResourceReference { + if configuration.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(configuration.Spec) + return configuration.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (configuration *FlexibleServersConfiguration) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersConfiguration_STATUS); ok { + configuration.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersConfiguration_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + configuration.Status = st + return nil +} + +// Hub marks that this FlexibleServersConfiguration is the hub type for conversion +func (configuration *FlexibleServersConfiguration) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (configuration *FlexibleServersConfiguration) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: configuration.Spec.OriginalVersion, + Kind: "FlexibleServersConfiguration", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20231230.FlexibleServersConfiguration +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Configurations/stable/2023-12-30/Configurations.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/configurations/{configurationName} +type FlexibleServersConfigurationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersConfiguration `json:"items"` +} + +// Storage version of v1api20231230.FlexibleServersConfiguration_Spec +type FlexibleServersConfiguration_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"` + CurrentValue *string `json:"currentValue,omitempty"` + OperatorSpec *FlexibleServersConfigurationOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Source *string `json:"source,omitempty"` + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersConfiguration_Spec{} + +// ConvertSpecFrom populates our FlexibleServersConfiguration_Spec from the provided source +func (configuration *FlexibleServersConfiguration_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == configuration { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(configuration) +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersConfiguration_Spec +func (configuration *FlexibleServersConfiguration_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == configuration { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(configuration) +} + +// Storage version of v1api20231230.FlexibleServersConfiguration_STATUS +type FlexibleServersConfiguration_STATUS struct { + AllowedValues *string `json:"allowedValues,omitempty"` + Conditions []conditions.Condition `json:"conditions,omitempty"` + CurrentValue *string `json:"currentValue,omitempty"` + DataType *string `json:"dataType,omitempty"` + DefaultValue *string `json:"defaultValue,omitempty"` + Description *string `json:"description,omitempty"` + DocumentationLink *string `json:"documentationLink,omitempty"` + Id *string `json:"id,omitempty"` + IsConfigPendingRestart *string `json:"isConfigPendingRestart,omitempty"` + IsDynamicConfig *string `json:"isDynamicConfig,omitempty"` + IsReadOnly *string `json:"isReadOnly,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Source *string `json:"source,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServersConfiguration_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersConfiguration_STATUS from the provided source +func (configuration *FlexibleServersConfiguration_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == configuration { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(configuration) +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersConfiguration_STATUS +func (configuration *FlexibleServersConfiguration_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == configuration { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(configuration) +} + +// Storage version of v1api20231230.FlexibleServersConfigurationOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServersConfigurationOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&FlexibleServersConfiguration{}, &FlexibleServersConfigurationList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen_test.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen_test.go new file mode 100644 index 0000000000..e6fa648785 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_configuration_types_gen_test.go @@ -0,0 +1,302 @@ +// 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_FlexibleServersConfiguration_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 FlexibleServersConfiguration via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration, FlexibleServersConfigurationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration runs a test to see if a specific instance of FlexibleServersConfiguration round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration(subject FlexibleServersConfiguration) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration + 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 FlexibleServersConfiguration instances for property testing - lazily instantiated by +// FlexibleServersConfigurationGenerator() +var flexibleServersConfigurationGenerator gopter.Gen + +// FlexibleServersConfigurationGenerator returns a generator of FlexibleServersConfiguration instances for property testing. +func FlexibleServersConfigurationGenerator() gopter.Gen { + if flexibleServersConfigurationGenerator != nil { + return flexibleServersConfigurationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration(generators) + flexibleServersConfigurationGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration{}), generators) + + return flexibleServersConfigurationGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersConfiguration_SpecGenerator() + gens["Status"] = FlexibleServersConfiguration_STATUSGenerator() +} + +func Test_FlexibleServersConfigurationOperatorSpec_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 FlexibleServersConfigurationOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfigurationOperatorSpec, FlexibleServersConfigurationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfigurationOperatorSpec runs a test to see if a specific instance of FlexibleServersConfigurationOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfigurationOperatorSpec(subject FlexibleServersConfigurationOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfigurationOperatorSpec + 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 FlexibleServersConfigurationOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersConfigurationOperatorSpecGenerator() +var flexibleServersConfigurationOperatorSpecGenerator gopter.Gen + +// FlexibleServersConfigurationOperatorSpecGenerator returns a generator of FlexibleServersConfigurationOperatorSpec instances for property testing. +func FlexibleServersConfigurationOperatorSpecGenerator() gopter.Gen { + if flexibleServersConfigurationOperatorSpecGenerator != nil { + return flexibleServersConfigurationOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersConfigurationOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfigurationOperatorSpec{}), generators) + + return flexibleServersConfigurationOperatorSpecGenerator +} + +func Test_FlexibleServersConfiguration_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 FlexibleServersConfiguration_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration_STATUS, FlexibleServersConfiguration_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration_STATUS runs a test to see if a specific instance of FlexibleServersConfiguration_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration_STATUS(subject FlexibleServersConfiguration_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration_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 FlexibleServersConfiguration_STATUS instances for property testing - lazily instantiated by +// FlexibleServersConfiguration_STATUSGenerator() +var flexibleServersConfiguration_STATUSGenerator gopter.Gen + +// FlexibleServersConfiguration_STATUSGenerator returns a generator of FlexibleServersConfiguration_STATUS instances for property testing. +// We first initialize flexibleServersConfiguration_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 FlexibleServersConfiguration_STATUSGenerator() gopter.Gen { + if flexibleServersConfiguration_STATUSGenerator != nil { + return flexibleServersConfiguration_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + flexibleServersConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(generators) + flexibleServersConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_STATUS{}), generators) + + return flexibleServersConfiguration_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["AllowedValues"] = gen.PtrOf(gen.AlphaString()) + gens["CurrentValue"] = gen.PtrOf(gen.AlphaString()) + gens["DataType"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultValue"] = gen.PtrOf(gen.AlphaString()) + gens["Description"] = gen.PtrOf(gen.AlphaString()) + gens["DocumentationLink"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["IsConfigPendingRestart"] = gen.PtrOf(gen.AlphaString()) + gens["IsDynamicConfig"] = gen.PtrOf(gen.AlphaString()) + gens["IsReadOnly"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Source"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersConfiguration_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 FlexibleServersConfiguration_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersConfiguration_Spec, FlexibleServersConfiguration_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersConfiguration_Spec runs a test to see if a specific instance of FlexibleServersConfiguration_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersConfiguration_Spec(subject FlexibleServersConfiguration_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersConfiguration_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 FlexibleServersConfiguration_Spec instances for property testing - lazily instantiated by +// FlexibleServersConfiguration_SpecGenerator() +var flexibleServersConfiguration_SpecGenerator gopter.Gen + +// FlexibleServersConfiguration_SpecGenerator returns a generator of FlexibleServersConfiguration_Spec instances for property testing. +// We first initialize flexibleServersConfiguration_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 FlexibleServersConfiguration_SpecGenerator() gopter.Gen { + if flexibleServersConfiguration_SpecGenerator != nil { + return flexibleServersConfiguration_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + flexibleServersConfiguration_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec(generators) + flexibleServersConfiguration_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersConfiguration_Spec{}), generators) + + return flexibleServersConfiguration_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersConfiguration_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["CurrentValue"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["Source"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersConfiguration_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersConfigurationOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen.go new file mode 100644 index 0000000000..33442babd6 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen.go @@ -0,0 +1,248 @@ +// 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=dbformysql.azure.com,resources=flexibleserversdatabases,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversdatabases/status,flexibleserversdatabases/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 v1api20231230.FlexibleServersDatabase +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Databases/stable/2023-12-30/Databases.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/databases/{databaseName} +type FlexibleServersDatabase struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersDatabase_Spec `json:"spec,omitempty"` + Status FlexibleServersDatabase_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersDatabase{} + +// GetConditions returns the conditions of the resource +func (database *FlexibleServersDatabase) GetConditions() conditions.Conditions { + return database.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (database *FlexibleServersDatabase) SetConditions(conditions conditions.Conditions) { + database.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &FlexibleServersDatabase{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (database *FlexibleServersDatabase) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if database.Spec.OperatorSpec == nil { + return nil + } + return database.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersDatabase{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (database *FlexibleServersDatabase) SecretDestinationExpressions() []*core.DestinationExpression { + if database.Spec.OperatorSpec == nil { + return nil + } + return database.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &FlexibleServersDatabase{} + +// AzureName returns the Azure name of the resource +func (database *FlexibleServersDatabase) AzureName() string { + return database.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (database FlexibleServersDatabase) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (database *FlexibleServersDatabase) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (database *FlexibleServersDatabase) GetSpec() genruntime.ConvertibleSpec { + return &database.Spec +} + +// GetStatus returns the status of this resource +func (database *FlexibleServersDatabase) GetStatus() genruntime.ConvertibleStatus { + return &database.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (database *FlexibleServersDatabase) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/databases" +func (database *FlexibleServersDatabase) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/databases" +} + +// NewEmptyStatus returns a new empty (blank) status +func (database *FlexibleServersDatabase) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersDatabase_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (database *FlexibleServersDatabase) Owner() *genruntime.ResourceReference { + if database.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(database.Spec) + return database.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (database *FlexibleServersDatabase) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersDatabase_STATUS); ok { + database.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersDatabase_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + database.Status = st + return nil +} + +// Hub marks that this FlexibleServersDatabase is the hub type for conversion +func (database *FlexibleServersDatabase) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (database *FlexibleServersDatabase) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: database.Spec.OriginalVersion, + Kind: "FlexibleServersDatabase", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20231230.FlexibleServersDatabase +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Databases/stable/2023-12-30/Databases.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/databases/{databaseName} +type FlexibleServersDatabaseList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersDatabase `json:"items"` +} + +// Storage version of v1api20231230.FlexibleServersDatabase_Spec +type FlexibleServersDatabase_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"` + Charset *string `json:"charset,omitempty"` + Collation *string `json:"collation,omitempty"` + OperatorSpec *FlexibleServersDatabaseOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersDatabase_Spec{} + +// ConvertSpecFrom populates our FlexibleServersDatabase_Spec from the provided source +func (database *FlexibleServersDatabase_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == database { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(database) +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersDatabase_Spec +func (database *FlexibleServersDatabase_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == database { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(database) +} + +// Storage version of v1api20231230.FlexibleServersDatabase_STATUS +type FlexibleServersDatabase_STATUS struct { + Charset *string `json:"charset,omitempty"` + Collation *string `json:"collation,omitempty"` + Conditions []conditions.Condition `json:"conditions,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServersDatabase_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersDatabase_STATUS from the provided source +func (database *FlexibleServersDatabase_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == database { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(database) +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersDatabase_STATUS +func (database *FlexibleServersDatabase_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == database { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(database) +} + +// Storage version of v1api20231230.FlexibleServersDatabaseOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServersDatabaseOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&FlexibleServersDatabase{}, &FlexibleServersDatabaseList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen_test.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen_test.go new file mode 100644 index 0000000000..ef0e449475 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_database_types_gen_test.go @@ -0,0 +1,292 @@ +// 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_FlexibleServersDatabase_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 FlexibleServersDatabase via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase, FlexibleServersDatabaseGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase runs a test to see if a specific instance of FlexibleServersDatabase round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase(subject FlexibleServersDatabase) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase + 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 FlexibleServersDatabase instances for property testing - lazily instantiated by +// FlexibleServersDatabaseGenerator() +var flexibleServersDatabaseGenerator gopter.Gen + +// FlexibleServersDatabaseGenerator returns a generator of FlexibleServersDatabase instances for property testing. +func FlexibleServersDatabaseGenerator() gopter.Gen { + if flexibleServersDatabaseGenerator != nil { + return flexibleServersDatabaseGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase(generators) + flexibleServersDatabaseGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase{}), generators) + + return flexibleServersDatabaseGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersDatabase_SpecGenerator() + gens["Status"] = FlexibleServersDatabase_STATUSGenerator() +} + +func Test_FlexibleServersDatabaseOperatorSpec_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 FlexibleServersDatabaseOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabaseOperatorSpec, FlexibleServersDatabaseOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabaseOperatorSpec runs a test to see if a specific instance of FlexibleServersDatabaseOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabaseOperatorSpec(subject FlexibleServersDatabaseOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabaseOperatorSpec + 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 FlexibleServersDatabaseOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersDatabaseOperatorSpecGenerator() +var flexibleServersDatabaseOperatorSpecGenerator gopter.Gen + +// FlexibleServersDatabaseOperatorSpecGenerator returns a generator of FlexibleServersDatabaseOperatorSpec instances for property testing. +func FlexibleServersDatabaseOperatorSpecGenerator() gopter.Gen { + if flexibleServersDatabaseOperatorSpecGenerator != nil { + return flexibleServersDatabaseOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersDatabaseOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabaseOperatorSpec{}), generators) + + return flexibleServersDatabaseOperatorSpecGenerator +} + +func Test_FlexibleServersDatabase_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 FlexibleServersDatabase_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase_STATUS, FlexibleServersDatabase_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase_STATUS runs a test to see if a specific instance of FlexibleServersDatabase_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase_STATUS(subject FlexibleServersDatabase_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase_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 FlexibleServersDatabase_STATUS instances for property testing - lazily instantiated by +// FlexibleServersDatabase_STATUSGenerator() +var flexibleServersDatabase_STATUSGenerator gopter.Gen + +// FlexibleServersDatabase_STATUSGenerator returns a generator of FlexibleServersDatabase_STATUS instances for property testing. +// We first initialize flexibleServersDatabase_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 FlexibleServersDatabase_STATUSGenerator() gopter.Gen { + if flexibleServersDatabase_STATUSGenerator != nil { + return flexibleServersDatabase_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + flexibleServersDatabase_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(generators) + flexibleServersDatabase_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_STATUS{}), generators) + + return flexibleServersDatabase_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[string]gopter.Gen) { + gens["Charset"] = gen.PtrOf(gen.AlphaString()) + gens["Collation"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersDatabase_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 FlexibleServersDatabase_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersDatabase_Spec, FlexibleServersDatabase_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersDatabase_Spec runs a test to see if a specific instance of FlexibleServersDatabase_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersDatabase_Spec(subject FlexibleServersDatabase_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersDatabase_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 FlexibleServersDatabase_Spec instances for property testing - lazily instantiated by +// FlexibleServersDatabase_SpecGenerator() +var flexibleServersDatabase_SpecGenerator gopter.Gen + +// FlexibleServersDatabase_SpecGenerator returns a generator of FlexibleServersDatabase_Spec instances for property testing. +// We first initialize flexibleServersDatabase_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 FlexibleServersDatabase_SpecGenerator() gopter.Gen { + if flexibleServersDatabase_SpecGenerator != nil { + return flexibleServersDatabase_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + flexibleServersDatabase_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec(generators) + flexibleServersDatabase_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersDatabase_Spec{}), generators) + + return flexibleServersDatabase_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersDatabase_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Charset"] = gen.PtrOf(gen.AlphaString()) + gens["Collation"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersDatabase_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersDatabaseOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen.go new file mode 100644 index 0000000000..b7c995a009 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen.go @@ -0,0 +1,248 @@ +// 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=dbformysql.azure.com,resources=flexibleserversfirewallrules,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=dbformysql.azure.com,resources={flexibleserversfirewallrules/status,flexibleserversfirewallrules/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 v1api20231230.FlexibleServersFirewallRule +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Firewall/stable/2023-12-30/FirewallRules.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/firewallRules/{firewallRuleName} +type FlexibleServersFirewallRule struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec FlexibleServersFirewallRule_Spec `json:"spec,omitempty"` + Status FlexibleServersFirewallRule_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &FlexibleServersFirewallRule{} + +// GetConditions returns the conditions of the resource +func (rule *FlexibleServersFirewallRule) GetConditions() conditions.Conditions { + return rule.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (rule *FlexibleServersFirewallRule) SetConditions(conditions conditions.Conditions) { + rule.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &FlexibleServersFirewallRule{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (rule *FlexibleServersFirewallRule) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if rule.Spec.OperatorSpec == nil { + return nil + } + return rule.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &FlexibleServersFirewallRule{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (rule *FlexibleServersFirewallRule) SecretDestinationExpressions() []*core.DestinationExpression { + if rule.Spec.OperatorSpec == nil { + return nil + } + return rule.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &FlexibleServersFirewallRule{} + +// AzureName returns the Azure name of the resource +func (rule *FlexibleServersFirewallRule) AzureName() string { + return rule.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-12-30" +func (rule FlexibleServersFirewallRule) GetAPIVersion() string { + return "2023-12-30" +} + +// GetResourceScope returns the scope of the resource +func (rule *FlexibleServersFirewallRule) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (rule *FlexibleServersFirewallRule) GetSpec() genruntime.ConvertibleSpec { + return &rule.Spec +} + +// GetStatus returns the status of this resource +func (rule *FlexibleServersFirewallRule) GetStatus() genruntime.ConvertibleStatus { + return &rule.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (rule *FlexibleServersFirewallRule) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.DBforMySQL/flexibleServers/firewallRules" +func (rule *FlexibleServersFirewallRule) GetType() string { + return "Microsoft.DBforMySQL/flexibleServers/firewallRules" +} + +// NewEmptyStatus returns a new empty (blank) status +func (rule *FlexibleServersFirewallRule) NewEmptyStatus() genruntime.ConvertibleStatus { + return &FlexibleServersFirewallRule_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (rule *FlexibleServersFirewallRule) Owner() *genruntime.ResourceReference { + if rule.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(rule.Spec) + return rule.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (rule *FlexibleServersFirewallRule) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*FlexibleServersFirewallRule_STATUS); ok { + rule.Status = *st + return nil + } + + // Convert status to required version + var st FlexibleServersFirewallRule_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + rule.Status = st + return nil +} + +// Hub marks that this FlexibleServersFirewallRule is the hub type for conversion +func (rule *FlexibleServersFirewallRule) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (rule *FlexibleServersFirewallRule) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: rule.Spec.OriginalVersion, + Kind: "FlexibleServersFirewallRule", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20231230.FlexibleServersFirewallRule +// Generator information: +// - Generated from: /mysql/resource-manager/Microsoft.DBforMySQL/Firewall/stable/2023-12-30/FirewallRules.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/flexibleServers/{serverName}/firewallRules/{firewallRuleName} +type FlexibleServersFirewallRuleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []FlexibleServersFirewallRule `json:"items"` +} + +// Storage version of v1api20231230.FlexibleServersFirewallRule_Spec +type FlexibleServersFirewallRule_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"` + EndIpAddress *string `json:"endIpAddress,omitempty"` + OperatorSpec *FlexibleServersFirewallRuleOperatorSpec `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 dbformysql.azure.com/FlexibleServer resource + Owner *genruntime.KnownResourceReference `group:"dbformysql.azure.com" json:"owner,omitempty" kind:"FlexibleServer"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StartIpAddress *string `json:"startIpAddress,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &FlexibleServersFirewallRule_Spec{} + +// ConvertSpecFrom populates our FlexibleServersFirewallRule_Spec from the provided source +func (rule *FlexibleServersFirewallRule_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == rule { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(rule) +} + +// ConvertSpecTo populates the provided destination from our FlexibleServersFirewallRule_Spec +func (rule *FlexibleServersFirewallRule_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == rule { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(rule) +} + +// Storage version of v1api20231230.FlexibleServersFirewallRule_STATUS +type FlexibleServersFirewallRule_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + EndIpAddress *string `json:"endIpAddress,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + StartIpAddress *string `json:"startIpAddress,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &FlexibleServersFirewallRule_STATUS{} + +// ConvertStatusFrom populates our FlexibleServersFirewallRule_STATUS from the provided source +func (rule *FlexibleServersFirewallRule_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == rule { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(rule) +} + +// ConvertStatusTo populates the provided destination from our FlexibleServersFirewallRule_STATUS +func (rule *FlexibleServersFirewallRule_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == rule { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(rule) +} + +// Storage version of v1api20231230.FlexibleServersFirewallRuleOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type FlexibleServersFirewallRuleOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&FlexibleServersFirewallRule{}, &FlexibleServersFirewallRuleList{}) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen_test.go b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen_test.go new file mode 100644 index 0000000000..6130a5e364 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/flexible_servers_firewall_rule_types_gen_test.go @@ -0,0 +1,292 @@ +// 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_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule, FlexibleServersFirewallRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule runs a test to see if a specific instance of FlexibleServersFirewallRule round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule(subject FlexibleServersFirewallRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule + 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 FlexibleServersFirewallRule instances for property testing - lazily instantiated by +// FlexibleServersFirewallRuleGenerator() +var flexibleServersFirewallRuleGenerator gopter.Gen + +// FlexibleServersFirewallRuleGenerator returns a generator of FlexibleServersFirewallRule instances for property testing. +func FlexibleServersFirewallRuleGenerator() gopter.Gen { + if flexibleServersFirewallRuleGenerator != nil { + return flexibleServersFirewallRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule(generators) + flexibleServersFirewallRuleGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule{}), generators) + + return flexibleServersFirewallRuleGenerator +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule(gens map[string]gopter.Gen) { + gens["Spec"] = FlexibleServersFirewallRule_SpecGenerator() + gens["Status"] = FlexibleServersFirewallRule_STATUSGenerator() +} + +func Test_FlexibleServersFirewallRuleOperatorSpec_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 FlexibleServersFirewallRuleOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRuleOperatorSpec, FlexibleServersFirewallRuleOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRuleOperatorSpec runs a test to see if a specific instance of FlexibleServersFirewallRuleOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRuleOperatorSpec(subject FlexibleServersFirewallRuleOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRuleOperatorSpec + 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 FlexibleServersFirewallRuleOperatorSpec instances for property testing - lazily instantiated by +// FlexibleServersFirewallRuleOperatorSpecGenerator() +var flexibleServersFirewallRuleOperatorSpecGenerator gopter.Gen + +// FlexibleServersFirewallRuleOperatorSpecGenerator returns a generator of FlexibleServersFirewallRuleOperatorSpec instances for property testing. +func FlexibleServersFirewallRuleOperatorSpecGenerator() gopter.Gen { + if flexibleServersFirewallRuleOperatorSpecGenerator != nil { + return flexibleServersFirewallRuleOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + flexibleServersFirewallRuleOperatorSpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRuleOperatorSpec{}), generators) + + return flexibleServersFirewallRuleOperatorSpecGenerator +} + +func Test_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS, FlexibleServersFirewallRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS runs a test to see if a specific instance of FlexibleServersFirewallRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule_STATUS(subject FlexibleServersFirewallRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUS instances for property testing - lazily instantiated by +// FlexibleServersFirewallRule_STATUSGenerator() +var flexibleServersFirewallRule_STATUSGenerator gopter.Gen + +// FlexibleServersFirewallRule_STATUSGenerator returns a generator of FlexibleServersFirewallRule_STATUS instances for property testing. +// We first initialize flexibleServersFirewallRule_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 FlexibleServersFirewallRule_STATUSGenerator() gopter.Gen { + if flexibleServersFirewallRule_STATUSGenerator != nil { + return flexibleServersFirewallRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + flexibleServersFirewallRule_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(generators) + flexibleServersFirewallRule_STATUSGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_STATUS{}), generators) + + return flexibleServersFirewallRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[string]gopter.Gen) { + gens["EndIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["StartIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForFlexibleServersFirewallRule_Spec, FlexibleServersFirewallRule_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForFlexibleServersFirewallRule_Spec runs a test to see if a specific instance of FlexibleServersFirewallRule_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForFlexibleServersFirewallRule_Spec(subject FlexibleServersFirewallRule_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual FlexibleServersFirewallRule_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 FlexibleServersFirewallRule_Spec instances for property testing - lazily instantiated by +// FlexibleServersFirewallRule_SpecGenerator() +var flexibleServersFirewallRule_SpecGenerator gopter.Gen + +// FlexibleServersFirewallRule_SpecGenerator returns a generator of FlexibleServersFirewallRule_Spec instances for property testing. +// We first initialize flexibleServersFirewallRule_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 FlexibleServersFirewallRule_SpecGenerator() gopter.Gen { + if flexibleServersFirewallRule_SpecGenerator != nil { + return flexibleServersFirewallRule_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + flexibleServersFirewallRule_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec(generators) + flexibleServersFirewallRule_SpecGenerator = gen.Struct(reflect.TypeOf(FlexibleServersFirewallRule_Spec{}), generators) + + return flexibleServersFirewallRule_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForFlexibleServersFirewallRule_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["EndIpAddress"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["StartIpAddress"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForFlexibleServersFirewallRule_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(FlexibleServersFirewallRuleOperatorSpecGenerator()) +} diff --git a/v2/api/dbformysql/v1api20231230/storage/groupversion_info_gen.go b/v2/api/dbformysql/v1api20231230/storage/groupversion_info_gen.go new file mode 100644 index 0000000000..7dbbe6e492 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/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 dbformysql storage API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=dbformysql.azure.com +// +versionName=v1api20231230storage +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: "dbformysql.azure.com", Version: "v1api20231230storage"} + + // 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/dbformysql/v1api20231230/storage/structure.txt b/v2/api/dbformysql/v1api20231230/storage/structure.txt new file mode 100644 index 0000000000..2aac5f62a8 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/structure.txt @@ -0,0 +1,297 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage +------------------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2023-12-30" +FlexibleServer: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (24 properties) +│ ├── AdministratorLogin: *string +│ ├── AdministratorLoginPassword: *genruntime.SecretReference +│ ├── AvailabilityZone: *string +│ ├── AzureName: string +│ ├── Backup: *Object (4 properties) +│ │ ├── BackupIntervalHours: *int +│ │ ├── BackupRetentionDays: *int +│ │ ├── GeoRedundantBackup: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── CreateMode: *string +│ ├── DataEncryption: *Object (6 properties) +│ │ ├── GeoBackupKeyURI: *string +│ │ ├── GeoBackupUserAssignedIdentityReference: *genruntime.ResourceReference +│ │ ├── PrimaryKeyURI: *string +│ │ ├── PrimaryUserAssignedIdentityReference: *genruntime.ResourceReference +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Type: *string +│ ├── HighAvailability: *Object (3 properties) +│ │ ├── Mode: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── StandbyAvailabilityZone: *string +│ ├── Identity: *Object (3 properties) +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── Type: *string +│ │ └── UserAssignedIdentities: Object (2 properties)[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Reference: genruntime.ResourceReference +│ ├── ImportSourceProperties: *Object (5 properties) +│ │ ├── DataDirPath: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── SasToken: *genruntime.SecretReference +│ │ ├── StorageType: *string +│ │ └── StorageUrl: *string +│ ├── Location: *string +│ ├── MaintenanceWindow: *Object (5 properties) +│ │ ├── CustomWindow: *string +│ │ ├── DayOfWeek: *int +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── StartHour: *int +│ │ └── StartMinute: *int +│ ├── Network: *Object (4 properties) +│ │ ├── DelegatedSubnetResourceReference: *genruntime.ResourceReference +│ │ ├── PrivateDnsZoneResourceReference: *genruntime.ResourceReference +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── PublicNetworkAccess: *string +│ ├── OperatorSpec: *Object (5 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── ConfigMaps: *Object (3 properties) +│ │ │ ├── AdministratorLogin: *genruntime.ConfigMapDestination +│ │ │ ├── FullyQualifiedDomainName: *genruntime.ConfigMapDestination +│ │ │ └── PropertyBag: genruntime.PropertyBag +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── SecretExpressions: *core.DestinationExpression[] +│ │ └── Secrets: *Object (2 properties) +│ │ ├── FullyQualifiedDomainName: *genruntime.SecretDestination +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── ReplicationRole: *string +│ ├── RestorePointInTime: *string +│ ├── Sku: *Object (3 properties) +│ │ ├── Name: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Tier: *string +│ ├── SourceServerResourceReference: *genruntime.ResourceReference +│ ├── Storage: *Object (6 properties) +│ │ ├── AutoGrow: *string +│ │ ├── AutoIoScaling: *string +│ │ ├── Iops: *int +│ │ ├── LogOnDisk: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── StorageSizeGB: *int +│ ├── Tags: map[string]string +│ └── Version: *string +└── Status: Object (28 properties) + ├── AdministratorLogin: *string + ├── AvailabilityZone: *string + ├── Backup: *Object (5 properties) + │ ├── BackupIntervalHours: *int + │ ├── BackupRetentionDays: *int + │ ├── EarliestRestoreDate: *string + │ ├── GeoRedundantBackup: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Conditions: conditions.Condition[] + ├── CreateMode: *string + ├── DataEncryption: *Object (6 properties) + │ ├── GeoBackupKeyURI: *string + │ ├── GeoBackupUserAssignedIdentityId: *string + │ ├── PrimaryKeyURI: *string + │ ├── PrimaryUserAssignedIdentityId: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Type: *string + ├── FullyQualifiedDomainName: *string + ├── HighAvailability: *Object (4 properties) + │ ├── Mode: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── StandbyAvailabilityZone: *string + │ └── State: *string + ├── Id: *string + ├── Identity: *Object (5 properties) + │ ├── PrincipalId: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── TenantId: *string + │ ├── Type: *string + │ └── UserAssignedIdentities: map[string]v1.JSON + ├── ImportSourceProperties: *Object (4 properties) + │ ├── DataDirPath: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── StorageType: *string + │ └── StorageUrl: *string + ├── Location: *string + ├── MaintenanceWindow: *Object (5 properties) + │ ├── CustomWindow: *string + │ ├── DayOfWeek: *int + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── StartHour: *int + │ └── StartMinute: *int + ├── Name: *string + ├── Network: *Object (4 properties) + │ ├── DelegatedSubnetResourceId: *string + │ ├── PrivateDnsZoneResourceId: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── PublicNetworkAccess: *string + ├── PrivateEndpointConnections: Object (2 properties)[] + │ ├── Id: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── PropertyBag: genruntime.PropertyBag + ├── ReplicaCapacity: *int + ├── ReplicationRole: *string + ├── RestorePointInTime: *string + ├── Sku: *Object (3 properties) + │ ├── Name: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Tier: *string + ├── SourceServerResourceId: *string + ├── State: *string + ├── Storage: *Object (7 properties) + │ ├── AutoGrow: *string + │ ├── AutoIoScaling: *string + │ ├── Iops: *int + │ ├── LogOnDisk: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── StorageSizeGB: *int + │ └── StorageSku: *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 + └── Version: *string +FlexibleServersAdministrator: Resource +├── Owner: dbformysql/v1api20231230.FlexibleServer +├── Spec: Object (11 properties) +│ ├── AdministratorType: *string +│ ├── IdentityResourceReference: *genruntime.ResourceReference +│ ├── Login: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── Sid: *string +│ ├── SidFromConfig: *genruntime.ConfigMapReference +│ ├── TenantId: *string +│ └── TenantIdFromConfig: *genruntime.ConfigMapReference +└── Status: Object (11 properties) + ├── AdministratorType: *string + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── IdentityResourceId: *string + ├── Login: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── Sid: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── TenantId: *string + └── Type: *string +FlexibleServersConfiguration: Resource +├── Owner: dbformysql/v1api20231230.FlexibleServer +├── Spec: Object (8 properties) +│ ├── AzureName: string +│ ├── CurrentValue: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── Source: *string +│ └── Value: *string +└── Status: Object (17 properties) + ├── AllowedValues: *string + ├── Conditions: conditions.Condition[] + ├── CurrentValue: *string + ├── DataType: *string + ├── DefaultValue: *string + ├── Description: *string + ├── DocumentationLink: *string + ├── Id: *string + ├── IsConfigPendingRestart: *string + ├── IsDynamicConfig: *string + ├── IsReadOnly: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── Source: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Type: *string + └── Value: *string +FlexibleServersDatabase: Resource +├── Owner: dbformysql/v1api20231230.FlexibleServer +├── Spec: Object (7 properties) +│ ├── AzureName: string +│ ├── Charset: *string +│ ├── Collation: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ └── PropertyBag: genruntime.PropertyBag +└── Status: Object (8 properties) + ├── Charset: *string + ├── Collation: *string + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + └── Type: *string +FlexibleServersFirewallRule: Resource +├── Owner: dbformysql/v1api20231230.FlexibleServer +├── Spec: Object (7 properties) +│ ├── AzureName: string +│ ├── EndIpAddress: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ └── StartIpAddress: *string +└── Status: Object (8 properties) + ├── Conditions: conditions.Condition[] + ├── EndIpAddress: *string + ├── Id: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── StartIpAddress: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + └── Type: *string diff --git a/v2/api/dbformysql/v1api20231230/storage/zz_generated.deepcopy.go b/v2/api/dbformysql/v1api20231230/storage/zz_generated.deepcopy.go new file mode 100644 index 0000000000..4ff8d7b0bf --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/storage/zz_generated.deepcopy.go @@ -0,0 +1,2210 @@ +//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" + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + 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 *Backup) DeepCopyInto(out *Backup) { + *out = *in + if in.BackupIntervalHours != nil { + in, out := &in.BackupIntervalHours, &out.BackupIntervalHours + *out = new(int) + **out = **in + } + if in.BackupRetentionDays != nil { + in, out := &in.BackupRetentionDays, &out.BackupRetentionDays + *out = new(int) + **out = **in + } + if in.GeoRedundantBackup != nil { + in, out := &in.GeoRedundantBackup, &out.GeoRedundantBackup + *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 Backup. +func (in *Backup) DeepCopy() *Backup { + if in == nil { + return nil + } + out := new(Backup) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Backup_STATUS) DeepCopyInto(out *Backup_STATUS) { + *out = *in + if in.BackupIntervalHours != nil { + in, out := &in.BackupIntervalHours, &out.BackupIntervalHours + *out = new(int) + **out = **in + } + if in.BackupRetentionDays != nil { + in, out := &in.BackupRetentionDays, &out.BackupRetentionDays + *out = new(int) + **out = **in + } + if in.EarliestRestoreDate != nil { + in, out := &in.EarliestRestoreDate, &out.EarliestRestoreDate + *out = new(string) + **out = **in + } + if in.GeoRedundantBackup != nil { + in, out := &in.GeoRedundantBackup, &out.GeoRedundantBackup + *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 Backup_STATUS. +func (in *Backup_STATUS) DeepCopy() *Backup_STATUS { + if in == nil { + return nil + } + out := new(Backup_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 *DataEncryption) DeepCopyInto(out *DataEncryption) { + *out = *in + if in.GeoBackupKeyURI != nil { + in, out := &in.GeoBackupKeyURI, &out.GeoBackupKeyURI + *out = new(string) + **out = **in + } + if in.GeoBackupUserAssignedIdentityReference != nil { + in, out := &in.GeoBackupUserAssignedIdentityReference, &out.GeoBackupUserAssignedIdentityReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.PrimaryKeyURI != nil { + in, out := &in.PrimaryKeyURI, &out.PrimaryKeyURI + *out = new(string) + **out = **in + } + if in.PrimaryUserAssignedIdentityReference != nil { + in, out := &in.PrimaryUserAssignedIdentityReference, &out.PrimaryUserAssignedIdentityReference + *out = new(genruntime.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.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 DataEncryption. +func (in *DataEncryption) DeepCopy() *DataEncryption { + if in == nil { + return nil + } + out := new(DataEncryption) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataEncryption_STATUS) DeepCopyInto(out *DataEncryption_STATUS) { + *out = *in + if in.GeoBackupKeyURI != nil { + in, out := &in.GeoBackupKeyURI, &out.GeoBackupKeyURI + *out = new(string) + **out = **in + } + if in.GeoBackupUserAssignedIdentityId != nil { + in, out := &in.GeoBackupUserAssignedIdentityId, &out.GeoBackupUserAssignedIdentityId + *out = new(string) + **out = **in + } + if in.PrimaryKeyURI != nil { + in, out := &in.PrimaryKeyURI, &out.PrimaryKeyURI + *out = new(string) + **out = **in + } + if in.PrimaryUserAssignedIdentityId != nil { + in, out := &in.PrimaryUserAssignedIdentityId, &out.PrimaryUserAssignedIdentityId + *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.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 DataEncryption_STATUS. +func (in *DataEncryption_STATUS) DeepCopy() *DataEncryption_STATUS { + if in == nil { + return nil + } + out := new(DataEncryption_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 *FlexibleServer) DeepCopyInto(out *FlexibleServer) { + *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 FlexibleServer. +func (in *FlexibleServer) DeepCopy() *FlexibleServer { + if in == nil { + return nil + } + out := new(FlexibleServer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServer) 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 *FlexibleServerList) DeepCopyInto(out *FlexibleServerList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerList. +func (in *FlexibleServerList) DeepCopy() *FlexibleServerList { + if in == nil { + return nil + } + out := new(FlexibleServerList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServerList) 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 *FlexibleServerOperatorConfigMaps) DeepCopyInto(out *FlexibleServerOperatorConfigMaps) { + *out = *in + if in.AdministratorLogin != nil { + in, out := &in.AdministratorLogin, &out.AdministratorLogin + *out = new(genruntime.ConfigMapDestination) + **out = **in + } + if in.FullyQualifiedDomainName != nil { + in, out := &in.FullyQualifiedDomainName, &out.FullyQualifiedDomainName + *out = new(genruntime.ConfigMapDestination) + **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 FlexibleServerOperatorConfigMaps. +func (in *FlexibleServerOperatorConfigMaps) DeepCopy() *FlexibleServerOperatorConfigMaps { + if in == nil { + return nil + } + out := new(FlexibleServerOperatorConfigMaps) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServerOperatorSecrets) DeepCopyInto(out *FlexibleServerOperatorSecrets) { + *out = *in + if in.FullyQualifiedDomainName != nil { + in, out := &in.FullyQualifiedDomainName, &out.FullyQualifiedDomainName + *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 + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerOperatorSecrets. +func (in *FlexibleServerOperatorSecrets) DeepCopy() *FlexibleServerOperatorSecrets { + if in == nil { + return nil + } + out := new(FlexibleServerOperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServerOperatorSpec) DeepCopyInto(out *FlexibleServerOperatorSpec) { + *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.ConfigMaps != nil { + in, out := &in.ConfigMaps, &out.ConfigMaps + *out = new(FlexibleServerOperatorConfigMaps) + (*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.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(FlexibleServerOperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerOperatorSpec. +func (in *FlexibleServerOperatorSpec) DeepCopy() *FlexibleServerOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServerOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServer_STATUS) DeepCopyInto(out *FlexibleServer_STATUS) { + *out = *in + if in.AdministratorLogin != nil { + in, out := &in.AdministratorLogin, &out.AdministratorLogin + *out = new(string) + **out = **in + } + if in.AvailabilityZone != nil { + in, out := &in.AvailabilityZone, &out.AvailabilityZone + *out = new(string) + **out = **in + } + if in.Backup != nil { + in, out := &in.Backup, &out.Backup + *out = new(Backup_STATUS) + (*in).DeepCopyInto(*out) + } + 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.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(string) + **out = **in + } + if in.DataEncryption != nil { + in, out := &in.DataEncryption, &out.DataEncryption + *out = new(DataEncryption_STATUS) + (*in).DeepCopyInto(*out) + } + if in.FullyQualifiedDomainName != nil { + in, out := &in.FullyQualifiedDomainName, &out.FullyQualifiedDomainName + *out = new(string) + **out = **in + } + if in.HighAvailability != nil { + in, out := &in.HighAvailability, &out.HighAvailability + *out = new(HighAvailability_STATUS) + (*in).DeepCopyInto(*out) + } + 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(MySQLServerIdentity_STATUS) + (*in).DeepCopyInto(*out) + } + if in.ImportSourceProperties != nil { + in, out := &in.ImportSourceProperties, &out.ImportSourceProperties + *out = new(ImportSourceProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaintenanceWindow != nil { + in, out := &in.MaintenanceWindow, &out.MaintenanceWindow + *out = new(MaintenanceWindow_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(Network_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnection_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.ReplicaCapacity != nil { + in, out := &in.ReplicaCapacity, &out.ReplicaCapacity + *out = new(int) + **out = **in + } + if in.ReplicationRole != nil { + in, out := &in.ReplicationRole, &out.ReplicationRole + *out = new(string) + **out = **in + } + if in.RestorePointInTime != nil { + in, out := &in.RestorePointInTime, &out.RestorePointInTime + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(MySQLServerSku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SourceServerResourceId != nil { + in, out := &in.SourceServerResourceId, &out.SourceServerResourceId + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = new(Storage_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 + } + 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 FlexibleServer_STATUS. +func (in *FlexibleServer_STATUS) DeepCopy() *FlexibleServer_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServer_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 *FlexibleServer_Spec) DeepCopyInto(out *FlexibleServer_Spec) { + *out = *in + if in.AdministratorLogin != nil { + in, out := &in.AdministratorLogin, &out.AdministratorLogin + *out = new(string) + **out = **in + } + if in.AdministratorLoginPassword != nil { + in, out := &in.AdministratorLoginPassword, &out.AdministratorLoginPassword + *out = new(genruntime.SecretReference) + **out = **in + } + if in.AvailabilityZone != nil { + in, out := &in.AvailabilityZone, &out.AvailabilityZone + *out = new(string) + **out = **in + } + if in.Backup != nil { + in, out := &in.Backup, &out.Backup + *out = new(Backup) + (*in).DeepCopyInto(*out) + } + if in.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(string) + **out = **in + } + if in.DataEncryption != nil { + in, out := &in.DataEncryption, &out.DataEncryption + *out = new(DataEncryption) + (*in).DeepCopyInto(*out) + } + if in.HighAvailability != nil { + in, out := &in.HighAvailability, &out.HighAvailability + *out = new(HighAvailability) + (*in).DeepCopyInto(*out) + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(MySQLServerIdentity) + (*in).DeepCopyInto(*out) + } + if in.ImportSourceProperties != nil { + in, out := &in.ImportSourceProperties, &out.ImportSourceProperties + *out = new(ImportSourceProperties) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaintenanceWindow != nil { + in, out := &in.MaintenanceWindow, &out.MaintenanceWindow + *out = new(MaintenanceWindow) + (*in).DeepCopyInto(*out) + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(Network) + (*in).DeepCopyInto(*out) + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServerOperatorSpec) + (*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.ReplicationRole != nil { + in, out := &in.ReplicationRole, &out.ReplicationRole + *out = new(string) + **out = **in + } + if in.RestorePointInTime != nil { + in, out := &in.RestorePointInTime, &out.RestorePointInTime + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(MySQLServerSku) + (*in).DeepCopyInto(*out) + } + if in.SourceServerResourceReference != nil { + in, out := &in.SourceServerResourceReference, &out.SourceServerResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = new(Storage) + (*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.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 FlexibleServer_Spec. +func (in *FlexibleServer_Spec) DeepCopy() *FlexibleServer_Spec { + if in == nil { + return nil + } + out := new(FlexibleServer_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 *FlexibleServersAdministrator) DeepCopyInto(out *FlexibleServersAdministrator) { + *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 FlexibleServersAdministrator. +func (in *FlexibleServersAdministrator) DeepCopy() *FlexibleServersAdministrator { + if in == nil { + return nil + } + out := new(FlexibleServersAdministrator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersAdministrator) 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 *FlexibleServersAdministratorList) DeepCopyInto(out *FlexibleServersAdministratorList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersAdministrator, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersAdministratorList. +func (in *FlexibleServersAdministratorList) DeepCopy() *FlexibleServersAdministratorList { + if in == nil { + return nil + } + out := new(FlexibleServersAdministratorList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersAdministratorList) 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 *FlexibleServersAdministratorOperatorSpec) DeepCopyInto(out *FlexibleServersAdministratorOperatorSpec) { + *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 FlexibleServersAdministratorOperatorSpec. +func (in *FlexibleServersAdministratorOperatorSpec) DeepCopy() *FlexibleServersAdministratorOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersAdministratorOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersAdministrator_STATUS) DeepCopyInto(out *FlexibleServersAdministrator_STATUS) { + *out = *in + if in.AdministratorType != nil { + in, out := &in.AdministratorType, &out.AdministratorType + *out = new(string) + **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.IdentityResourceId != nil { + in, out := &in.IdentityResourceId, &out.IdentityResourceId + *out = new(string) + **out = **in + } + if in.Login != nil { + in, out := &in.Login, &out.Login + *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.Sid != nil { + in, out := &in.Sid, &out.Sid + *out = new(string) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + 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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersAdministrator_STATUS. +func (in *FlexibleServersAdministrator_STATUS) DeepCopy() *FlexibleServersAdministrator_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersAdministrator_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 *FlexibleServersAdministrator_Spec) DeepCopyInto(out *FlexibleServersAdministrator_Spec) { + *out = *in + if in.AdministratorType != nil { + in, out := &in.AdministratorType, &out.AdministratorType + *out = new(string) + **out = **in + } + if in.IdentityResourceReference != nil { + in, out := &in.IdentityResourceReference, &out.IdentityResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.Login != nil { + in, out := &in.Login, &out.Login + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersAdministratorOperatorSpec) + (*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.Sid != nil { + in, out := &in.Sid, &out.Sid + *out = new(string) + **out = **in + } + if in.SidFromConfig != nil { + in, out := &in.SidFromConfig, &out.SidFromConfig + *out = new(genruntime.ConfigMapReference) + **out = **in + } + if in.TenantId != nil { + in, out := &in.TenantId, &out.TenantId + *out = new(string) + **out = **in + } + if in.TenantIdFromConfig != nil { + in, out := &in.TenantIdFromConfig, &out.TenantIdFromConfig + *out = new(genruntime.ConfigMapReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersAdministrator_Spec. +func (in *FlexibleServersAdministrator_Spec) DeepCopy() *FlexibleServersAdministrator_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersAdministrator_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 *FlexibleServersConfiguration) DeepCopyInto(out *FlexibleServersConfiguration) { + *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 FlexibleServersConfiguration. +func (in *FlexibleServersConfiguration) DeepCopy() *FlexibleServersConfiguration { + if in == nil { + return nil + } + out := new(FlexibleServersConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersConfiguration) 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 *FlexibleServersConfigurationList) DeepCopyInto(out *FlexibleServersConfigurationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersConfiguration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersConfigurationList. +func (in *FlexibleServersConfigurationList) DeepCopy() *FlexibleServersConfigurationList { + if in == nil { + return nil + } + out := new(FlexibleServersConfigurationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersConfigurationList) 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 *FlexibleServersConfigurationOperatorSpec) DeepCopyInto(out *FlexibleServersConfigurationOperatorSpec) { + *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 FlexibleServersConfigurationOperatorSpec. +func (in *FlexibleServersConfigurationOperatorSpec) DeepCopy() *FlexibleServersConfigurationOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersConfigurationOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersConfiguration_STATUS) DeepCopyInto(out *FlexibleServersConfiguration_STATUS) { + *out = *in + if in.AllowedValues != nil { + in, out := &in.AllowedValues, &out.AllowedValues + *out = new(string) + **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.CurrentValue != nil { + in, out := &in.CurrentValue, &out.CurrentValue + *out = new(string) + **out = **in + } + if in.DataType != nil { + in, out := &in.DataType, &out.DataType + *out = new(string) + **out = **in + } + if in.DefaultValue != nil { + in, out := &in.DefaultValue, &out.DefaultValue + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DocumentationLink != nil { + in, out := &in.DocumentationLink, &out.DocumentationLink + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.IsConfigPendingRestart != nil { + in, out := &in.IsConfigPendingRestart, &out.IsConfigPendingRestart + *out = new(string) + **out = **in + } + if in.IsDynamicConfig != nil { + in, out := &in.IsDynamicConfig, &out.IsDynamicConfig + *out = new(string) + **out = **in + } + if in.IsReadOnly != nil { + in, out := &in.IsReadOnly, &out.IsReadOnly + *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.Source != nil { + in, out := &in.Source, &out.Source + *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 + } + 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 FlexibleServersConfiguration_STATUS. +func (in *FlexibleServersConfiguration_STATUS) DeepCopy() *FlexibleServersConfiguration_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersConfiguration_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 *FlexibleServersConfiguration_Spec) DeepCopyInto(out *FlexibleServersConfiguration_Spec) { + *out = *in + if in.CurrentValue != nil { + in, out := &in.CurrentValue, &out.CurrentValue + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersConfigurationOperatorSpec) + (*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.Source != nil { + in, out := &in.Source, &out.Source + *out = new(string) + **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 FlexibleServersConfiguration_Spec. +func (in *FlexibleServersConfiguration_Spec) DeepCopy() *FlexibleServersConfiguration_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersConfiguration_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 *FlexibleServersDatabase) DeepCopyInto(out *FlexibleServersDatabase) { + *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 FlexibleServersDatabase. +func (in *FlexibleServersDatabase) DeepCopy() *FlexibleServersDatabase { + if in == nil { + return nil + } + out := new(FlexibleServersDatabase) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersDatabase) 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 *FlexibleServersDatabaseList) DeepCopyInto(out *FlexibleServersDatabaseList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersDatabase, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersDatabaseList. +func (in *FlexibleServersDatabaseList) DeepCopy() *FlexibleServersDatabaseList { + if in == nil { + return nil + } + out := new(FlexibleServersDatabaseList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersDatabaseList) 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 *FlexibleServersDatabaseOperatorSpec) DeepCopyInto(out *FlexibleServersDatabaseOperatorSpec) { + *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 FlexibleServersDatabaseOperatorSpec. +func (in *FlexibleServersDatabaseOperatorSpec) DeepCopy() *FlexibleServersDatabaseOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersDatabaseOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersDatabase_STATUS) DeepCopyInto(out *FlexibleServersDatabase_STATUS) { + *out = *in + if in.Charset != nil { + in, out := &in.Charset, &out.Charset + *out = new(string) + **out = **in + } + if in.Collation != nil { + in, out := &in.Collation, &out.Collation + *out = new(string) + **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.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.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 FlexibleServersDatabase_STATUS. +func (in *FlexibleServersDatabase_STATUS) DeepCopy() *FlexibleServersDatabase_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersDatabase_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 *FlexibleServersDatabase_Spec) DeepCopyInto(out *FlexibleServersDatabase_Spec) { + *out = *in + if in.Charset != nil { + in, out := &in.Charset, &out.Charset + *out = new(string) + **out = **in + } + if in.Collation != nil { + in, out := &in.Collation, &out.Collation + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersDatabaseOperatorSpec) + (*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 FlexibleServersDatabase_Spec. +func (in *FlexibleServersDatabase_Spec) DeepCopy() *FlexibleServersDatabase_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersDatabase_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 *FlexibleServersFirewallRule) DeepCopyInto(out *FlexibleServersFirewallRule) { + *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 FlexibleServersFirewallRule. +func (in *FlexibleServersFirewallRule) DeepCopy() *FlexibleServersFirewallRule { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersFirewallRule) 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 *FlexibleServersFirewallRuleList) DeepCopyInto(out *FlexibleServersFirewallRuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersFirewallRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersFirewallRuleList. +func (in *FlexibleServersFirewallRuleList) DeepCopy() *FlexibleServersFirewallRuleList { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersFirewallRuleList) 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 *FlexibleServersFirewallRuleOperatorSpec) DeepCopyInto(out *FlexibleServersFirewallRuleOperatorSpec) { + *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 FlexibleServersFirewallRuleOperatorSpec. +func (in *FlexibleServersFirewallRuleOperatorSpec) DeepCopy() *FlexibleServersFirewallRuleOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRuleOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersFirewallRule_STATUS) DeepCopyInto(out *FlexibleServersFirewallRule_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.EndIpAddress != nil { + in, out := &in.EndIpAddress, &out.EndIpAddress + *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.StartIpAddress != nil { + in, out := &in.StartIpAddress, &out.StartIpAddress + *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 FlexibleServersFirewallRule_STATUS. +func (in *FlexibleServersFirewallRule_STATUS) DeepCopy() *FlexibleServersFirewallRule_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRule_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 *FlexibleServersFirewallRule_Spec) DeepCopyInto(out *FlexibleServersFirewallRule_Spec) { + *out = *in + if in.EndIpAddress != nil { + in, out := &in.EndIpAddress, &out.EndIpAddress + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersFirewallRuleOperatorSpec) + (*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.StartIpAddress != nil { + in, out := &in.StartIpAddress, &out.StartIpAddress + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersFirewallRule_Spec. +func (in *FlexibleServersFirewallRule_Spec) DeepCopy() *FlexibleServersFirewallRule_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRule_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 *HighAvailability) DeepCopyInto(out *HighAvailability) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *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.StandbyAvailabilityZone != nil { + in, out := &in.StandbyAvailabilityZone, &out.StandbyAvailabilityZone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HighAvailability. +func (in *HighAvailability) DeepCopy() *HighAvailability { + if in == nil { + return nil + } + out := new(HighAvailability) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HighAvailability_STATUS) DeepCopyInto(out *HighAvailability_STATUS) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *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.StandbyAvailabilityZone != nil { + in, out := &in.StandbyAvailabilityZone, &out.StandbyAvailabilityZone + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HighAvailability_STATUS. +func (in *HighAvailability_STATUS) DeepCopy() *HighAvailability_STATUS { + if in == nil { + return nil + } + out := new(HighAvailability_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 *ImportSourceProperties) DeepCopyInto(out *ImportSourceProperties) { + *out = *in + if in.DataDirPath != nil { + in, out := &in.DataDirPath, &out.DataDirPath + *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.SasToken != nil { + in, out := &in.SasToken, &out.SasToken + *out = new(genruntime.SecretReference) + **out = **in + } + if in.StorageType != nil { + in, out := &in.StorageType, &out.StorageType + *out = new(string) + **out = **in + } + if in.StorageUrl != nil { + in, out := &in.StorageUrl, &out.StorageUrl + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImportSourceProperties. +func (in *ImportSourceProperties) DeepCopy() *ImportSourceProperties { + if in == nil { + return nil + } + out := new(ImportSourceProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImportSourceProperties_STATUS) DeepCopyInto(out *ImportSourceProperties_STATUS) { + *out = *in + if in.DataDirPath != nil { + in, out := &in.DataDirPath, &out.DataDirPath + *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.StorageType != nil { + in, out := &in.StorageType, &out.StorageType + *out = new(string) + **out = **in + } + if in.StorageUrl != nil { + in, out := &in.StorageUrl, &out.StorageUrl + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImportSourceProperties_STATUS. +func (in *ImportSourceProperties_STATUS) DeepCopy() *ImportSourceProperties_STATUS { + if in == nil { + return nil + } + out := new(ImportSourceProperties_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 *MaintenanceWindow) DeepCopyInto(out *MaintenanceWindow) { + *out = *in + if in.CustomWindow != nil { + in, out := &in.CustomWindow, &out.CustomWindow + *out = new(string) + **out = **in + } + if in.DayOfWeek != nil { + in, out := &in.DayOfWeek, &out.DayOfWeek + *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 + } + } + if in.StartHour != nil { + in, out := &in.StartHour, &out.StartHour + *out = new(int) + **out = **in + } + if in.StartMinute != nil { + in, out := &in.StartMinute, &out.StartMinute + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceWindow. +func (in *MaintenanceWindow) DeepCopy() *MaintenanceWindow { + if in == nil { + return nil + } + out := new(MaintenanceWindow) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenanceWindow_STATUS) DeepCopyInto(out *MaintenanceWindow_STATUS) { + *out = *in + if in.CustomWindow != nil { + in, out := &in.CustomWindow, &out.CustomWindow + *out = new(string) + **out = **in + } + if in.DayOfWeek != nil { + in, out := &in.DayOfWeek, &out.DayOfWeek + *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 + } + } + if in.StartHour != nil { + in, out := &in.StartHour, &out.StartHour + *out = new(int) + **out = **in + } + if in.StartMinute != nil { + in, out := &in.StartMinute, &out.StartMinute + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceWindow_STATUS. +func (in *MaintenanceWindow_STATUS) DeepCopy() *MaintenanceWindow_STATUS { + if in == nil { + return nil + } + out := new(MaintenanceWindow_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 *MySQLServerIdentity) DeepCopyInto(out *MySQLServerIdentity) { + *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 MySQLServerIdentity. +func (in *MySQLServerIdentity) DeepCopy() *MySQLServerIdentity { + if in == nil { + return nil + } + out := new(MySQLServerIdentity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MySQLServerIdentity_STATUS) DeepCopyInto(out *MySQLServerIdentity_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]v1.JSON, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MySQLServerIdentity_STATUS. +func (in *MySQLServerIdentity_STATUS) DeepCopy() *MySQLServerIdentity_STATUS { + if in == nil { + return nil + } + out := new(MySQLServerIdentity_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 *MySQLServerSku) DeepCopyInto(out *MySQLServerSku) { + *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 MySQLServerSku. +func (in *MySQLServerSku) DeepCopy() *MySQLServerSku { + if in == nil { + return nil + } + out := new(MySQLServerSku) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MySQLServerSku_STATUS) DeepCopyInto(out *MySQLServerSku_STATUS) { + *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 MySQLServerSku_STATUS. +func (in *MySQLServerSku_STATUS) DeepCopy() *MySQLServerSku_STATUS { + if in == nil { + return nil + } + out := new(MySQLServerSku_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 *Network) DeepCopyInto(out *Network) { + *out = *in + if in.DelegatedSubnetResourceReference != nil { + in, out := &in.DelegatedSubnetResourceReference, &out.DelegatedSubnetResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.PrivateDnsZoneResourceReference != nil { + in, out := &in.PrivateDnsZoneResourceReference, &out.PrivateDnsZoneResourceReference + *out = new(genruntime.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.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network. +func (in *Network) DeepCopy() *Network { + if in == nil { + return nil + } + out := new(Network) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Network_STATUS) DeepCopyInto(out *Network_STATUS) { + *out = *in + if in.DelegatedSubnetResourceId != nil { + in, out := &in.DelegatedSubnetResourceId, &out.DelegatedSubnetResourceId + *out = new(string) + **out = **in + } + if in.PrivateDnsZoneResourceId != nil { + in, out := &in.PrivateDnsZoneResourceId, &out.PrivateDnsZoneResourceId + *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.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network_STATUS. +func (in *Network_STATUS) DeepCopy() *Network_STATUS { + if in == nil { + return nil + } + out := new(Network_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) DeepCopyInto(out *PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS. +func (in *PrivateEndpointConnection_STATUS) DeepCopy() *PrivateEndpointConnection_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointConnection_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 *Storage) DeepCopyInto(out *Storage) { + *out = *in + if in.AutoGrow != nil { + in, out := &in.AutoGrow, &out.AutoGrow + *out = new(string) + **out = **in + } + if in.AutoIoScaling != nil { + in, out := &in.AutoIoScaling, &out.AutoIoScaling + *out = new(string) + **out = **in + } + if in.Iops != nil { + in, out := &in.Iops, &out.Iops + *out = new(int) + **out = **in + } + if in.LogOnDisk != nil { + in, out := &in.LogOnDisk, &out.LogOnDisk + *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.StorageSizeGB != nil { + in, out := &in.StorageSizeGB, &out.StorageSizeGB + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Storage. +func (in *Storage) DeepCopy() *Storage { + if in == nil { + return nil + } + out := new(Storage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Storage_STATUS) DeepCopyInto(out *Storage_STATUS) { + *out = *in + if in.AutoGrow != nil { + in, out := &in.AutoGrow, &out.AutoGrow + *out = new(string) + **out = **in + } + if in.AutoIoScaling != nil { + in, out := &in.AutoIoScaling, &out.AutoIoScaling + *out = new(string) + **out = **in + } + if in.Iops != nil { + in, out := &in.Iops, &out.Iops + *out = new(int) + **out = **in + } + if in.LogOnDisk != nil { + in, out := &in.LogOnDisk, &out.LogOnDisk + *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.StorageSizeGB != nil { + in, out := &in.StorageSizeGB, &out.StorageSizeGB + *out = new(int) + **out = **in + } + if in.StorageSku != nil { + in, out := &in.StorageSku, &out.StorageSku + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Storage_STATUS. +func (in *Storage_STATUS) DeepCopy() *Storage_STATUS { + if in == nil { + return nil + } + out := new(Storage_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 *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 *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 +} diff --git a/v2/api/dbformysql/v1api20231230/structure.txt b/v2/api/dbformysql/v1api20231230/structure.txt new file mode 100644 index 0000000000..aa5239fd8c --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/structure.txt @@ -0,0 +1,374 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230 +----------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2023-12-30" +FlexibleServer: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (22 properties) +│ ├── AdministratorLogin: *string +│ ├── AdministratorLoginPassword: *genruntime.SecretReference +│ ├── AvailabilityZone: *string +│ ├── AzureName: string +│ ├── Backup: *Object (3 properties) +│ │ ├── BackupIntervalHours: *int +│ │ ├── BackupRetentionDays: *int +│ │ └── GeoRedundantBackup: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── CreateMode: *Enum (4 values) +│ │ ├── "Default" +│ │ ├── "GeoRestore" +│ │ ├── "PointInTimeRestore" +│ │ └── "Replica" +│ ├── DataEncryption: *Object (5 properties) +│ │ ├── GeoBackupKeyURI: *string +│ │ ├── GeoBackupUserAssignedIdentityReference: *genruntime.ResourceReference +│ │ ├── PrimaryKeyURI: *string +│ │ ├── PrimaryUserAssignedIdentityReference: *genruntime.ResourceReference +│ │ └── Type: *Enum (2 values) +│ │ ├── "AzureKeyVault" +│ │ └── "SystemManaged" +│ ├── HighAvailability: *Object (2 properties) +│ │ ├── Mode: *Enum (3 values) +│ │ │ ├── "Disabled" +│ │ │ ├── "SameZone" +│ │ │ └── "ZoneRedundant" +│ │ └── StandbyAvailabilityZone: *string +│ ├── Identity: *Object (2 properties) +│ │ ├── Type: *Enum (1 value) +│ │ │ └── "UserAssigned" +│ │ └── UserAssignedIdentities: Object (1 property)[] +│ │ └── Reference: genruntime.ResourceReference +│ ├── ImportSourceProperties: *Object (4 properties) +│ │ ├── DataDirPath: *string +│ │ ├── SasToken: *genruntime.SecretReference +│ │ ├── StorageType: *Enum (1 value) +│ │ │ └── "AzureBlob" +│ │ └── StorageUrl: *string +│ ├── Location: *string +│ ├── MaintenanceWindow: *Object (4 properties) +│ │ ├── CustomWindow: *string +│ │ ├── DayOfWeek: *int +│ │ ├── StartHour: *int +│ │ └── StartMinute: *int +│ ├── Network: *Object (3 properties) +│ │ ├── DelegatedSubnetResourceReference: *genruntime.ResourceReference +│ │ ├── PrivateDnsZoneResourceReference: *genruntime.ResourceReference +│ │ └── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── OperatorSpec: *Object (4 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── ConfigMaps: *Object (2 properties) +│ │ │ ├── AdministratorLogin: *genruntime.ConfigMapDestination +│ │ │ └── FullyQualifiedDomainName: *genruntime.ConfigMapDestination +│ │ ├── SecretExpressions: *core.DestinationExpression[] +│ │ └── Secrets: *Object (1 property) +│ │ └── FullyQualifiedDomainName: *genruntime.SecretDestination +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── ReplicationRole: *Enum (3 values) +│ │ ├── "None" +│ │ ├── "Replica" +│ │ └── "Source" +│ ├── RestorePointInTime: *string +│ ├── Sku: *Object (2 properties) +│ │ ├── Name: *string +│ │ └── Tier: *Enum (3 values) +│ │ ├── "Burstable" +│ │ ├── "GeneralPurpose" +│ │ └── "MemoryOptimized" +│ ├── SourceServerResourceReference: *genruntime.ResourceReference +│ ├── Storage: *Object (5 properties) +│ │ ├── AutoGrow: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── AutoIoScaling: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ ├── Iops: *int +│ │ ├── LogOnDisk: *Enum (2 values) +│ │ │ ├── "Disabled" +│ │ │ └── "Enabled" +│ │ └── StorageSizeGB: *int +│ ├── Tags: map[string]string +│ └── Version: *Enum (2 values) +│ ├── "5.7" +│ └── "8.0.21" +└── Status: Object (27 properties) + ├── AdministratorLogin: *string + ├── AvailabilityZone: *string + ├── Backup: *Object (4 properties) + │ ├── BackupIntervalHours: *int + │ ├── BackupRetentionDays: *int + │ ├── EarliestRestoreDate: *string + │ └── GeoRedundantBackup: *Enum (2 values) + │ ├── "Disabled" + │ └── "Enabled" + ├── Conditions: conditions.Condition[] + ├── CreateMode: *Enum (4 values) + │ ├── "Default" + │ ├── "GeoRestore" + │ ├── "PointInTimeRestore" + │ └── "Replica" + ├── DataEncryption: *Object (5 properties) + │ ├── GeoBackupKeyURI: *string + │ ├── GeoBackupUserAssignedIdentityId: *string + │ ├── PrimaryKeyURI: *string + │ ├── PrimaryUserAssignedIdentityId: *string + │ └── Type: *Enum (2 values) + │ ├── "AzureKeyVault" + │ └── "SystemManaged" + ├── FullyQualifiedDomainName: *string + ├── HighAvailability: *Object (3 properties) + │ ├── Mode: *Enum (3 values) + │ │ ├── "Disabled" + │ │ ├── "SameZone" + │ │ └── "ZoneRedundant" + │ ├── StandbyAvailabilityZone: *string + │ └── State: *Enum (5 values) + │ ├── "CreatingStandby" + │ ├── "FailingOver" + │ ├── "Healthy" + │ ├── "NotEnabled" + │ └── "RemovingStandby" + ├── Id: *string + ├── Identity: *Object (4 properties) + │ ├── PrincipalId: *string + │ ├── TenantId: *string + │ ├── Type: *Enum (1 value) + │ │ └── "UserAssigned" + │ └── UserAssignedIdentities: map[string]v1.JSON + ├── ImportSourceProperties: *Object (3 properties) + │ ├── DataDirPath: *string + │ ├── StorageType: *Enum (1 value) + │ │ └── "AzureBlob" + │ └── StorageUrl: *string + ├── Location: *string + ├── MaintenanceWindow: *Object (4 properties) + │ ├── CustomWindow: *string + │ ├── DayOfWeek: *int + │ ├── StartHour: *int + │ └── StartMinute: *int + ├── Name: *string + ├── Network: *Object (3 properties) + │ ├── DelegatedSubnetResourceId: *string + │ ├── PrivateDnsZoneResourceId: *string + │ └── PublicNetworkAccess: *Enum (2 values) + │ ├── "Disabled" + │ └── "Enabled" + ├── PrivateEndpointConnections: Object (1 property)[] + │ └── Id: *string + ├── ReplicaCapacity: *int + ├── ReplicationRole: *Enum (3 values) + │ ├── "None" + │ ├── "Replica" + │ └── "Source" + ├── RestorePointInTime: *string + ├── Sku: *Object (2 properties) + │ ├── Name: *string + │ └── Tier: *Enum (3 values) + │ ├── "Burstable" + │ ├── "GeneralPurpose" + │ └── "MemoryOptimized" + ├── SourceServerResourceId: *string + ├── State: *Enum (7 values) + │ ├── "Disabled" + │ ├── "Dropping" + │ ├── "Ready" + │ ├── "Starting" + │ ├── "Stopped" + │ ├── "Stopping" + │ └── "Updating" + ├── Storage: *Object (6 properties) + │ ├── AutoGrow: *Enum (2 values) + │ │ ├── "Disabled" + │ │ └── "Enabled" + │ ├── AutoIoScaling: *Enum (2 values) + │ │ ├── "Disabled" + │ │ └── "Enabled" + │ ├── Iops: *int + │ ├── LogOnDisk: *Enum (2 values) + │ │ ├── "Disabled" + │ │ └── "Enabled" + │ ├── StorageSizeGB: *int + │ └── StorageSku: *string + ├── 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 + └── Version: *Enum (2 values) + ├── "5.7" + └── "8.0.21" +FlexibleServersAdministrator: Resource +├── Owner: FlexibleServer +├── Spec: Object (9 properties) +│ ├── AdministratorType: *Enum (1 value) +│ │ └── "ActiveDirectory" +│ ├── IdentityResourceReference: *genruntime.ResourceReference +│ ├── Login: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── Sid: *string +│ ├── SidFromConfig: *genruntime.ConfigMapReference +│ ├── TenantId: *string +│ └── TenantIdFromConfig: *genruntime.ConfigMapReference +└── Status: Object (10 properties) + ├── AdministratorType: *Enum (1 value) + │ └── "ActiveDirectory" + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── IdentityResourceId: *string + ├── Login: *string + ├── Name: *string + ├── Sid: *string + ├── 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" + ├── TenantId: *string + └── Type: *string +FlexibleServersConfiguration: Resource +├── Owner: FlexibleServer +├── Spec: Object (6 properties) +│ ├── AzureName: string +│ ├── CurrentValue: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── Source: *Enum (2 values) +│ │ ├── "system-default" +│ │ └── "user-override" +│ └── Value: *string +└── Status: Object (16 properties) + ├── AllowedValues: *string + ├── Conditions: conditions.Condition[] + ├── CurrentValue: *string + ├── DataType: *string + ├── DefaultValue: *string + ├── Description: *string + ├── DocumentationLink: *string + ├── Id: *string + ├── IsConfigPendingRestart: *Enum (2 values) + │ ├── "False" + │ └── "True" + ├── IsDynamicConfig: *Enum (2 values) + │ ├── "False" + │ └── "True" + ├── IsReadOnly: *Enum (2 values) + │ ├── "False" + │ └── "True" + ├── Name: *string + ├── Source: *Enum (2 values) + │ ├── "system-default" + │ └── "user-override" + ├── 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 + └── Value: *string +FlexibleServersDatabase: Resource +├── Owner: FlexibleServer +├── Spec: Object (5 properties) +│ ├── AzureName: string +│ ├── Charset: *string +│ ├── Collation: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ └── Owner: *genruntime.KnownResourceReference +└── Status: Object (7 properties) + ├── Charset: *string + ├── Collation: *string + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── Name: *string + ├── 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 +FlexibleServersFirewallRule: Resource +├── Owner: FlexibleServer +├── Spec: Object (5 properties) +│ ├── AzureName: string +│ ├── EndIpAddress: Validated<*string> (1 rule) +│ │ └── Rule 0: Pattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ └── StartIpAddress: Validated<*string> (1 rule) +│ └── Rule 0: Pattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" +└── Status: Object (7 properties) + ├── Conditions: conditions.Condition[] + ├── EndIpAddress: *string + ├── Id: *string + ├── Name: *string + ├── StartIpAddress: *string + ├── 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 diff --git a/v2/api/dbformysql/v1api20231230/zz_generated.deepcopy.go b/v2/api/dbformysql/v1api20231230/zz_generated.deepcopy.go new file mode 100644 index 0000000000..64a69a8690 --- /dev/null +++ b/v2/api/dbformysql/v1api20231230/zz_generated.deepcopy.go @@ -0,0 +1,1942 @@ +//go:build !ignore_autogenerated + +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1api20231230 + +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/apiextensions-apiserver/pkg/apis/apiextensions/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Backup) DeepCopyInto(out *Backup) { + *out = *in + if in.BackupIntervalHours != nil { + in, out := &in.BackupIntervalHours, &out.BackupIntervalHours + *out = new(int) + **out = **in + } + if in.BackupRetentionDays != nil { + in, out := &in.BackupRetentionDays, &out.BackupRetentionDays + *out = new(int) + **out = **in + } + if in.GeoRedundantBackup != nil { + in, out := &in.GeoRedundantBackup, &out.GeoRedundantBackup + *out = new(EnableStatusEnum) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backup. +func (in *Backup) DeepCopy() *Backup { + if in == nil { + return nil + } + out := new(Backup) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Backup_STATUS) DeepCopyInto(out *Backup_STATUS) { + *out = *in + if in.BackupIntervalHours != nil { + in, out := &in.BackupIntervalHours, &out.BackupIntervalHours + *out = new(int) + **out = **in + } + if in.BackupRetentionDays != nil { + in, out := &in.BackupRetentionDays, &out.BackupRetentionDays + *out = new(int) + **out = **in + } + if in.EarliestRestoreDate != nil { + in, out := &in.EarliestRestoreDate, &out.EarliestRestoreDate + *out = new(string) + **out = **in + } + if in.GeoRedundantBackup != nil { + in, out := &in.GeoRedundantBackup, &out.GeoRedundantBackup + *out = new(EnableStatusEnum_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backup_STATUS. +func (in *Backup_STATUS) DeepCopy() *Backup_STATUS { + if in == nil { + return nil + } + out := new(Backup_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 *DataEncryption) DeepCopyInto(out *DataEncryption) { + *out = *in + if in.GeoBackupKeyURI != nil { + in, out := &in.GeoBackupKeyURI, &out.GeoBackupKeyURI + *out = new(string) + **out = **in + } + if in.GeoBackupUserAssignedIdentityReference != nil { + in, out := &in.GeoBackupUserAssignedIdentityReference, &out.GeoBackupUserAssignedIdentityReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.PrimaryKeyURI != nil { + in, out := &in.PrimaryKeyURI, &out.PrimaryKeyURI + *out = new(string) + **out = **in + } + if in.PrimaryUserAssignedIdentityReference != nil { + in, out := &in.PrimaryUserAssignedIdentityReference, &out.PrimaryUserAssignedIdentityReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(DataEncryption_Type) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataEncryption. +func (in *DataEncryption) DeepCopy() *DataEncryption { + if in == nil { + return nil + } + out := new(DataEncryption) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataEncryption_STATUS) DeepCopyInto(out *DataEncryption_STATUS) { + *out = *in + if in.GeoBackupKeyURI != nil { + in, out := &in.GeoBackupKeyURI, &out.GeoBackupKeyURI + *out = new(string) + **out = **in + } + if in.GeoBackupUserAssignedIdentityId != nil { + in, out := &in.GeoBackupUserAssignedIdentityId, &out.GeoBackupUserAssignedIdentityId + *out = new(string) + **out = **in + } + if in.PrimaryKeyURI != nil { + in, out := &in.PrimaryKeyURI, &out.PrimaryKeyURI + *out = new(string) + **out = **in + } + if in.PrimaryUserAssignedIdentityId != nil { + in, out := &in.PrimaryUserAssignedIdentityId, &out.PrimaryUserAssignedIdentityId + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(DataEncryption_Type_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataEncryption_STATUS. +func (in *DataEncryption_STATUS) DeepCopy() *DataEncryption_STATUS { + if in == nil { + return nil + } + out := new(DataEncryption_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 *FlexibleServer) DeepCopyInto(out *FlexibleServer) { + *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 FlexibleServer. +func (in *FlexibleServer) DeepCopy() *FlexibleServer { + if in == nil { + return nil + } + out := new(FlexibleServer) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServer) 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 *FlexibleServerList) DeepCopyInto(out *FlexibleServerList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerList. +func (in *FlexibleServerList) DeepCopy() *FlexibleServerList { + if in == nil { + return nil + } + out := new(FlexibleServerList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServerList) 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 *FlexibleServerOperatorConfigMaps) DeepCopyInto(out *FlexibleServerOperatorConfigMaps) { + *out = *in + if in.AdministratorLogin != nil { + in, out := &in.AdministratorLogin, &out.AdministratorLogin + *out = new(genruntime.ConfigMapDestination) + **out = **in + } + if in.FullyQualifiedDomainName != nil { + in, out := &in.FullyQualifiedDomainName, &out.FullyQualifiedDomainName + *out = new(genruntime.ConfigMapDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerOperatorConfigMaps. +func (in *FlexibleServerOperatorConfigMaps) DeepCopy() *FlexibleServerOperatorConfigMaps { + if in == nil { + return nil + } + out := new(FlexibleServerOperatorConfigMaps) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServerOperatorSecrets) DeepCopyInto(out *FlexibleServerOperatorSecrets) { + *out = *in + if in.FullyQualifiedDomainName != nil { + in, out := &in.FullyQualifiedDomainName, &out.FullyQualifiedDomainName + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerOperatorSecrets. +func (in *FlexibleServerOperatorSecrets) DeepCopy() *FlexibleServerOperatorSecrets { + if in == nil { + return nil + } + out := new(FlexibleServerOperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServerOperatorSpec) DeepCopyInto(out *FlexibleServerOperatorSpec) { + *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.ConfigMaps != nil { + in, out := &in.ConfigMaps, &out.ConfigMaps + *out = new(FlexibleServerOperatorConfigMaps) + (*in).DeepCopyInto(*out) + } + 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(FlexibleServerOperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServerOperatorSpec. +func (in *FlexibleServerOperatorSpec) DeepCopy() *FlexibleServerOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServerOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServer_STATUS) DeepCopyInto(out *FlexibleServer_STATUS) { + *out = *in + if in.AdministratorLogin != nil { + in, out := &in.AdministratorLogin, &out.AdministratorLogin + *out = new(string) + **out = **in + } + if in.AvailabilityZone != nil { + in, out := &in.AvailabilityZone, &out.AvailabilityZone + *out = new(string) + **out = **in + } + if in.Backup != nil { + in, out := &in.Backup, &out.Backup + *out = new(Backup_STATUS) + (*in).DeepCopyInto(*out) + } + 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.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(ServerProperties_CreateMode_STATUS) + **out = **in + } + if in.DataEncryption != nil { + in, out := &in.DataEncryption, &out.DataEncryption + *out = new(DataEncryption_STATUS) + (*in).DeepCopyInto(*out) + } + if in.FullyQualifiedDomainName != nil { + in, out := &in.FullyQualifiedDomainName, &out.FullyQualifiedDomainName + *out = new(string) + **out = **in + } + if in.HighAvailability != nil { + in, out := &in.HighAvailability, &out.HighAvailability + *out = new(HighAvailability_STATUS) + (*in).DeepCopyInto(*out) + } + 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(MySQLServerIdentity_STATUS) + (*in).DeepCopyInto(*out) + } + if in.ImportSourceProperties != nil { + in, out := &in.ImportSourceProperties, &out.ImportSourceProperties + *out = new(ImportSourceProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaintenanceWindow != nil { + in, out := &in.MaintenanceWindow, &out.MaintenanceWindow + *out = new(MaintenanceWindow_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(Network_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnection_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ReplicaCapacity != nil { + in, out := &in.ReplicaCapacity, &out.ReplicaCapacity + *out = new(int) + **out = **in + } + if in.ReplicationRole != nil { + in, out := &in.ReplicationRole, &out.ReplicationRole + *out = new(ReplicationRole_STATUS) + **out = **in + } + if in.RestorePointInTime != nil { + in, out := &in.RestorePointInTime, &out.RestorePointInTime + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(MySQLServerSku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SourceServerResourceId != nil { + in, out := &in.SourceServerResourceId, &out.SourceServerResourceId + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(ServerProperties_State_STATUS) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = new(Storage_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 + } + if in.Version != nil { + in, out := &in.Version, &out.Version + *out = new(ServerVersion_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServer_STATUS. +func (in *FlexibleServer_STATUS) DeepCopy() *FlexibleServer_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServer_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 *FlexibleServer_Spec) DeepCopyInto(out *FlexibleServer_Spec) { + *out = *in + if in.AdministratorLogin != nil { + in, out := &in.AdministratorLogin, &out.AdministratorLogin + *out = new(string) + **out = **in + } + if in.AdministratorLoginPassword != nil { + in, out := &in.AdministratorLoginPassword, &out.AdministratorLoginPassword + *out = new(genruntime.SecretReference) + **out = **in + } + if in.AvailabilityZone != nil { + in, out := &in.AvailabilityZone, &out.AvailabilityZone + *out = new(string) + **out = **in + } + if in.Backup != nil { + in, out := &in.Backup, &out.Backup + *out = new(Backup) + (*in).DeepCopyInto(*out) + } + if in.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(ServerProperties_CreateMode) + **out = **in + } + if in.DataEncryption != nil { + in, out := &in.DataEncryption, &out.DataEncryption + *out = new(DataEncryption) + (*in).DeepCopyInto(*out) + } + if in.HighAvailability != nil { + in, out := &in.HighAvailability, &out.HighAvailability + *out = new(HighAvailability) + (*in).DeepCopyInto(*out) + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(MySQLServerIdentity) + (*in).DeepCopyInto(*out) + } + if in.ImportSourceProperties != nil { + in, out := &in.ImportSourceProperties, &out.ImportSourceProperties + *out = new(ImportSourceProperties) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.MaintenanceWindow != nil { + in, out := &in.MaintenanceWindow, &out.MaintenanceWindow + *out = new(MaintenanceWindow) + (*in).DeepCopyInto(*out) + } + if in.Network != nil { + in, out := &in.Network, &out.Network + *out = new(Network) + (*in).DeepCopyInto(*out) + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServerOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.ReplicationRole != nil { + in, out := &in.ReplicationRole, &out.ReplicationRole + *out = new(ReplicationRole) + **out = **in + } + if in.RestorePointInTime != nil { + in, out := &in.RestorePointInTime, &out.RestorePointInTime + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(MySQLServerSku) + (*in).DeepCopyInto(*out) + } + if in.SourceServerResourceReference != nil { + in, out := &in.SourceServerResourceReference, &out.SourceServerResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.Storage != nil { + in, out := &in.Storage, &out.Storage + *out = new(Storage) + (*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.Version != nil { + in, out := &in.Version, &out.Version + *out = new(ServerVersion) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServer_Spec. +func (in *FlexibleServer_Spec) DeepCopy() *FlexibleServer_Spec { + if in == nil { + return nil + } + out := new(FlexibleServer_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 *FlexibleServersAdministrator) DeepCopyInto(out *FlexibleServersAdministrator) { + *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 FlexibleServersAdministrator. +func (in *FlexibleServersAdministrator) DeepCopy() *FlexibleServersAdministrator { + if in == nil { + return nil + } + out := new(FlexibleServersAdministrator) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersAdministrator) 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 *FlexibleServersAdministratorList) DeepCopyInto(out *FlexibleServersAdministratorList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersAdministrator, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersAdministratorList. +func (in *FlexibleServersAdministratorList) DeepCopy() *FlexibleServersAdministratorList { + if in == nil { + return nil + } + out := new(FlexibleServersAdministratorList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersAdministratorList) 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 *FlexibleServersAdministratorOperatorSpec) DeepCopyInto(out *FlexibleServersAdministratorOperatorSpec) { + *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 FlexibleServersAdministratorOperatorSpec. +func (in *FlexibleServersAdministratorOperatorSpec) DeepCopy() *FlexibleServersAdministratorOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersAdministratorOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersAdministrator_STATUS) DeepCopyInto(out *FlexibleServersAdministrator_STATUS) { + *out = *in + if in.AdministratorType != nil { + in, out := &in.AdministratorType, &out.AdministratorType + *out = new(AdministratorProperties_AdministratorType_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.IdentityResourceId != nil { + in, out := &in.IdentityResourceId, &out.IdentityResourceId + *out = new(string) + **out = **in + } + if in.Login != nil { + in, out := &in.Login, &out.Login + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Sid != nil { + in, out := &in.Sid, &out.Sid + *out = new(string) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + 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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersAdministrator_STATUS. +func (in *FlexibleServersAdministrator_STATUS) DeepCopy() *FlexibleServersAdministrator_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersAdministrator_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 *FlexibleServersAdministrator_Spec) DeepCopyInto(out *FlexibleServersAdministrator_Spec) { + *out = *in + if in.AdministratorType != nil { + in, out := &in.AdministratorType, &out.AdministratorType + *out = new(AdministratorProperties_AdministratorType) + **out = **in + } + if in.IdentityResourceReference != nil { + in, out := &in.IdentityResourceReference, &out.IdentityResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.Login != nil { + in, out := &in.Login, &out.Login + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersAdministratorOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.Sid != nil { + in, out := &in.Sid, &out.Sid + *out = new(string) + **out = **in + } + if in.SidFromConfig != nil { + in, out := &in.SidFromConfig, &out.SidFromConfig + *out = new(genruntime.ConfigMapReference) + **out = **in + } + if in.TenantId != nil { + in, out := &in.TenantId, &out.TenantId + *out = new(string) + **out = **in + } + if in.TenantIdFromConfig != nil { + in, out := &in.TenantIdFromConfig, &out.TenantIdFromConfig + *out = new(genruntime.ConfigMapReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersAdministrator_Spec. +func (in *FlexibleServersAdministrator_Spec) DeepCopy() *FlexibleServersAdministrator_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersAdministrator_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 *FlexibleServersConfiguration) DeepCopyInto(out *FlexibleServersConfiguration) { + *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 FlexibleServersConfiguration. +func (in *FlexibleServersConfiguration) DeepCopy() *FlexibleServersConfiguration { + if in == nil { + return nil + } + out := new(FlexibleServersConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersConfiguration) 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 *FlexibleServersConfigurationList) DeepCopyInto(out *FlexibleServersConfigurationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersConfiguration, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersConfigurationList. +func (in *FlexibleServersConfigurationList) DeepCopy() *FlexibleServersConfigurationList { + if in == nil { + return nil + } + out := new(FlexibleServersConfigurationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersConfigurationList) 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 *FlexibleServersConfigurationOperatorSpec) DeepCopyInto(out *FlexibleServersConfigurationOperatorSpec) { + *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 FlexibleServersConfigurationOperatorSpec. +func (in *FlexibleServersConfigurationOperatorSpec) DeepCopy() *FlexibleServersConfigurationOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersConfigurationOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersConfiguration_STATUS) DeepCopyInto(out *FlexibleServersConfiguration_STATUS) { + *out = *in + if in.AllowedValues != nil { + in, out := &in.AllowedValues, &out.AllowedValues + *out = new(string) + **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.CurrentValue != nil { + in, out := &in.CurrentValue, &out.CurrentValue + *out = new(string) + **out = **in + } + if in.DataType != nil { + in, out := &in.DataType, &out.DataType + *out = new(string) + **out = **in + } + if in.DefaultValue != nil { + in, out := &in.DefaultValue, &out.DefaultValue + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DocumentationLink != nil { + in, out := &in.DocumentationLink, &out.DocumentationLink + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.IsConfigPendingRestart != nil { + in, out := &in.IsConfigPendingRestart, &out.IsConfigPendingRestart + *out = new(ConfigurationProperties_IsConfigPendingRestart_STATUS) + **out = **in + } + if in.IsDynamicConfig != nil { + in, out := &in.IsDynamicConfig, &out.IsDynamicConfig + *out = new(ConfigurationProperties_IsDynamicConfig_STATUS) + **out = **in + } + if in.IsReadOnly != nil { + in, out := &in.IsReadOnly, &out.IsReadOnly + *out = new(ConfigurationProperties_IsReadOnly_STATUS) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(ConfigurationProperties_Source_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 + } + 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 FlexibleServersConfiguration_STATUS. +func (in *FlexibleServersConfiguration_STATUS) DeepCopy() *FlexibleServersConfiguration_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersConfiguration_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 *FlexibleServersConfiguration_Spec) DeepCopyInto(out *FlexibleServersConfiguration_Spec) { + *out = *in + if in.CurrentValue != nil { + in, out := &in.CurrentValue, &out.CurrentValue + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersConfigurationOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.Source != nil { + in, out := &in.Source, &out.Source + *out = new(ConfigurationProperties_Source) + **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 FlexibleServersConfiguration_Spec. +func (in *FlexibleServersConfiguration_Spec) DeepCopy() *FlexibleServersConfiguration_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersConfiguration_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 *FlexibleServersDatabase) DeepCopyInto(out *FlexibleServersDatabase) { + *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 FlexibleServersDatabase. +func (in *FlexibleServersDatabase) DeepCopy() *FlexibleServersDatabase { + if in == nil { + return nil + } + out := new(FlexibleServersDatabase) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersDatabase) 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 *FlexibleServersDatabaseList) DeepCopyInto(out *FlexibleServersDatabaseList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersDatabase, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersDatabaseList. +func (in *FlexibleServersDatabaseList) DeepCopy() *FlexibleServersDatabaseList { + if in == nil { + return nil + } + out := new(FlexibleServersDatabaseList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersDatabaseList) 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 *FlexibleServersDatabaseOperatorSpec) DeepCopyInto(out *FlexibleServersDatabaseOperatorSpec) { + *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 FlexibleServersDatabaseOperatorSpec. +func (in *FlexibleServersDatabaseOperatorSpec) DeepCopy() *FlexibleServersDatabaseOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersDatabaseOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersDatabase_STATUS) DeepCopyInto(out *FlexibleServersDatabase_STATUS) { + *out = *in + if in.Charset != nil { + in, out := &in.Charset, &out.Charset + *out = new(string) + **out = **in + } + if in.Collation != nil { + in, out := &in.Collation, &out.Collation + *out = new(string) + **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.Name != nil { + in, out := &in.Name, &out.Name + *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 FlexibleServersDatabase_STATUS. +func (in *FlexibleServersDatabase_STATUS) DeepCopy() *FlexibleServersDatabase_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersDatabase_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 *FlexibleServersDatabase_Spec) DeepCopyInto(out *FlexibleServersDatabase_Spec) { + *out = *in + if in.Charset != nil { + in, out := &in.Charset, &out.Charset + *out = new(string) + **out = **in + } + if in.Collation != nil { + in, out := &in.Collation, &out.Collation + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersDatabaseOperatorSpec) + (*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 FlexibleServersDatabase_Spec. +func (in *FlexibleServersDatabase_Spec) DeepCopy() *FlexibleServersDatabase_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersDatabase_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 *FlexibleServersFirewallRule) DeepCopyInto(out *FlexibleServersFirewallRule) { + *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 FlexibleServersFirewallRule. +func (in *FlexibleServersFirewallRule) DeepCopy() *FlexibleServersFirewallRule { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersFirewallRule) 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 *FlexibleServersFirewallRuleList) DeepCopyInto(out *FlexibleServersFirewallRuleList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]FlexibleServersFirewallRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersFirewallRuleList. +func (in *FlexibleServersFirewallRuleList) DeepCopy() *FlexibleServersFirewallRuleList { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRuleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *FlexibleServersFirewallRuleList) 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 *FlexibleServersFirewallRuleOperatorSpec) DeepCopyInto(out *FlexibleServersFirewallRuleOperatorSpec) { + *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 FlexibleServersFirewallRuleOperatorSpec. +func (in *FlexibleServersFirewallRuleOperatorSpec) DeepCopy() *FlexibleServersFirewallRuleOperatorSpec { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRuleOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FlexibleServersFirewallRule_STATUS) DeepCopyInto(out *FlexibleServersFirewallRule_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.EndIpAddress != nil { + in, out := &in.EndIpAddress, &out.EndIpAddress + *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.StartIpAddress != nil { + in, out := &in.StartIpAddress, &out.StartIpAddress + *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 FlexibleServersFirewallRule_STATUS. +func (in *FlexibleServersFirewallRule_STATUS) DeepCopy() *FlexibleServersFirewallRule_STATUS { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRule_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 *FlexibleServersFirewallRule_Spec) DeepCopyInto(out *FlexibleServersFirewallRule_Spec) { + *out = *in + if in.EndIpAddress != nil { + in, out := &in.EndIpAddress, &out.EndIpAddress + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(FlexibleServersFirewallRuleOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.StartIpAddress != nil { + in, out := &in.StartIpAddress, &out.StartIpAddress + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlexibleServersFirewallRule_Spec. +func (in *FlexibleServersFirewallRule_Spec) DeepCopy() *FlexibleServersFirewallRule_Spec { + if in == nil { + return nil + } + out := new(FlexibleServersFirewallRule_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 *HighAvailability) DeepCopyInto(out *HighAvailability) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(HighAvailability_Mode) + **out = **in + } + if in.StandbyAvailabilityZone != nil { + in, out := &in.StandbyAvailabilityZone, &out.StandbyAvailabilityZone + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HighAvailability. +func (in *HighAvailability) DeepCopy() *HighAvailability { + if in == nil { + return nil + } + out := new(HighAvailability) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HighAvailability_STATUS) DeepCopyInto(out *HighAvailability_STATUS) { + *out = *in + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(HighAvailability_Mode_STATUS) + **out = **in + } + if in.StandbyAvailabilityZone != nil { + in, out := &in.StandbyAvailabilityZone, &out.StandbyAvailabilityZone + *out = new(string) + **out = **in + } + if in.State != nil { + in, out := &in.State, &out.State + *out = new(HighAvailability_State_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HighAvailability_STATUS. +func (in *HighAvailability_STATUS) DeepCopy() *HighAvailability_STATUS { + if in == nil { + return nil + } + out := new(HighAvailability_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 *ImportSourceProperties) DeepCopyInto(out *ImportSourceProperties) { + *out = *in + if in.DataDirPath != nil { + in, out := &in.DataDirPath, &out.DataDirPath + *out = new(string) + **out = **in + } + if in.SasToken != nil { + in, out := &in.SasToken, &out.SasToken + *out = new(genruntime.SecretReference) + **out = **in + } + if in.StorageType != nil { + in, out := &in.StorageType, &out.StorageType + *out = new(ImportSourceProperties_StorageType) + **out = **in + } + if in.StorageUrl != nil { + in, out := &in.StorageUrl, &out.StorageUrl + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImportSourceProperties. +func (in *ImportSourceProperties) DeepCopy() *ImportSourceProperties { + if in == nil { + return nil + } + out := new(ImportSourceProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ImportSourceProperties_STATUS) DeepCopyInto(out *ImportSourceProperties_STATUS) { + *out = *in + if in.DataDirPath != nil { + in, out := &in.DataDirPath, &out.DataDirPath + *out = new(string) + **out = **in + } + if in.StorageType != nil { + in, out := &in.StorageType, &out.StorageType + *out = new(ImportSourceProperties_StorageType_STATUS) + **out = **in + } + if in.StorageUrl != nil { + in, out := &in.StorageUrl, &out.StorageUrl + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImportSourceProperties_STATUS. +func (in *ImportSourceProperties_STATUS) DeepCopy() *ImportSourceProperties_STATUS { + if in == nil { + return nil + } + out := new(ImportSourceProperties_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 *MaintenanceWindow) DeepCopyInto(out *MaintenanceWindow) { + *out = *in + if in.CustomWindow != nil { + in, out := &in.CustomWindow, &out.CustomWindow + *out = new(string) + **out = **in + } + if in.DayOfWeek != nil { + in, out := &in.DayOfWeek, &out.DayOfWeek + *out = new(int) + **out = **in + } + if in.StartHour != nil { + in, out := &in.StartHour, &out.StartHour + *out = new(int) + **out = **in + } + if in.StartMinute != nil { + in, out := &in.StartMinute, &out.StartMinute + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceWindow. +func (in *MaintenanceWindow) DeepCopy() *MaintenanceWindow { + if in == nil { + return nil + } + out := new(MaintenanceWindow) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MaintenanceWindow_STATUS) DeepCopyInto(out *MaintenanceWindow_STATUS) { + *out = *in + if in.CustomWindow != nil { + in, out := &in.CustomWindow, &out.CustomWindow + *out = new(string) + **out = **in + } + if in.DayOfWeek != nil { + in, out := &in.DayOfWeek, &out.DayOfWeek + *out = new(int) + **out = **in + } + if in.StartHour != nil { + in, out := &in.StartHour, &out.StartHour + *out = new(int) + **out = **in + } + if in.StartMinute != nil { + in, out := &in.StartMinute, &out.StartMinute + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MaintenanceWindow_STATUS. +func (in *MaintenanceWindow_STATUS) DeepCopy() *MaintenanceWindow_STATUS { + if in == nil { + return nil + } + out := new(MaintenanceWindow_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 *MySQLServerIdentity) DeepCopyInto(out *MySQLServerIdentity) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(MySQLServerIdentity_Type) + **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 MySQLServerIdentity. +func (in *MySQLServerIdentity) DeepCopy() *MySQLServerIdentity { + if in == nil { + return nil + } + out := new(MySQLServerIdentity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MySQLServerIdentity_STATUS) DeepCopyInto(out *MySQLServerIdentity_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(MySQLServerIdentity_Type_STATUS) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make(map[string]v1.JSON, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MySQLServerIdentity_STATUS. +func (in *MySQLServerIdentity_STATUS) DeepCopy() *MySQLServerIdentity_STATUS { + if in == nil { + return nil + } + out := new(MySQLServerIdentity_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 *MySQLServerSku) DeepCopyInto(out *MySQLServerSku) { + *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(MySQLServerSku_Tier) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MySQLServerSku. +func (in *MySQLServerSku) DeepCopy() *MySQLServerSku { + if in == nil { + return nil + } + out := new(MySQLServerSku) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MySQLServerSku_STATUS) DeepCopyInto(out *MySQLServerSku_STATUS) { + *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(MySQLServerSku_Tier_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MySQLServerSku_STATUS. +func (in *MySQLServerSku_STATUS) DeepCopy() *MySQLServerSku_STATUS { + if in == nil { + return nil + } + out := new(MySQLServerSku_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 *Network) DeepCopyInto(out *Network) { + *out = *in + if in.DelegatedSubnetResourceReference != nil { + in, out := &in.DelegatedSubnetResourceReference, &out.DelegatedSubnetResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.PrivateDnsZoneResourceReference != nil { + in, out := &in.PrivateDnsZoneResourceReference, &out.PrivateDnsZoneResourceReference + *out = new(genruntime.ResourceReference) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(EnableStatusEnum) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network. +func (in *Network) DeepCopy() *Network { + if in == nil { + return nil + } + out := new(Network) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Network_STATUS) DeepCopyInto(out *Network_STATUS) { + *out = *in + if in.DelegatedSubnetResourceId != nil { + in, out := &in.DelegatedSubnetResourceId, &out.DelegatedSubnetResourceId + *out = new(string) + **out = **in + } + if in.PrivateDnsZoneResourceId != nil { + in, out := &in.PrivateDnsZoneResourceId, &out.PrivateDnsZoneResourceId + *out = new(string) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(EnableStatusEnum_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Network_STATUS. +func (in *Network_STATUS) DeepCopy() *Network_STATUS { + if in == nil { + return nil + } + out := new(Network_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) DeepCopyInto(out *PrivateEndpointConnection_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 PrivateEndpointConnection_STATUS. +func (in *PrivateEndpointConnection_STATUS) DeepCopy() *PrivateEndpointConnection_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointConnection_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 *Storage) DeepCopyInto(out *Storage) { + *out = *in + if in.AutoGrow != nil { + in, out := &in.AutoGrow, &out.AutoGrow + *out = new(EnableStatusEnum) + **out = **in + } + if in.AutoIoScaling != nil { + in, out := &in.AutoIoScaling, &out.AutoIoScaling + *out = new(EnableStatusEnum) + **out = **in + } + if in.Iops != nil { + in, out := &in.Iops, &out.Iops + *out = new(int) + **out = **in + } + if in.LogOnDisk != nil { + in, out := &in.LogOnDisk, &out.LogOnDisk + *out = new(EnableStatusEnum) + **out = **in + } + if in.StorageSizeGB != nil { + in, out := &in.StorageSizeGB, &out.StorageSizeGB + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Storage. +func (in *Storage) DeepCopy() *Storage { + if in == nil { + return nil + } + out := new(Storage) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Storage_STATUS) DeepCopyInto(out *Storage_STATUS) { + *out = *in + if in.AutoGrow != nil { + in, out := &in.AutoGrow, &out.AutoGrow + *out = new(EnableStatusEnum_STATUS) + **out = **in + } + if in.AutoIoScaling != nil { + in, out := &in.AutoIoScaling, &out.AutoIoScaling + *out = new(EnableStatusEnum_STATUS) + **out = **in + } + if in.Iops != nil { + in, out := &in.Iops, &out.Iops + *out = new(int) + **out = **in + } + if in.LogOnDisk != nil { + in, out := &in.LogOnDisk, &out.LogOnDisk + *out = new(EnableStatusEnum_STATUS) + **out = **in + } + if in.StorageSizeGB != nil { + in, out := &in.StorageSizeGB, &out.StorageSizeGB + *out = new(int) + **out = **in + } + if in.StorageSku != nil { + in, out := &in.StorageSku, &out.StorageSku + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Storage_STATUS. +func (in *Storage_STATUS) DeepCopy() *Storage_STATUS { + if in == nil { + return nil + } + out := new(Storage_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 *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 *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 +} diff --git a/v2/api/dbformysql/versions_matrix.md b/v2/api/dbformysql/versions_matrix.md index cba034c37d..ce4647555b 100644 --- a/v2/api/dbformysql/versions_matrix.md +++ b/v2/api/dbformysql/versions_matrix.md @@ -1,87 +1,87 @@ -| Type Definitions in package "dbformysql" | v1api20210501 | v1api20220101 | v1api20230630 | -|-------------------------------------------------------|---------------|---------------|---------------| -| APIVersion | v1api20210501 | v1api20220101 | v1api20230630 | -| AdministratorProperties | | v1api20220101 | v1api20230630 | -| AdministratorProperties_AdministratorType | | v1api20220101 | v1api20230630 | -| AdministratorProperties_AdministratorType_STATUS | | v1api20220101 | v1api20230630 | -| AdministratorProperties_STATUS | | v1api20220101 | v1api20230630 | -| Backup | v1api20210501 | | v1api20230630 | -| Backup_STATUS | v1api20210501 | | v1api20230630 | -| ConfigurationProperties | | v1api20220101 | v1api20230630 | -| ConfigurationProperties_IsConfigPendingRestart_STATUS | | v1api20220101 | v1api20230630 | -| ConfigurationProperties_IsDynamicConfig_STATUS | | v1api20220101 | v1api20230630 | -| ConfigurationProperties_IsReadOnly_STATUS | | v1api20220101 | v1api20230630 | -| ConfigurationProperties_STATUS | | v1api20220101 | v1api20230630 | -| ConfigurationProperties_Source | | v1api20220101 | v1api20230630 | -| ConfigurationProperties_Source_STATUS | | v1api20220101 | v1api20230630 | -| DataEncryption | v1api20210501 | | v1api20230630 | -| DataEncryption_STATUS | v1api20210501 | | v1api20230630 | -| DataEncryption_Type | v1api20210501 | | v1api20230630 | -| DataEncryption_Type_STATUS | v1api20210501 | | v1api20230630 | -| DatabaseProperties | v1api20210501 | | v1api20230630 | -| DatabaseProperties_STATUS | v1api20210501 | | v1api20230630 | -| EnableStatusEnum | v1api20210501 | | v1api20230630 | -| EnableStatusEnum_STATUS | v1api20210501 | | v1api20230630 | -| FirewallRuleProperties | v1api20210501 | | v1api20230630 | -| FirewallRuleProperties_STATUS | v1api20210501 | | v1api20230630 | -| FlexibleServer | v1api20210501 | | v1api20230630 | -| FlexibleServer_STATUS | v1api20210501 | | v1api20230630 | -| FlexibleServer_Spec | v1api20210501 | | v1api20230630 | -| FlexibleServersAdministrator | | v1api20220101 | v1api20230630 | -| FlexibleServersAdministrator_STATUS | | v1api20220101 | v1api20230630 | -| FlexibleServersAdministrator_Spec | | v1api20220101 | v1api20230630 | -| FlexibleServersConfiguration | | v1api20220101 | v1api20230630 | -| FlexibleServersConfiguration_STATUS | | v1api20220101 | v1api20230630 | -| FlexibleServersConfiguration_Spec | | v1api20220101 | v1api20230630 | -| FlexibleServersDatabase | v1api20210501 | | v1api20230630 | -| FlexibleServersDatabase_STATUS | v1api20210501 | | v1api20230630 | -| FlexibleServersDatabase_Spec | v1api20210501 | | v1api20230630 | -| FlexibleServersFirewallRule | v1api20210501 | | v1api20230630 | -| FlexibleServersFirewallRule_STATUS | v1api20210501 | | v1api20230630 | -| FlexibleServersFirewallRule_Spec | v1api20210501 | | v1api20230630 | -| FlexibleServers_Administrator_Name_Spec | | v1api20220101 | v1api20230630 | -| HighAvailability | v1api20210501 | | v1api20230630 | -| HighAvailability_Mode | v1api20210501 | | v1api20230630 | -| HighAvailability_Mode_STATUS | v1api20210501 | | v1api20230630 | -| HighAvailability_STATUS | v1api20210501 | | v1api20230630 | -| HighAvailability_State_STATUS | v1api20210501 | | v1api20230630 | -| Identity | v1api20210501 | | | -| Identity_STATUS | v1api20210501 | | | -| Identity_Type | v1api20210501 | | | -| Identity_Type_STATUS | v1api20210501 | | | -| ImportSourceProperties | | | v1api20230630 | -| ImportSourceProperties_STATUS | | | v1api20230630 | -| ImportSourceProperties_StorageType | | | v1api20230630 | -| ImportSourceProperties_StorageType_STATUS | | | v1api20230630 | -| MaintenanceWindow | v1api20210501 | | v1api20230630 | -| MaintenanceWindow_STATUS | v1api20210501 | | v1api20230630 | -| MySQLServerIdentity | | | v1api20230630 | -| MySQLServerIdentity_STATUS | | | v1api20230630 | -| MySQLServerIdentity_Type | | | v1api20230630 | -| MySQLServerIdentity_Type_STATUS | | | v1api20230630 | -| MySQLServerSku | | | v1api20230630 | -| MySQLServerSku_STATUS | | | v1api20230630 | -| MySQLServerSku_Tier | | | v1api20230630 | -| MySQLServerSku_Tier_STATUS | | | v1api20230630 | -| Network | v1api20210501 | | v1api20230630 | -| Network_STATUS | v1api20210501 | | v1api20230630 | -| PrivateEndpointConnection_STATUS | | | v1api20230630 | -| ReplicationRole | v1api20210501 | | v1api20230630 | -| ReplicationRole_STATUS | v1api20210501 | | v1api20230630 | -| ServerProperties | v1api20210501 | | v1api20230630 | -| ServerProperties_CreateMode | v1api20210501 | | v1api20230630 | -| ServerProperties_CreateMode_STATUS | v1api20210501 | | v1api20230630 | -| ServerProperties_STATUS | v1api20210501 | | v1api20230630 | -| ServerProperties_State_STATUS | v1api20210501 | | v1api20230630 | -| ServerVersion | v1api20210501 | | v1api20230630 | -| ServerVersion_STATUS | v1api20210501 | | v1api20230630 | -| Sku | v1api20210501 | | | -| Sku_STATUS | v1api20210501 | | | -| Sku_Tier | v1api20210501 | | | -| Sku_Tier_STATUS | v1api20210501 | | | -| Storage | v1api20210501 | | v1api20230630 | -| Storage_STATUS | v1api20210501 | | v1api20230630 | -| SystemData_CreatedByType_STATUS | v1api20210501 | v1api20220101 | v1api20230630 | -| SystemData_LastModifiedByType_STATUS | v1api20210501 | v1api20220101 | v1api20230630 | -| SystemData_STATUS | v1api20210501 | v1api20220101 | v1api20230630 | -| UserAssignedIdentityDetails | v1api20210501 | | v1api20230630 | +| Type Definitions in package "dbformysql" | v1api20210501 | v1api20220101 | v1api20230630 | v1api20231230 | +|-------------------------------------------------------|---------------|---------------|---------------|---------------| +| APIVersion | v1api20210501 | v1api20220101 | v1api20230630 | v1api20231230 | +| AdministratorProperties | | v1api20220101 | v1api20230630 | v1api20231230 | +| AdministratorProperties_AdministratorType | | v1api20220101 | v1api20230630 | v1api20231230 | +| AdministratorProperties_AdministratorType_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| AdministratorProperties_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| Backup | v1api20210501 | | v1api20230630 | v1api20231230 | +| Backup_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| ConfigurationProperties | | v1api20220101 | v1api20230630 | v1api20231230 | +| ConfigurationProperties_IsConfigPendingRestart_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| ConfigurationProperties_IsDynamicConfig_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| ConfigurationProperties_IsReadOnly_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| ConfigurationProperties_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| ConfigurationProperties_Source | | v1api20220101 | v1api20230630 | v1api20231230 | +| ConfigurationProperties_Source_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| DataEncryption | v1api20210501 | | v1api20230630 | v1api20231230 | +| DataEncryption_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| DataEncryption_Type | v1api20210501 | | v1api20230630 | v1api20231230 | +| DataEncryption_Type_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| DatabaseProperties | v1api20210501 | | v1api20230630 | v1api20231230 | +| DatabaseProperties_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| EnableStatusEnum | v1api20210501 | | v1api20230630 | v1api20231230 | +| EnableStatusEnum_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| FirewallRuleProperties | v1api20210501 | | v1api20230630 | v1api20231230 | +| FirewallRuleProperties_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServer | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServer_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServer_Spec | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServersAdministrator | | v1api20220101 | v1api20230630 | v1api20231230 | +| FlexibleServersAdministrator_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| FlexibleServersAdministrator_Spec | | v1api20220101 | v1api20230630 | v1api20231230 | +| FlexibleServersConfiguration | | v1api20220101 | v1api20230630 | v1api20231230 | +| FlexibleServersConfiguration_STATUS | | v1api20220101 | v1api20230630 | v1api20231230 | +| FlexibleServersConfiguration_Spec | | v1api20220101 | v1api20230630 | v1api20231230 | +| FlexibleServersDatabase | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServersDatabase_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServersDatabase_Spec | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServersFirewallRule | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServersFirewallRule_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServersFirewallRule_Spec | v1api20210501 | | v1api20230630 | v1api20231230 | +| FlexibleServers_Administrator_Name_Spec | | v1api20220101 | v1api20230630 | v1api20231230 | +| HighAvailability | v1api20210501 | | v1api20230630 | v1api20231230 | +| HighAvailability_Mode | v1api20210501 | | v1api20230630 | v1api20231230 | +| HighAvailability_Mode_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| HighAvailability_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| HighAvailability_State_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| Identity | v1api20210501 | | | | +| Identity_STATUS | v1api20210501 | | | | +| Identity_Type | v1api20210501 | | | | +| Identity_Type_STATUS | v1api20210501 | | | | +| ImportSourceProperties | | | v1api20230630 | v1api20231230 | +| ImportSourceProperties_STATUS | | | v1api20230630 | v1api20231230 | +| ImportSourceProperties_StorageType | | | v1api20230630 | v1api20231230 | +| ImportSourceProperties_StorageType_STATUS | | | v1api20230630 | v1api20231230 | +| MaintenanceWindow | v1api20210501 | | v1api20230630 | v1api20231230 | +| MaintenanceWindow_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| MySQLServerIdentity | | | v1api20230630 | v1api20231230 | +| MySQLServerIdentity_STATUS | | | v1api20230630 | v1api20231230 | +| MySQLServerIdentity_Type | | | v1api20230630 | v1api20231230 | +| MySQLServerIdentity_Type_STATUS | | | v1api20230630 | v1api20231230 | +| MySQLServerSku | | | v1api20230630 | v1api20231230 | +| MySQLServerSku_STATUS | | | v1api20230630 | v1api20231230 | +| MySQLServerSku_Tier | | | v1api20230630 | v1api20231230 | +| MySQLServerSku_Tier_STATUS | | | v1api20230630 | v1api20231230 | +| Network | v1api20210501 | | v1api20230630 | v1api20231230 | +| Network_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| PrivateEndpointConnection_STATUS | | | v1api20230630 | v1api20231230 | +| ReplicationRole | v1api20210501 | | v1api20230630 | v1api20231230 | +| ReplicationRole_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerProperties | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerProperties_CreateMode | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerProperties_CreateMode_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerProperties_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerProperties_State_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerVersion | v1api20210501 | | v1api20230630 | v1api20231230 | +| ServerVersion_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| Sku | v1api20210501 | | | | +| Sku_STATUS | v1api20210501 | | | | +| Sku_Tier | v1api20210501 | | | | +| Sku_Tier_STATUS | v1api20210501 | | | | +| Storage | v1api20210501 | | v1api20230630 | v1api20231230 | +| Storage_STATUS | v1api20210501 | | v1api20230630 | v1api20231230 | +| SystemData_CreatedByType_STATUS | v1api20210501 | v1api20220101 | v1api20230630 | v1api20231230 | +| SystemData_LastModifiedByType_STATUS | v1api20210501 | v1api20220101 | v1api20230630 | v1api20231230 | +| SystemData_STATUS | v1api20210501 | v1api20220101 | v1api20230630 | v1api20231230 | +| UserAssignedIdentityDetails | v1api20210501 | | v1api20230630 | v1api20231230 | diff --git a/v2/internal/controllers/controller_resources_gen.go b/v2/internal/controllers/controller_resources_gen.go index 4766a3388d..a207fbe84c 100644 --- a/v2/internal/controllers/controller_resources_gen.go +++ b/v2/internal/controllers/controller_resources_gen.go @@ -95,6 +95,8 @@ import ( dbformysql_v20220101s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20220101/storage" dbformysql_v20230630 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630" dbformysql_v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + dbformysql_v20231230 "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + dbformysql_v20231230s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" dbforpostgresql_customizations "github.com/Azure/azure-service-operator/v2/api/dbforpostgresql/customizations" dbforpostgresql_v20210601 "github.com/Azure/azure-service-operator/v2/api/dbforpostgresql/v1api20210601" dbforpostgresql_v20210601s "github.com/Azure/azure-service-operator/v2/api/dbforpostgresql/v1api20210601/storage" @@ -606,7 +608,7 @@ func getKnownStorageTypes() []*registration.StorageType { }, }) result = append(result, ®istration.StorageType{ - Obj: new(dbformysql_v20230630s.FlexibleServer), + Obj: new(dbformysql_v20231230s.FlexibleServer), Indexes: []registration.Index{ { Key: ".spec.administratorLoginPassword", @@ -620,12 +622,12 @@ func getKnownStorageTypes() []*registration.StorageType { Watches: []registration.Watch{ { Type: &v1.Secret{}, - MakeEventHandler: watchSecretsFactory([]string{".spec.administratorLoginPassword", ".spec.importSourceProperties.sasToken"}, &dbformysql_v20230630s.FlexibleServerList{}), + MakeEventHandler: watchSecretsFactory([]string{".spec.administratorLoginPassword", ".spec.importSourceProperties.sasToken"}, &dbformysql_v20231230s.FlexibleServerList{}), }, }, }) result = append(result, ®istration.StorageType{ - Obj: new(dbformysql_v20230630s.FlexibleServersAdministrator), + Obj: new(dbformysql_v20231230s.FlexibleServersAdministrator), Indexes: []registration.Index{ { Key: ".spec.sidFromConfig", @@ -639,13 +641,13 @@ func getKnownStorageTypes() []*registration.StorageType { Watches: []registration.Watch{ { Type: &v1.ConfigMap{}, - MakeEventHandler: watchConfigMapsFactory([]string{".spec.sidFromConfig", ".spec.tenantIdFromConfig"}, &dbformysql_v20230630s.FlexibleServersAdministratorList{}), + MakeEventHandler: watchConfigMapsFactory([]string{".spec.sidFromConfig", ".spec.tenantIdFromConfig"}, &dbformysql_v20231230s.FlexibleServersAdministratorList{}), }, }, }) - result = append(result, ®istration.StorageType{Obj: new(dbformysql_v20230630s.FlexibleServersConfiguration)}) - result = append(result, ®istration.StorageType{Obj: new(dbformysql_v20230630s.FlexibleServersDatabase)}) - result = append(result, ®istration.StorageType{Obj: new(dbformysql_v20230630s.FlexibleServersFirewallRule)}) + result = append(result, ®istration.StorageType{Obj: new(dbformysql_v20231230s.FlexibleServersConfiguration)}) + result = append(result, ®istration.StorageType{Obj: new(dbformysql_v20231230s.FlexibleServersDatabase)}) + result = append(result, ®istration.StorageType{Obj: new(dbformysql_v20231230s.FlexibleServersFirewallRule)}) result = append(result, ®istration.StorageType{ Obj: new(dbforpostgresql_v20221201s.FlexibleServer), Indexes: []registration.Index{ @@ -1782,6 +1784,20 @@ func getKnownTypes() []client.Object { new(dbformysql_v20230630s.FlexibleServersConfiguration), new(dbformysql_v20230630s.FlexibleServersDatabase), new(dbformysql_v20230630s.FlexibleServersFirewallRule)) + result = append( + result, + new(dbformysql_v20231230.FlexibleServer), + new(dbformysql_v20231230.FlexibleServersAdministrator), + new(dbformysql_v20231230.FlexibleServersConfiguration), + new(dbformysql_v20231230.FlexibleServersDatabase), + new(dbformysql_v20231230.FlexibleServersFirewallRule)) + result = append( + result, + new(dbformysql_v20231230s.FlexibleServer), + new(dbformysql_v20231230s.FlexibleServersAdministrator), + new(dbformysql_v20231230s.FlexibleServersConfiguration), + new(dbformysql_v20231230s.FlexibleServersDatabase), + new(dbformysql_v20231230s.FlexibleServersFirewallRule)) result = append( result, new(dbforpostgresql_v20210601.FlexibleServer), @@ -2461,6 +2477,8 @@ func createScheme() *runtime.Scheme { _ = dbformysql_v20220101s.AddToScheme(scheme) _ = dbformysql_v20230630.AddToScheme(scheme) _ = dbformysql_v20230630s.AddToScheme(scheme) + _ = dbformysql_v20231230.AddToScheme(scheme) + _ = dbformysql_v20231230s.AddToScheme(scheme) _ = dbforpostgresql_v20210601.AddToScheme(scheme) _ = dbforpostgresql_v20210601s.AddToScheme(scheme) _ = dbforpostgresql_v20220120p.AddToScheme(scheme) @@ -3326,9 +3344,9 @@ func indexDbformariadbServerAdministratorLoginPassword(rawObj client.Object) []s return obj.Spec.Properties.Default.AdministratorLoginPassword.Index() } -// indexDbformysqlFlexibleServerAdministratorLoginPassword an index function for dbformysql_v20230630s.FlexibleServer .spec.administratorLoginPassword +// indexDbformysqlFlexibleServerAdministratorLoginPassword an index function for dbformysql_v20231230s.FlexibleServer .spec.administratorLoginPassword func indexDbformysqlFlexibleServerAdministratorLoginPassword(rawObj client.Object) []string { - obj, ok := rawObj.(*dbformysql_v20230630s.FlexibleServer) + obj, ok := rawObj.(*dbformysql_v20231230s.FlexibleServer) if !ok { return nil } @@ -3338,9 +3356,9 @@ func indexDbformysqlFlexibleServerAdministratorLoginPassword(rawObj client.Objec return obj.Spec.AdministratorLoginPassword.Index() } -// indexDbformysqlFlexibleServerSasToken an index function for dbformysql_v20230630s.FlexibleServer .spec.importSourceProperties.sasToken +// indexDbformysqlFlexibleServerSasToken an index function for dbformysql_v20231230s.FlexibleServer .spec.importSourceProperties.sasToken func indexDbformysqlFlexibleServerSasToken(rawObj client.Object) []string { - obj, ok := rawObj.(*dbformysql_v20230630s.FlexibleServer) + obj, ok := rawObj.(*dbformysql_v20231230s.FlexibleServer) if !ok { return nil } @@ -3353,9 +3371,9 @@ func indexDbformysqlFlexibleServerSasToken(rawObj client.Object) []string { return obj.Spec.ImportSourceProperties.SasToken.Index() } -// indexDbformysqlFlexibleServersAdministratorSidFromConfig an index function for dbformysql_v20230630s.FlexibleServersAdministrator .spec.sidFromConfig +// indexDbformysqlFlexibleServersAdministratorSidFromConfig an index function for dbformysql_v20231230s.FlexibleServersAdministrator .spec.sidFromConfig func indexDbformysqlFlexibleServersAdministratorSidFromConfig(rawObj client.Object) []string { - obj, ok := rawObj.(*dbformysql_v20230630s.FlexibleServersAdministrator) + obj, ok := rawObj.(*dbformysql_v20231230s.FlexibleServersAdministrator) if !ok { return nil } @@ -3365,9 +3383,9 @@ func indexDbformysqlFlexibleServersAdministratorSidFromConfig(rawObj client.Obje return obj.Spec.SidFromConfig.Index() } -// indexDbformysqlFlexibleServersAdministratorTenantIdFromConfig an index function for dbformysql_v20230630s.FlexibleServersAdministrator .spec.tenantIdFromConfig +// indexDbformysqlFlexibleServersAdministratorTenantIdFromConfig an index function for dbformysql_v20231230s.FlexibleServersAdministrator .spec.tenantIdFromConfig func indexDbformysqlFlexibleServersAdministratorTenantIdFromConfig(rawObj client.Object) []string { - obj, ok := rawObj.(*dbformysql_v20230630s.FlexibleServersAdministrator) + obj, ok := rawObj.(*dbformysql_v20231230s.FlexibleServersAdministrator) if !ok { return nil } diff --git a/v2/internal/reconcilers/mysql/connector.go b/v2/internal/reconcilers/mysql/connector.go index d15341ee1c..314bb08a10 100644 --- a/v2/internal/reconcilers/mysql/connector.go +++ b/v2/internal/reconcilers/mysql/connector.go @@ -12,7 +12,7 @@ import ( ctrlconversion "sigs.k8s.io/controller-runtime/pkg/conversion" asomysql "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1" - dbformysql "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + dbformysql "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230/storage" "github.com/Azure/azure-service-operator/v2/internal/resolver" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" ) From 4615bc56b06d45d4a48ce32be886f57c5482958b Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Thu, 30 Jan 2025 10:21:17 +1300 Subject: [PATCH 3/8] Implement conversion override for SourceServerResourceId --- .../flexible_server_types_overrides.go | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 v2/api/dbformysql/v1api20210501/storage/flexible_server_types_overrides.go diff --git a/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_overrides.go b/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_overrides.go new file mode 100644 index 0000000000..40639f57e3 --- /dev/null +++ b/v2/api/dbformysql/v1api20210501/storage/flexible_server_types_overrides.go @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +package storage + +import ( + v20230630s "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20230630/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +var _ augmentConversionForFlexibleServer_Spec = &FlexibleServer_Spec{} + +// AssignPropertiesFrom implements augmentConversionForFlexibleServer. +func (server *FlexibleServer_Spec) AssignPropertiesFrom(src *v20230630s.FlexibleServer_Spec) error { + // Clone the existing property bag + pb := genruntime.NewPropertyBag(server.PropertyBag) + + if src.SourceServerResourceReference != nil { + armID := src.SourceServerResourceReference.ARMID + server.SourceServerResourceId = &armID + pb.Remove("SourceServerResourceReference") + } + + // Store updated property bag + server.PropertyBag = pb + + return nil +} + +// AssignPropertiesTo implements augmentConversionForFlexibleServer. +func (server *FlexibleServer_Spec) AssignPropertiesTo(dst *v20230630s.FlexibleServer_Spec) error { + // Get the current property bag + pb := genruntime.NewPropertyBag(dst.PropertyBag) + + if server.SourceServerResourceId != nil { + dst.SourceServerResourceReference = &genruntime.ResourceReference{ + ARMID: *server.SourceServerResourceId, + } + + pb.Remove("SourceServerResourceId") + } + + // Store updated property bag + dst.PropertyBag = pb + + return nil +} From 24942adca378e7ea7b6806cf2cd5e1a3a980b66b Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Thu, 30 Jan 2025 10:23:28 +1300 Subject: [PATCH 4/8] Add samples --- .../v1api20181130_userassignedidentity.yaml | 17 ++++++++++++ .../v1api20231230_flexibleserver.yaml | 27 +++++++++++++++++++ ...20231230_flexibleserversadministrator.yaml | 23 ++++++++++++++++ ...20231230_flexibleserversconfiguration.yaml | 11 ++++++++ ...v1api20231230_flexibleserversdatabase.yaml | 9 +++++++ ...i20231230_flexibleserversfirewallrule.yaml | 10 +++++++ 6 files changed, 97 insertions(+) create mode 100644 v2/samples/dbformysql/v1api20231230/refs/v1api20181130_userassignedidentity.yaml create mode 100644 v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml create mode 100644 v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml create mode 100644 v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml create mode 100644 v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml create mode 100644 v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml diff --git a/v2/samples/dbformysql/v1api20231230/refs/v1api20181130_userassignedidentity.yaml b/v2/samples/dbformysql/v1api20231230/refs/v1api20181130_userassignedidentity.yaml new file mode 100644 index 0000000000..e5568d3331 --- /dev/null +++ b/v2/samples/dbformysql/v1api20231230/refs/v1api20181130_userassignedidentity.yaml @@ -0,0 +1,17 @@ +apiVersion: managedidentity.azure.com/v1api20181130 +kind: UserAssignedIdentity +metadata: + name: adminidentity + namespace: default +spec: + location: eastus + owner: + name: aso-sample-rg + operatorSpec: + configMaps: + tenantId: + name: admin-settings + key: tenantId + clientId: + name: admin-settings + key: clientId diff --git a/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml new file mode 100644 index 0000000000..847d6e926c --- /dev/null +++ b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml @@ -0,0 +1,27 @@ +apiVersion: dbformysql.azure.com/v1api20231230 +kind: FlexibleServer +metadata: + name: samplemysql + namespace: default +spec: + location: eastus + owner: + name: aso-sample-rg + version: "8.0.21" + sku: + name: Standard_D4ds_v4 + tier: GeneralPurpose + administratorLogin: myAdmin + administratorLoginPassword: # This is the name/key of a Kubernetes secret in the same namespace + name: server-admin-pw + key: password + storage: + storageSizeGB: 128 + # Use a user managed identity (UMI) as the identity - this is required for setting up an AAD Admin but can be omitted otherwise + identity: + type: UserAssigned + userAssignedIdentities: + - reference: + group: managedidentity.azure.com + kind: UserAssignedIdentity + name: adminidentity diff --git a/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml new file mode 100644 index 0000000000..025e6f6c97 --- /dev/null +++ b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml @@ -0,0 +1,23 @@ +apiVersion: dbformysql.azure.com/v1api20231230 +kind: FlexibleServersAdministrator +metadata: + name: myadmin + namespace: default +spec: + owner: + name: samplemysql + administratorType: ActiveDirectory + login: adminidentity + tenantIdFromConfig: + name: admin-settings + key: tenantId + # We recommend that an ASO identity is configured as the AAD Administrator the Flexible Server + # in the case where you would like to use ASO to manage AAD users on the server. Provide the ASO identity + # clientId for the SID here. + sidFromConfig: + name: admin-settings + key: clientId + identityResourceReference: + group: managedidentity.azure.com + kind: UserAssignedIdentity + name: adminidentity diff --git a/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml new file mode 100644 index 0000000000..17a59d9697 --- /dev/null +++ b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml @@ -0,0 +1,11 @@ +apiVersion: dbformysql.azure.com/v1api20231230 +kind: FlexibleServersConfiguration +metadata: + name: maxconnections + namespace: default +spec: + owner: + name: samplemysql + azureName: max_connections + source: user-override + value: "20" diff --git a/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml new file mode 100644 index 0000000000..d4826c10aa --- /dev/null +++ b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml @@ -0,0 +1,9 @@ +apiVersion: dbformysql.azure.com/v1api20231230 +kind: FlexibleServersDatabase +metadata: + name: sampledb + namespace: default +spec: + owner: + name: samplemysql + charset: utf8mb4 diff --git a/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml new file mode 100644 index 0000000000..09f6025c73 --- /dev/null +++ b/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml @@ -0,0 +1,10 @@ +apiVersion: dbformysql.azure.com/v1api20231230 +kind: FlexibleServersFirewallRule +metadata: + name: samplemysql-fwrule + namespace: default +spec: + owner: + name: samplemysql + startIpAddress: 1.2.3.4 + endIpAddress: 1.2.3.4 From d8e1b812f2d5b47aa7fbf614d1b7b657cd0eef8d Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Thu, 30 Jan 2025 02:08:04 +0000 Subject: [PATCH 5/8] Add test for new version --- ...dbformysql_flexibleserver_20231230_test.go | 245 ++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go diff --git a/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go b/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go new file mode 100644 index 0000000000..3717b49d03 --- /dev/null +++ b/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go @@ -0,0 +1,245 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +package controllers_test + +import ( + "testing" + + . "github.com/onsi/gomega" + + "github.com/kr/pretty" + + mysql "github.com/Azure/azure-service-operator/v2/api/dbformysql/v1api20231230" + managedidentity "github.com/Azure/azure-service-operator/v2/api/managedidentity/v1api20181130" + resources "github.com/Azure/azure-service-operator/v2/api/resources/v1api20200601" + "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_DBForMySQL_FlexibleServer_20231230_CRUD(t *testing.T) { + t.Parallel() + tc := globalTestContext.ForTest(t) + + tc.AzureRegion = to.Ptr("canadacentral") + + rg := tc.CreateTestResourceGroupAndWait() + secretName := "mysqlsecret" + adminPasswordKey := "adminPassword" + adminPasswordSecretRef := createPasswordSecret(secretName, adminPasswordKey, tc) + + flexibleServer, fqdnSecret := newFlexibleServer20231230(tc, rg, adminPasswordSecretRef) + + tc.CreateResourceAndWait(flexibleServer) + + // It should be created in Kubernetes + tc.Expect(flexibleServer.Status.Id).ToNot(BeNil()) + armId := *flexibleServer.Status.Id + + // It should have the expected secret data written + tc.ExpectSecretHasKeys(fqdnSecret, "fqdn") + + // Perform a simple patch + old := flexibleServer.DeepCopy() + disabled := mysql.EnableStatusEnum_Disabled + flexibleServer.Spec.Backup = &mysql.Backup{ + BackupRetentionDays: to.Ptr(5), + GeoRedundantBackup: &disabled, + } + tc.PatchResourceAndWait(old, flexibleServer) + tc.Expect(flexibleServer.Status.Backup).ToNot(BeNil()) + tc.T.Log(pretty.Sprint(flexibleServer.Status.Backup)) + tc.Expect(flexibleServer.Status.Backup.BackupRetentionDays).To(Equal(to.Ptr(5))) + + tc.RunSubtests( + testcommon.Subtest{ + Name: "MySQL Flexible servers AAD Administrators CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + MySQLFlexibleServer_AADAdmin_20231230_CRUD(tc, rg, flexibleServer) + }, + }, + ) + + tc.RunParallelSubtests( + testcommon.Subtest{ + Name: "MySQL Flexible servers configuration CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + MySQLFlexibleServer_Configuration_20231230_CRUD(tc, flexibleServer) + }, + }, + testcommon.Subtest{ + Name: "MySQL Flexible servers database CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + MySQLFlexibleServer_Database_20231230_CRUD(tc, flexibleServer) + }, + }, + testcommon.Subtest{ + Name: "MySQL Flexible servers firewall CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + MySQLFlexibleServer_FirewallRule_20231230_CRUD(tc, flexibleServer) + }, + }, + ) + + tc.DeleteResourceAndWait(flexibleServer) + + // Ensure that the resource was really deleted in Azure + exists, retryAfter, err := tc.AzureClient.CheckExistenceWithGetByID(tc.Ctx, armId, string(mysql.APIVersion_Value)) + tc.Expect(err).ToNot(HaveOccurred()) + tc.Expect(retryAfter).To(BeZero()) + tc.Expect(exists).To(BeFalse()) +} + +func newFlexibleServer20231230(tc *testcommon.KubePerTestContext, rg *resources.ResourceGroup, adminPasswordSecretRef genruntime.SecretReference) (*mysql.FlexibleServer, string) { + version := mysql.ServerVersion_8021 + tier := mysql.MySQLServerSku_Tier_GeneralPurpose + fqdnSecret := "fqdnsecret" + flexibleServer := &mysql.FlexibleServer{ + ObjectMeta: tc.MakeObjectMeta("mysql"), + Spec: mysql.FlexibleServer_Spec{ + Location: tc.AzureRegion, + Owner: testcommon.AsOwner(rg), + Version: &version, + Sku: &mysql.MySQLServerSku{ + Name: to.Ptr("Standard_D4ds_v4"), + Tier: &tier, + }, + AdministratorLogin: to.Ptr("myadmin"), + AdministratorLoginPassword: &adminPasswordSecretRef, + Storage: &mysql.Storage{ + StorageSizeGB: to.Ptr(128), + }, + OperatorSpec: &mysql.FlexibleServerOperatorSpec{ + Secrets: &mysql.FlexibleServerOperatorSecrets{ + FullyQualifiedDomainName: &genruntime.SecretDestination{Name: fqdnSecret, Key: "fqdn"}, + }, + }, + }, + } + + return flexibleServer, fqdnSecret +} + +func MySQLFlexibleServer_Database_20231230_CRUD(tc *testcommon.KubePerTestContext, flexibleServer *mysql.FlexibleServer) { + // The RP doesn't like databases with hyphens in the name, + // although it doesn't give nice errors to point this out + database := &mysql.FlexibleServersDatabase{ + ObjectMeta: tc.MakeObjectMetaWithName(tc.NoSpaceNamer.GenerateName("db")), + Spec: mysql.FlexibleServersDatabase_Spec{ + Owner: testcommon.AsOwner(flexibleServer), + Charset: to.Ptr("utf8mb4"), + }, + } + tc.CreateResourceAndWait(database) + defer tc.DeleteResourceAndWait(database) + + tc.Expect(database.Status.Id).ToNot(BeNil()) +} + +func MySQLFlexibleServer_FirewallRule_20231230_CRUD(tc *testcommon.KubePerTestContext, flexibleServer *mysql.FlexibleServer) { + rule := &mysql.FlexibleServersFirewallRule{ + ObjectMeta: tc.MakeObjectMeta("fwrule"), + Spec: mysql.FlexibleServersFirewallRule_Spec{ + Owner: testcommon.AsOwner(flexibleServer), + StartIpAddress: to.Ptr("1.2.3.4"), + EndIpAddress: to.Ptr("1.2.3.4"), + }, + } + + tc.CreateResourceAndWait(rule) + defer tc.DeleteResourceAndWait(rule) + + old := rule.DeepCopy() + rule.Spec.EndIpAddress = to.Ptr("1.2.3.5") + tc.PatchResourceAndWait(old, rule) + tc.Expect(rule.Status.EndIpAddress).To(Equal(to.Ptr("1.2.3.5"))) + + // The GET responses are coming back from the RP with no ARM ID - + // this seems invalid per the ARM spec. + // https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/resource-api-reference.md#get-resource + // tc.Expect(rule.Status.Id).ToNot(BeNil()) +} + +func MySQLFlexibleServer_AADAdmin_20231230_CRUD(tc *testcommon.KubePerTestContext, rg *resources.ResourceGroup, server *mysql.FlexibleServer) { + // Create a managed identity to serve as aad admin + configMapName := "my-configmap" + clientIDKey := "clientId" + tenantIDKey := "tenantId" + + // Create a managed identity to use as the AAD administrator + mi := &managedidentity.UserAssignedIdentity{ + ObjectMeta: tc.MakeObjectMeta("mi"), + Spec: managedidentity.UserAssignedIdentity_Spec{ + Location: tc.AzureRegion, + Owner: testcommon.AsOwner(rg), + OperatorSpec: &managedidentity.UserAssignedIdentityOperatorSpec{ + ConfigMaps: &managedidentity.UserAssignedIdentityOperatorConfigMaps{ + ClientId: &genruntime.ConfigMapDestination{ + Name: configMapName, + Key: clientIDKey, + }, + TenantId: &genruntime.ConfigMapDestination{ + Name: configMapName, + Key: tenantIDKey, + }, + }, + }, + }, + } + + tc.CreateResourceAndWait(mi) + + // Update the server to use the managed identity as its UMI + old := server.DeepCopy() + server.Spec.Identity = &mysql.MySQLServerIdentity{ + Type: to.Ptr(mysql.MySQLServerIdentity_Type_UserAssigned), + UserAssignedIdentities: []mysql.UserAssignedIdentityDetails{ + { + Reference: *tc.MakeReferenceFromResource(mi), + }, + }, + } + + tc.PatchResourceAndWait(old, server) + + aadAdmin := mysql.AdministratorProperties_AdministratorType_ActiveDirectory + admin := &mysql.FlexibleServersAdministrator{ + ObjectMeta: tc.MakeObjectMeta("aadadmin"), + Spec: mysql.FlexibleServersAdministrator_Spec{ + Owner: testcommon.AsOwner(server), + AdministratorType: &aadAdmin, + Login: &mi.Name, + TenantIdFromConfig: &genruntime.ConfigMapReference{ + Name: configMapName, + Key: tenantIDKey, + }, + SidFromConfig: &genruntime.ConfigMapReference{ + Name: configMapName, + Key: clientIDKey, + }, + IdentityResourceReference: tc.MakeReferenceFromResource(mi), + }, + } + + tc.CreateResourceAndWait(admin) + defer tc.DeleteResourceAndWait(admin) + + tc.Expect(admin.Status.Id).ToNot(BeNil()) +} + +func MySQLFlexibleServer_Configuration_20231230_CRUD(tc *testcommon.KubePerTestContext, flexibleServer *mysql.FlexibleServer) { + configuration := &mysql.FlexibleServersConfiguration{ + ObjectMeta: tc.MakeObjectMetaWithName("maxconnections"), + Spec: mysql.FlexibleServersConfiguration_Spec{ + AzureName: "max_connections", + Owner: testcommon.AsOwner(flexibleServer), + Source: to.Ptr(mysql.ConfigurationProperties_Source_UserOverride), + Value: to.Ptr("20"), + }, + } + tc.CreateResourceAndWait(configuration) + tc.Expect(configuration.Status.Id).ToNot(BeNil()) +} From 7df3470f9fad2e38b6a8f4c44680d49633264029 Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Tue, 11 Feb 2025 20:52:24 +0000 Subject: [PATCH 6/8] Update version released --- docs/hugo/content/reference/_index.md | 12 ++++++------ docs/hugo/content/reference/dbformysql/_index.md | 12 ++++++------ v2/azure-arm.yaml | 10 +++++----- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/hugo/content/reference/_index.md b/docs/hugo/content/reference/_index.md index d2e998501c..baececb9de 100644 --- a/docs/hugo/content/reference/_index.md +++ b/docs/hugo/content/reference/_index.md @@ -344,13 +344,13 @@ Development of these new resources is complete and they will be available in the | Resource | ARM Version | CRD Version | Supported From | Sample | |------------------------------|-------------|---------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| FlexibleServer | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml) | -| FlexibleServersAdministrator | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml) | -| FlexibleServersConfiguration | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml) | -| FlexibleServersDatabase | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml) | -| FlexibleServersFirewallRule | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml) | +| FlexibleServer | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml) | +| FlexibleServersAdministrator | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml) | +| FlexibleServersConfiguration | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml) | +| FlexibleServersDatabase | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml) | +| FlexibleServersFirewallRule | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml) | -### Released +### Latest Released Versions These resource(s) are the latest versions 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 | diff --git a/docs/hugo/content/reference/dbformysql/_index.md b/docs/hugo/content/reference/dbformysql/_index.md index 996ad64901..40e0345e8b 100644 --- a/docs/hugo/content/reference/dbformysql/_index.md +++ b/docs/hugo/content/reference/dbformysql/_index.md @@ -15,13 +15,13 @@ Development of these new resources is complete and they will be available in the | Resource | ARM Version | CRD Version | Supported From | Sample | |------------------------------|-------------|---------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| FlexibleServer | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml) | -| FlexibleServersAdministrator | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml) | -| FlexibleServersConfiguration | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml) | -| FlexibleServersDatabase | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml) | -| FlexibleServersFirewallRule | 2023-12-30 | v1api20231230 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml) | +| FlexibleServer | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserver.yaml) | +| FlexibleServersAdministrator | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversadministrator.yaml) | +| FlexibleServersConfiguration | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversconfiguration.yaml) | +| FlexibleServersDatabase | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversdatabase.yaml) | +| FlexibleServersFirewallRule | 2023-12-30 | v1api20231230 | v2.13.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/dbformysql/v1api20231230/v1api20231230_flexibleserversfirewallrule.yaml) | -### Released +### Latest Released Versions These resource(s) are the latest versions 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 | diff --git a/v2/azure-arm.yaml b/v2/azure-arm.yaml index d8dc45a8fd..910d738208 100644 --- a/v2/azure-arm.yaml +++ b/v2/azure-arm.yaml @@ -2209,7 +2209,7 @@ objectModelConfiguration: $armReference: true FlexibleServer: $export: true - $supportedFrom: v2.12.0 + $supportedFrom: v2.13.0 $azureGeneratedSecrets: - FullyQualifiedDomainName $generatedConfigs: @@ -2217,7 +2217,7 @@ objectModelConfiguration: AdministratorLogin: $.Status.AdministratorLogin FlexibleServers_Administrator: $exportAs: FlexibleServersAdministrator - $supportedFrom: v2.12.0 + $supportedFrom: v2.13.0 AdministratorProperties: IdentityResourceId: $armReference: true # TODO: Upstream to Swagger @@ -2227,13 +2227,13 @@ objectModelConfiguration: $importConfigMapMode: optional FlexibleServers_Configuration: $exportAs: FlexibleServersConfiguration - $supportedFrom: v2.12.0 + $supportedFrom: v2.13.0 FlexibleServers_Database: $exportAs: FlexibleServersDatabase - $supportedFrom: v2.12.0 + $supportedFrom: v2.13.0 FlexibleServers_FirewallRule: $exportAs: FlexibleServersFirewallRule - $supportedFrom: v2.12.0 + $supportedFrom: v2.13.0 Network: DelegatedSubnetResourceId: $armReference: true From cf91c6eb7f845fcb919e7ac69c4af0cea4ac6673 Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Tue, 11 Feb 2025 23:49:49 +0000 Subject: [PATCH 7/8] Add recordings --- ...ForMySQL_FlexibleServer_20231230_CRUD.yaml | 4624 +++++++++++++++++ ...sql_v1api20231230_CreationAndDeletion.yaml | 2603 ++++++++++ 2 files changed, 7227 insertions(+) create mode 100644 v2/internal/controllers/recordings/Test_DBForMySQL_FlexibleServer_20231230_CRUD.yaml create mode 100644 v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Dbformysql_v1api20231230_CreationAndDeletion.yaml diff --git a/v2/internal/controllers/recordings/Test_DBForMySQL_FlexibleServer_20231230_CRUD.yaml b/v2/internal/controllers/recordings/Test_DBForMySQL_FlexibleServer_20231230_CRUD.yaml new file mode 100644 index 0000000000..527a486f11 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_DBForMySQL_FlexibleServer_20231230_CRUD.yaml @@ -0,0 +1,4624 @@ +--- +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-qlxgsl","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - 22c89b0d98376a54b7a1a144ea2ecdf2b218aaec59b7552957b0997106e58520 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl?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-qlxgsl","name":"asotest-rg-qlxgsl","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: 0B98CE1FCAF24F0FB0AFBED07DDFCE87 Ref B: MAA201060513047 Ref C: 2025-02-11T21:10:48Z' + status: 201 Created + code: 201 + duration: 4.769665309s + - 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-qlxgsl?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-qlxgsl","name":"asotest-rg-qlxgsl","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: 96ED70D7C53341AE83B761FB790FD799 Ref B: MAA201060513047 Ref C: 2025-02-11T21:10:57Z' + status: 200 OK + code: 200 + duration: 404.379628ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 287 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-mysql-vihfnq","properties":{"administratorLogin":"myadmin","administratorLoginPassword":"{PASSWORD}","storage":{"storageSizeGB":128},"version":"8.0.21"},"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "287" + Content-Type: + - application/json + Test-Request-Hash: + - 75d38623d31cc11d2e741c97feb1aca1d37e9b114648a0180e6aed59d47080b6 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 88 + uncompressed: false + body: '{"operation":"UpsertServerManagementOperationV2","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/f91829a8-4d44-426d-8750-38a72ad84c13?api-version=2023-12-30&t=638749050680788249&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mYh-AzpLpEpug3kI6PcFcCUaVfHPTELLMW7tGWaP15HfiV0kMFXPur5NgAT0RM9LH-3HbNGCUk_qS4edynMJmUWInGT-7ilcZlgUrNU-bVJdzckmWWJXnEqjfyVCf7nm-5G2kKhbJl9h2ULbzGXaaXDgnThBoZYTZJoPtYqYnJa_2GR6e3gx5Cn0DeGDLbgYijKlAKxZqnopo-7vnyaEpYVY9iYL6V9vtsKkOrEYx0v_4cnZYa54-C2YwiTsrB_0ldhZvlbh94MnSxL0zUQfRsA2KFvMcC8fqAHp19LR2SsqVco6tji4oPYi791HmPlr-EmHWSA9jFGflRyxCFi9eg&h=gP-s5ECHm9u8PFTFf8JwLuY7HDov-UM4ehIOa5jugVY + Cache-Control: + - no-cache + Content-Length: + - "88" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/f91829a8-4d44-426d-8750-38a72ad84c13?api-version=2023-12-30&t=638749050680788249&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=FMxsRAZccv1XrtSbbxm-TXwf0qTIId6C0WuhhtXnTlDSdNd7nIGTldNn4IVe-XjDoAm7gs3q70nPLr_VOs6HHSBxVyxITilyaZu94J2fb38faPvrqwOj0AsAbglh0AY2s74-Wz7ol8FCHmD_TqCAMT8ohFZjuAm4qFKC6jafHpI-RqPq1CTyZiJaBrnxL8CRX_HvEM4AfCSlU0LZC1zRTIMaITJxC2Ie1UdpxtbGzXs9XXddNfgUITGwNC1m5MpRGLRi6F25jKJfeNc_7KvVhZZN1_uMv-fWzDpdSs0-mzE3st60bvhnig2QO2Hk-PSp28UH9nOvIIGV63slTlQPfA&h=KhMCz1wxmgNGeW5dkzbUWN-1yr3nfiXm7jdVPvMLV00 + Pragma: + - no-cache + Retry-After: + - "60" + 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: 678D039B33E944D5B0FD717A04F67A27 Ref B: MAA201060513047 Ref C: 2025-02-11T21:11:03Z' + status: 202 Accepted + code: 202 + duration: 4.330274939s + - 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/f91829a8-4d44-426d-8750-38a72ad84c13?api-version=2023-12-30&t=638749050680788249&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mYh-AzpLpEpug3kI6PcFcCUaVfHPTELLMW7tGWaP15HfiV0kMFXPur5NgAT0RM9LH-3HbNGCUk_qS4edynMJmUWInGT-7ilcZlgUrNU-bVJdzckmWWJXnEqjfyVCf7nm-5G2kKhbJl9h2ULbzGXaaXDgnThBoZYTZJoPtYqYnJa_2GR6e3gx5Cn0DeGDLbgYijKlAKxZqnopo-7vnyaEpYVY9iYL6V9vtsKkOrEYx0v_4cnZYa54-C2YwiTsrB_0ldhZvlbh94MnSxL0zUQfRsA2KFvMcC8fqAHp19LR2SsqVco6tji4oPYi791HmPlr-EmHWSA9jFGflRyxCFi9eg&h=gP-s5ECHm9u8PFTFf8JwLuY7HDov-UM4ehIOa5jugVY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"f91829a8-4d44-426d-8750-38a72ad84c13","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: CC497E6B6E244F4D8B563A2BC1D919F0 Ref B: MAA201060513047 Ref C: 2025-02-11T21:11:15Z' + status: 200 OK + code: 200 + duration: 1.01113031s + - 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/f91829a8-4d44-426d-8750-38a72ad84c13?api-version=2023-12-30&t=638749050680788249&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mYh-AzpLpEpug3kI6PcFcCUaVfHPTELLMW7tGWaP15HfiV0kMFXPur5NgAT0RM9LH-3HbNGCUk_qS4edynMJmUWInGT-7ilcZlgUrNU-bVJdzckmWWJXnEqjfyVCf7nm-5G2kKhbJl9h2ULbzGXaaXDgnThBoZYTZJoPtYqYnJa_2GR6e3gx5Cn0DeGDLbgYijKlAKxZqnopo-7vnyaEpYVY9iYL6V9vtsKkOrEYx0v_4cnZYa54-C2YwiTsrB_0ldhZvlbh94MnSxL0zUQfRsA2KFvMcC8fqAHp19LR2SsqVco6tji4oPYi791HmPlr-EmHWSA9jFGflRyxCFi9eg&h=gP-s5ECHm9u8PFTFf8JwLuY7HDov-UM4ehIOa5jugVY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"f91829a8-4d44-426d-8750-38a72ad84c13","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 6FA07FC24CBC433FB7E08A3ED970CCCB Ref B: MAA201060513047 Ref C: 2025-02-11T21:12:22Z' + status: 200 OK + code: 200 + duration: 781.980194ms + - 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/f91829a8-4d44-426d-8750-38a72ad84c13?api-version=2023-12-30&t=638749050680788249&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mYh-AzpLpEpug3kI6PcFcCUaVfHPTELLMW7tGWaP15HfiV0kMFXPur5NgAT0RM9LH-3HbNGCUk_qS4edynMJmUWInGT-7ilcZlgUrNU-bVJdzckmWWJXnEqjfyVCf7nm-5G2kKhbJl9h2ULbzGXaaXDgnThBoZYTZJoPtYqYnJa_2GR6e3gx5Cn0DeGDLbgYijKlAKxZqnopo-7vnyaEpYVY9iYL6V9vtsKkOrEYx0v_4cnZYa54-C2YwiTsrB_0ldhZvlbh94MnSxL0zUQfRsA2KFvMcC8fqAHp19LR2SsqVco6tji4oPYi791HmPlr-EmHWSA9jFGflRyxCFi9eg&h=gP-s5ECHm9u8PFTFf8JwLuY7HDov-UM4ehIOa5jugVY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"f91829a8-4d44-426d-8750-38a72ad84c13","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: F556D57B397D453CAABB5F057951FC73 Ref B: MAA201060513047 Ref C: 2025-02-11T21:13:29Z' + status: 200 OK + code: 200 + duration: 778.995786ms + - 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/f91829a8-4d44-426d-8750-38a72ad84c13?api-version=2023-12-30&t=638749050680788249&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mYh-AzpLpEpug3kI6PcFcCUaVfHPTELLMW7tGWaP15HfiV0kMFXPur5NgAT0RM9LH-3HbNGCUk_qS4edynMJmUWInGT-7ilcZlgUrNU-bVJdzckmWWJXnEqjfyVCf7nm-5G2kKhbJl9h2ULbzGXaaXDgnThBoZYTZJoPtYqYnJa_2GR6e3gx5Cn0DeGDLbgYijKlAKxZqnopo-7vnyaEpYVY9iYL6V9vtsKkOrEYx0v_4cnZYa54-C2YwiTsrB_0ldhZvlbh94MnSxL0zUQfRsA2KFvMcC8fqAHp19LR2SsqVco6tji4oPYi791HmPlr-EmHWSA9jFGflRyxCFi9eg&h=gP-s5ECHm9u8PFTFf8JwLuY7HDov-UM4ehIOa5jugVY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"f91829a8-4d44-426d-8750-38a72ad84c13","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 13FE0B4C9955473E87A99217F31082FC Ref B: MAA201060513047 Ref C: 2025-02-11T21:14:36Z' + status: 200 OK + code: 200 + duration: 809.175476ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1148 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myadmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotest-mysql-vihfnq.mysql.database.azure.com","availabilityZone":"","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":7,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T21:21:22.0562154+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"West US 2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq","name":"asotest-mysql-vihfnq","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1148" + 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: 6BDD5B4ED8BE4549AA6A788B2A5666BA Ref B: MAA201060513047 Ref C: 2025-02-11T21:14:38Z' + status: 200 OK + code: 200 + duration: 1.052292826s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1148 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myadmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotest-mysql-vihfnq.mysql.database.azure.com","availabilityZone":"","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":7,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T21:21:22.0562154+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"West US 2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq","name":"asotest-mysql-vihfnq","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1148" + 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: 5EB2EE4A06E84726A5218E29953BD342 Ref B: MAA201060513047 Ref C: 2025-02-11T21:14:40Z' + status: 200 OK + code: 200 + duration: 970.500918ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 354 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-mysql-vihfnq","properties":{"administratorLogin":"myadmin","administratorLoginPassword":"{PASSWORD}","backup":{"backupRetentionDays":5,"geoRedundantBackup":"Disabled"},"storage":{"storageSizeGB":128},"version":"8.0.21"},"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "354" + Content-Type: + - application/json + Test-Request-Hash: + - 15efb8c7b2dd3c3f9ec4304ba6ec3b2371d2e4e0ad2fe3c464bcedd44308aafd + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 88 + uncompressed: false + body: '{"operation":"UpsertServerManagementOperationV2","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/3b1ca9df-b142-4c8e-8c60-800a4cc5bcd7?api-version=2023-12-30&t=638749052873144335&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=nVAGdoe5b5XJUsA_iH0OCb9d8VmGhazcsSNNclDNUrLrHPVRfI5-gPQb0A9ypOKyyd7ZkjeFFjfnqbTMkbBckuzojyKjA1GzyWvPt_PdEqNx6p3mrSiVeNUg13HaEpaTYII-tZ0P6TcRWzFIvWIQRLkzfx_wcVLYufIHW7fZAACOr-8y7zbRmqCXS6-kvYzrLw1ixNh35AbcJMGZUVYhdY9Dc0IoOSR_rjWzy73QOkQ0zj-3PHKv208dxZz-186-sl7jkzu1tVUibVlhNU-2F0KV71fA0TIwzRS7I0sZuuIQCNGZW_zJ1KC8O5LYghkO2kvd-NuBPtFuZ2sddseKIw&h=dJWXPeJ2k532-XuD6G1tuapFCcQqMQhixLs_1juLDOI + Cache-Control: + - no-cache + Content-Length: + - "88" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/3b1ca9df-b142-4c8e-8c60-800a4cc5bcd7?api-version=2023-12-30&t=638749052873144335&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=ZVPxnDCKLyfMWI9FiYmI_fDpB4eh0jDOjbfkLzsun_MJcwqq2rjXHqmmL0GY07rVznqeuKj9BSpsar9Ld2gZv5uCE9NRsuL1JP-tf9hLVl0iABeKZG7oan-sJrBcofB7JDv4kzcb5rvmTz_n2qQIvlVAK8VI5TMGjTm_yVWa0qSVPc694vjZtqSM-AB_o9xXf01Ab_ZBvHxqsO_mYNEVZRVMy472hrzgrroGZ_oRfbNUyvbwzxUxn1F9AnDoYlaPnAG1TmZUgmyBY1UYIj5AVdgAX2qr5q1PJLHlZ6J7-2iVPFLY7tV9_5lDmthiFZO9MY_M2Y_iaoZZKC4bTf_9qg&h=uDdxlJsINHUaqS_goFrv00t0r_Vbj7T-5QhMnlHjGNk + Pragma: + - no-cache + Retry-After: + - "60" + 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: C7877020DC6E459FA03685BA8483C76B Ref B: MAA201060513047 Ref C: 2025-02-11T21:14:45Z' + status: 202 Accepted + code: 202 + duration: 1.601817936s + - 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: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/3b1ca9df-b142-4c8e-8c60-800a4cc5bcd7?api-version=2023-12-30&t=638749052873144335&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=nVAGdoe5b5XJUsA_iH0OCb9d8VmGhazcsSNNclDNUrLrHPVRfI5-gPQb0A9ypOKyyd7ZkjeFFjfnqbTMkbBckuzojyKjA1GzyWvPt_PdEqNx6p3mrSiVeNUg13HaEpaTYII-tZ0P6TcRWzFIvWIQRLkzfx_wcVLYufIHW7fZAACOr-8y7zbRmqCXS6-kvYzrLw1ixNh35AbcJMGZUVYhdY9Dc0IoOSR_rjWzy73QOkQ0zj-3PHKv208dxZz-186-sl7jkzu1tVUibVlhNU-2F0KV71fA0TIwzRS7I0sZuuIQCNGZW_zJ1KC8O5LYghkO2kvd-NuBPtFuZ2sddseKIw&h=dJWXPeJ2k532-XuD6G1tuapFCcQqMQhixLs_1juLDOI + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"3b1ca9df-b142-4c8e-8c60-800a4cc5bcd7","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 53862BB39C87448F93283F898D8C7D0F Ref B: MAA201060513047 Ref C: 2025-02-11T21:14:50Z' + status: 200 OK + code: 200 + duration: 728.754821ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/3b1ca9df-b142-4c8e-8c60-800a4cc5bcd7?api-version=2023-12-30&t=638749052873144335&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=nVAGdoe5b5XJUsA_iH0OCb9d8VmGhazcsSNNclDNUrLrHPVRfI5-gPQb0A9ypOKyyd7ZkjeFFjfnqbTMkbBckuzojyKjA1GzyWvPt_PdEqNx6p3mrSiVeNUg13HaEpaTYII-tZ0P6TcRWzFIvWIQRLkzfx_wcVLYufIHW7fZAACOr-8y7zbRmqCXS6-kvYzrLw1ixNh35AbcJMGZUVYhdY9Dc0IoOSR_rjWzy73QOkQ0zj-3PHKv208dxZz-186-sl7jkzu1tVUibVlhNU-2F0KV71fA0TIwzRS7I0sZuuIQCNGZW_zJ1KC8O5LYghkO2kvd-NuBPtFuZ2sddseKIw&h=dJWXPeJ2k532-XuD6G1tuapFCcQqMQhixLs_1juLDOI + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"3b1ca9df-b142-4c8e-8c60-800a4cc5bcd7","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: BED23CA3FDCD49BEA990011027F1E7E0 Ref B: MAA201060513047 Ref C: 2025-02-11T21:15:57Z' + status: 200 OK + code: 200 + duration: 846.343465ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1148 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myadmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotest-mysql-vihfnq.mysql.database.azure.com","availabilityZone":"","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":5,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T21:13:44.3869184+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"West US 2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq","name":"asotest-mysql-vihfnq","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1148" + 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: 0D8FE956821641A99A4BCED573BAE695 Ref B: MAA201060513047 Ref C: 2025-02-11T21:15:59Z' + status: 200 OK + code: 200 + duration: 1.461973044s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1148 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myadmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotest-mysql-vihfnq.mysql.database.azure.com","availabilityZone":"","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":5,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T21:13:44.3869184+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"West US 2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq","name":"asotest-mysql-vihfnq","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1148" + 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: 8EFF9D95B71E4C5E81AEC5F11F477A69 Ref B: MAA201060513047 Ref C: 2025-02-11T21:16:02Z' + status: 200 OK + code: 200 + duration: 1.084572455s + - id: 14 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 49 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-mi-knncjg"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "49" + Content-Type: + - application/json + Test-Request-Hash: + - c0d12fad8a638a65f051d68a5772fb63f49e10f63d8fb5860ee71baea760b17f + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg?api-version=2018-11-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 454 + uncompressed: false + body: '{"location":"westus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg","name":"asotest-mi-knncjg","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"1d53531e-6df2-4033-a1de-8e86a46a166a","clientId":"6f2b0120-1028-4816-8bb3-b904314da44f"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "454" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg + 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: 4A31560F94F14BF1A63E822A3CAC4E20 Ref B: MAA201060513047 Ref C: 2025-02-11T21:16:08Z' + status: 201 Created + code: 201 + duration: 3.307831852s + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 49 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-mi-knncjg"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "49" + Content-Type: + - application/json + Test-Request-Hash: + - c0d12fad8a638a65f051d68a5772fb63f49e10f63d8fb5860ee71baea760b17f + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg?api-version=2018-11-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 454 + uncompressed: false + body: '{"location":"westus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg","name":"asotest-mi-knncjg","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"1d53531e-6df2-4033-a1de-8e86a46a166a","clientId":"6f2b0120-1028-4816-8bb3-b904314da44f"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "454" + 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: 7A250077300942BAAC783CF1EEE269EF Ref B: MAA201060513047 Ref C: 2025-02-11T21:16:16Z' + status: 200 OK + code: 200 + duration: 844.05577ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg?api-version=2018-11-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 454 + uncompressed: false + body: '{"location":"westus2","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg","name":"asotest-mi-knncjg","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"1d53531e-6df2-4033-a1de-8e86a46a166a","clientId":"6f2b0120-1028-4816-8bb3-b904314da44f"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "454" + 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: CFFA773B55CC4797B8100A358411E1B7 Ref B: MAA201060513047 Ref C: 2025-02-11T21:16:18Z' + status: 200 OK + code: 200 + duration: 1.024779618s + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 583 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg":{}}},"location":"westus2","name":"asotest-mysql-vihfnq","properties":{"administratorLogin":"myadmin","administratorLoginPassword":"{PASSWORD}","backup":{"backupRetentionDays":5,"geoRedundantBackup":"Disabled"},"storage":{"storageSizeGB":128},"version":"8.0.21"},"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "583" + Content-Type: + - application/json + Test-Request-Hash: + - 1560cb5b917f2806b61c5fb1bd588b7cacdc5bcf98ac8588b4854b502bf5f269 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 88 + uncompressed: false + body: '{"operation":"UpsertServerManagementOperationV2","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/a063dbf9-5fb3-4899-81c4-c01e0d671c7a?api-version=2023-12-30&t=638749053869377313&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=sT7S_BR8AmCVNjVSDz_I6EzvG-5QibzOfVr2BuwH-Q2Dv-YCw17CbZ49yYC1hTl_S_bZYreOCYWIPKy6eflc0UXcLOYpaDVC_bC1H0a_i0QZN5jloE4rl_N1qz9fjKCXQJQCWv9IDPHtpMdtnR2Ybh--soa_0H2jueleYPNecdNB5QlWPS8WALyLPfQlmSuD3h25EOd5cntLFtgiwDOOQB7RtU5M6HLLMD-gc4i2ufegmr81KBEA35eKlE6pn6N9-OZNPjhUX4E15vPAj5wwlj9pimKGcvI9vCsY5y4E2RAwHEsKKdi1UFN0JWtPFFmisA3Ls2_JNEX4r9F60f4bxA&h=ftp94lqY1o1M1TSok-e4CebulPoFwExRlybqzOv3G8Q + Cache-Control: + - no-cache + Content-Length: + - "88" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/a063dbf9-5fb3-4899-81c4-c01e0d671c7a?api-version=2023-12-30&t=638749053869377313&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=WIoUIT93H0yXFkGUf24uwv2phlQdZ_R1nJhBm7zGqNm3QMurr08VFknnHHZVBIldqTNnwL4t4UUPnnzmN0EJtjJ08GWoicht0cwQyRklm4i90WPxjG6_nDpevrMIG_0_eHOK38D4wbmOXh6xCVorDNMkjibLt6vNZXDG5ru4CNtJ2GewC09haarav9aCYgKDE0PTXq8K9tpqPwbeLI1Gudu04D4X3aA8XaNz7G8L5nu8MVQ7vA_ahmvgWaECTqoZFIT6MBzw7TPvjcFqI6JM02SkOdBybOmfTKy152MTmap8aexglRMHFaawIuS42FP6m7OoILz9TW92WW7BxdHvHA&h=1EeU9fHy-MJ4g0donOupIDjndhQOeB0fgXCroIqDU8M + Pragma: + - no-cache + Retry-After: + - "60" + 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: E4BF27D2C2D64F7F9E4C0A0921B47933 Ref B: MAA201060513047 Ref C: 2025-02-11T21:16:23Z' + status: 202 Accepted + code: 202 + duration: 3.196089084s + - 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/a063dbf9-5fb3-4899-81c4-c01e0d671c7a?api-version=2023-12-30&t=638749053869377313&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=sT7S_BR8AmCVNjVSDz_I6EzvG-5QibzOfVr2BuwH-Q2Dv-YCw17CbZ49yYC1hTl_S_bZYreOCYWIPKy6eflc0UXcLOYpaDVC_bC1H0a_i0QZN5jloE4rl_N1qz9fjKCXQJQCWv9IDPHtpMdtnR2Ybh--soa_0H2jueleYPNecdNB5QlWPS8WALyLPfQlmSuD3h25EOd5cntLFtgiwDOOQB7RtU5M6HLLMD-gc4i2ufegmr81KBEA35eKlE6pn6N9-OZNPjhUX4E15vPAj5wwlj9pimKGcvI9vCsY5y4E2RAwHEsKKdi1UFN0JWtPFFmisA3Ls2_JNEX4r9F60f4bxA&h=ftp94lqY1o1M1TSok-e4CebulPoFwExRlybqzOv3G8Q + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"a063dbf9-5fb3-4899-81c4-c01e0d671c7a","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 65D3291524774413BB964500286FEE98 Ref B: MAA201060513047 Ref C: 2025-02-11T21:16:31Z' + status: 200 OK + code: 200 + duration: 734.751842ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/a063dbf9-5fb3-4899-81c4-c01e0d671c7a?api-version=2023-12-30&t=638749053869377313&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=sT7S_BR8AmCVNjVSDz_I6EzvG-5QibzOfVr2BuwH-Q2Dv-YCw17CbZ49yYC1hTl_S_bZYreOCYWIPKy6eflc0UXcLOYpaDVC_bC1H0a_i0QZN5jloE4rl_N1qz9fjKCXQJQCWv9IDPHtpMdtnR2Ybh--soa_0H2jueleYPNecdNB5QlWPS8WALyLPfQlmSuD3h25EOd5cntLFtgiwDOOQB7RtU5M6HLLMD-gc4i2ufegmr81KBEA35eKlE6pn6N9-OZNPjhUX4E15vPAj5wwlj9pimKGcvI9vCsY5y4E2RAwHEsKKdi1UFN0JWtPFFmisA3Ls2_JNEX4r9F60f4bxA&h=ftp94lqY1o1M1TSok-e4CebulPoFwExRlybqzOv3G8Q + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"a063dbf9-5fb3-4899-81c4-c01e0d671c7a","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 4583C311B24C4F3C911575D0F8F491F3 Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:38Z' + status: 200 OK + code: 200 + duration: 749.570092ms + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1582 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"identity":{"userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg":{"principalId":"1d53531e-6df2-4033-a1de-8e86a46a166a","tenantId":"00000000-0000-0000-0000-000000000000"}},"principalId":"00000000-0000-0000-0000-000000000000","type":"UserAssigned","tenantId":"00000000-0000-0000-0000-000000000000"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myadmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotest-mysql-vihfnq.mysql.database.azure.com","availabilityZone":"","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":5,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T21:13:44.3869184+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"West US 2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq","name":"asotest-mysql-vihfnq","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1582" + 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: 26E3C02A9E294D3A974FEEC56BE1F52B Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:40Z' + status: 200 OK + code: 200 + duration: 1.119038451s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1582 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"identity":{"userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg":{"principalId":"1d53531e-6df2-4033-a1de-8e86a46a166a","tenantId":"00000000-0000-0000-0000-000000000000"}},"principalId":"00000000-0000-0000-0000-000000000000","type":"UserAssigned","tenantId":"00000000-0000-0000-0000-000000000000"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myadmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotest-mysql-vihfnq.mysql.database.azure.com","availabilityZone":"","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":5,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T21:13:44.3869184+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"West US 2","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq","name":"asotest-mysql-vihfnq","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1582" + 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: 8664962EC6A041D49FDA5B7D45A2BBB8 Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:42Z' + status: 200 OK + code: 200 + duration: 919.063166ms + - id: 22 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 387 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"ActiveDirectory","properties":{"administratorType":"ActiveDirectory","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg","login":"asotest-mi-knncjg","sid":"6f2b0120-1028-4816-8bb3-b904314da44f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "387" + Content-Type: + - application/json + Test-Request-Hash: + - 48dac6411bd4e9aa5992803164b88118a774c2c9b385a9a4d05ab46494006337 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"operation":"UpsertActiveDirectoryAdministratorManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/03749a2c-9a0d-4d70-b453-7db8f06bbc98?api-version=2023-12-30&t=638749054679148906&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=kgR_BgJOESkWwXehBkMI95YU3Zax-z7CJ1aeojvSMvV7E8pCzRFXR4urCd_io2tL8q3T1lRhCw1s4Td2PGKnRPBJoCPEo0Hb7G1lQ9c_Pie7IcZo_X4Svhv0r8_3kClfTO08tu8lO-cExUHJJeHSijI0nMMEzN2F-4UDo64BSTohlT9uLXXwrCvbMPntjK5zWzwftsH5cNEmZtzudRTQtJ-KFVbtdWTOiE8TNuPcDJLOJvQzEbQhVkHX1MjgvCc3hm--ihIdUjDPjFmWlNH_7jYnXcs3hP-hwo08uAbzt0Wp5OHHgECDQFesfPHT1GcG3C8IDzec4rleS_IgTW1dLQ&h=5_VW7RydoRKZRZpUpx_C1ufnFevQ2GkKDY3PLsAPY3s + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/03749a2c-9a0d-4d70-b453-7db8f06bbc98?api-version=2023-12-30&t=638749054679305411&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=uB_IJKbSF5zSwW7CYUeEXJSRnDED9RA20WkerS5DoPOBCzr0vljLVpzY3DZg1Y_LxkZXHkHKbaDOfvfvuVBmSo3Y5qqaEhHMWmRhzIk_626T_lr3Loj9M9XZl_gHxI8lCIw1ZZUqdnzuIkOCfcpr7gdC-YpCyJf9sUwdHI6OvOzrRQJRViXMYfDXlxwvSik7KiAt3rockVEh9NpmZJ2Shr8OmGNkpTAk_tNQyy3OdfxtG9fdZ7iYU38mqG8zLXPe8CeqHp7cMjONLP3iRNvyHUND8v_5F5v1TYpNRPzm2cQ3IgSpfnDT1yZksiYY0W-N0zjwLQUiSzFQkurcspWiCQ&h=PU4jde_bygWYCUhQwokoCRo9W-BGT_iraLFsdMSYmW0 + Pragma: + - no-cache + Retry-After: + - "60" + 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: 97F94AF4E86847B78F09021215822019 Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:46Z' + status: 202 Accepted + code: 202 + duration: 1.589855171s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/03749a2c-9a0d-4d70-b453-7db8f06bbc98?api-version=2023-12-30&t=638749054679148906&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=kgR_BgJOESkWwXehBkMI95YU3Zax-z7CJ1aeojvSMvV7E8pCzRFXR4urCd_io2tL8q3T1lRhCw1s4Td2PGKnRPBJoCPEo0Hb7G1lQ9c_Pie7IcZo_X4Svhv0r8_3kClfTO08tu8lO-cExUHJJeHSijI0nMMEzN2F-4UDo64BSTohlT9uLXXwrCvbMPntjK5zWzwftsH5cNEmZtzudRTQtJ-KFVbtdWTOiE8TNuPcDJLOJvQzEbQhVkHX1MjgvCc3hm--ihIdUjDPjFmWlNH_7jYnXcs3hP-hwo08uAbzt0Wp5OHHgECDQFesfPHT1GcG3C8IDzec4rleS_IgTW1dLQ&h=5_VW7RydoRKZRZpUpx_C1ufnFevQ2GkKDY3PLsAPY3s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"03749a2c-9a0d-4d70-b453-7db8f06bbc98","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: FDB274AC702D48E3B6B78C13569D26D8 Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:52Z' + status: 200 OK + code: 200 + duration: 715.159658ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 639 + uncompressed: false + body: '{"properties":{"administratorType":"ActiveDirectory","login":"asotest-mi-knncjg","sid":"6f2b0120-1028-4816-8bb3-b904314da44f","tenantId":"00000000-0000-0000-0000-000000000000","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory","name":"ActiveDirectory","type":"Microsoft.DBforMySQL/flexibleServers/administrators"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "639" + 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: 5F4E61E0FF3545609BC2790C1BCEF0EA Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:53Z' + status: 200 OK + code: 200 + duration: 1.140304228s + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 246 + uncompressed: false + body: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq'' under resource group ''asotest-rg-qlxgsl'' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "246" + 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: 7FB0BDCD64A74B7F844FC2A317CB91BC Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:56Z' + status: 404 Not Found + code: 404 + duration: 459.446474ms + - id: 26 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 387 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"ActiveDirectory","properties":{"administratorType":"ActiveDirectory","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg","login":"asotest-mi-knncjg","sid":"6f2b0120-1028-4816-8bb3-b904314da44f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "387" + Content-Type: + - application/json + Test-Request-Hash: + - 48dac6411bd4e9aa5992803164b88118a774c2c9b385a9a4d05ab46494006337 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"operation":"UpsertActiveDirectoryAdministratorManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/bb757da5-e2aa-485a-b424-4ff105d9b073?api-version=2023-12-30&t=638749054797348023&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=UnKxCGpwKd7Jg2dZXQUFA-SX9l-M6zUWRiUOicxlIP9FM3tZuvhDnzMY6RIelRdzq39sqpoVLxWV90NSwJgMpHJvrWr7vNRjirIoHDHr71Gn-ewSA-uxV46IakT5U3iqcWQHPwBmT1DCu1sybfZH7XZsUb3W2j5A0Hh1hZTLYLFLm2Z4t5WJbwRqdtMUguy_bfxrXrw6Cr_ul-qxXH2eCMeO67UreBzqj2mKYTA9deVoBcVXeWdiVLz3aRqckWm5SgZQbwNburc2mwyt5frGBENESVK8QA_0GmUjlbBFdJFkIWLWaYqQD5qGDZWvgJj92clqVgbL4xSXDZJk_w0QBw&h=YxOrc7HX-gpjG9QgJCh2TOUsISilXAXDnZXqFQSBkP4 + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/bb757da5-e2aa-485a-b424-4ff105d9b073?api-version=2023-12-30&t=638749054797504544&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tkwCHThWP2sdmx8QktfjMl0gUCuvuBqq00_KA13gUJMXfYq8YDzPpYCk47hYDBJmxZ8HBFSPVLF_URgGjM6K8BkdGYpSm7tuyS8DIEyMOBdkqwMaqlZujUVwpfrtZMauIkFA50JlN2ijTyC088ykdlGdgeYAkjYGUNFVyV3W0wNI4Rfk04CJRyTJ0ocsKY7agprMaKVVddoMo4Z3QNeFnOuH0YcxIZlDfVxj-pkEm2o-pjpsABeaRz_p_K5kXcxetr7r2FXYTgsGjaQKiNU11WFvJSKu8Q9VO00WlpLJ4uQCmFQORfMGu5XxAWp1Y8DpaLZbIFoAWXEHt1cGif8rdg&h=OFveINoKdlMRfxokJPL6SDhD2v7HlkGp_tlaBo3nM6c + Pragma: + - no-cache + Retry-After: + - "60" + 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: B1F15A3A760A41758FC07D5AE84A951D Ref B: MAA201060513047 Ref C: 2025-02-11T21:17:58Z' + status: 202 Accepted + code: 202 + duration: 1.327706767s + - id: 27 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/bb757da5-e2aa-485a-b424-4ff105d9b073?api-version=2023-12-30&t=638749054797348023&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=UnKxCGpwKd7Jg2dZXQUFA-SX9l-M6zUWRiUOicxlIP9FM3tZuvhDnzMY6RIelRdzq39sqpoVLxWV90NSwJgMpHJvrWr7vNRjirIoHDHr71Gn-ewSA-uxV46IakT5U3iqcWQHPwBmT1DCu1sybfZH7XZsUb3W2j5A0Hh1hZTLYLFLm2Z4t5WJbwRqdtMUguy_bfxrXrw6Cr_ul-qxXH2eCMeO67UreBzqj2mKYTA9deVoBcVXeWdiVLz3aRqckWm5SgZQbwNburc2mwyt5frGBENESVK8QA_0GmUjlbBFdJFkIWLWaYqQD5qGDZWvgJj92clqVgbL4xSXDZJk_w0QBw&h=YxOrc7HX-gpjG9QgJCh2TOUsISilXAXDnZXqFQSBkP4 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"bb757da5-e2aa-485a-b424-4ff105d9b073","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 9219C7AB6AC34C50AEFEA7210ABF1102 Ref B: MAA201060513047 Ref C: 2025-02-11T21:18:02Z' + status: 200 OK + code: 200 + duration: 376.677316ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 639 + uncompressed: false + body: '{"properties":{"administratorType":"ActiveDirectory","login":"asotest-mi-knncjg","sid":"6f2b0120-1028-4816-8bb3-b904314da44f","tenantId":"00000000-0000-0000-0000-000000000000","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory","name":"ActiveDirectory","type":"Microsoft.DBforMySQL/flexibleServers/administrators"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "639" + 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: 221975C44163476FB3310E4BD7DB5ED7 Ref B: MAA201060513047 Ref C: 2025-02-11T21:18:03Z' + status: 200 OK + code: 200 + duration: 1.009973886s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 639 + uncompressed: false + body: '{"properties":{"administratorType":"ActiveDirectory","login":"asotest-mi-knncjg","sid":"6f2b0120-1028-4816-8bb3-b904314da44f","tenantId":"00000000-0000-0000-0000-000000000000","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory","name":"ActiveDirectory","type":"Microsoft.DBforMySQL/flexibleServers/administrators"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "639" + 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: D76C39C7A0294A21BFE4F7157DA02906 Ref B: MAA201060513047 Ref C: 2025-02-11T21:18:05Z' + status: 200 OK + code: 200 + duration: 1.052652836s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/administrators/ActiveDirectory?api-version=2023-12-30 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 106 + uncompressed: false + body: '{"operation":"DropActiveDirectoryAdministratorManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/b95b7401-e098-406e-a93c-6f8da183635f?api-version=2023-12-30&t=638749054934468587&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=ulfuwfmn6HZU1K2-25H-mWT267VenID-a91DwtDrzFomlbi1t13IjkeFH6aXINr9Gt7yWEhDfgbCWR1GggOHhaPBaFzh738iV8Epw7XNHL33zkfOlR0eQY_Cbk63bptOlW3A_XEY3vh9L1pUWeZd7htn9dYKyQMMVR_n6kpYk_pWjY1skjcDMCn4sgw9Qbzi9yE3nINs51TSa0ezw7JK5_ZaCngfhUJnaw658hRA9LlB8R-9WXNn9f3guWaiQF8SdaRcFbe2V2rWcMBdp4utxZiuH-vakAwukjsOmnBJGIilwBdi2IL7X9WEpLsJyTYB0SCUEHZA5bzZP6cDL3B6ag&h=yc3ytU6m9ui3jw-Zviht2Rzp88BrocYEsXIbDp1EUBg + Cache-Control: + - no-cache + Content-Length: + - "106" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/b95b7401-e098-406e-a93c-6f8da183635f?api-version=2023-12-30&t=638749054934624845&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=urzlPew3m9mo5Y7CDKFszku41k5Y_c-BRnYWgkZdG-6UoUNeiE4m_lTmqpVMNB7kdy-QYRQHAbxXNNh7hHghgDMEWvX4knsh3TR7MMrqcmfjHWoJcilCtuedmO5QGxlKk8jL2Rmxjg_pgFlgEmSKtKlsPV87KzDQKXQAKToauUUmVs9owp_BCNsFyTkWfWHGqI_uxYrhzWrnGZYaG2VS9fpFF-lzC549_6GTKcEUt6-7Y50xS4lZhOt7GVcKoh8F98Ec8gERHYUrytPQxjtnpWfw_LYzLuKeLhs_XlUu8kDGxLLm3iYFDFEOOm88tvEmWU1YmjR9iLmFUCQTyJzwWQ&h=jPBfeDjpvKIhg9U0KhehRyRu_1U8SGIHKuxlhSkjYms + Pragma: + - no-cache + Retry-After: + - "60" + 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: 50BC424C45714C6E87EFB492D21C875C Ref B: MAA201060513047 Ref C: 2025-02-11T21:18:12Z' + status: 202 Accepted + code: 202 + duration: 1.059718806s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/b95b7401-e098-406e-a93c-6f8da183635f?api-version=2023-12-30&t=638749054934468587&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=ulfuwfmn6HZU1K2-25H-mWT267VenID-a91DwtDrzFomlbi1t13IjkeFH6aXINr9Gt7yWEhDfgbCWR1GggOHhaPBaFzh738iV8Epw7XNHL33zkfOlR0eQY_Cbk63bptOlW3A_XEY3vh9L1pUWeZd7htn9dYKyQMMVR_n6kpYk_pWjY1skjcDMCn4sgw9Qbzi9yE3nINs51TSa0ezw7JK5_ZaCngfhUJnaw658hRA9LlB8R-9WXNn9f3guWaiQF8SdaRcFbe2V2rWcMBdp4utxZiuH-vakAwukjsOmnBJGIilwBdi2IL7X9WEpLsJyTYB0SCUEHZA5bzZP6cDL3B6ag&h=yc3ytU6m9ui3jw-Zviht2Rzp88BrocYEsXIbDp1EUBg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"b95b7401-e098-406e-a93c-6f8da183635f","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 7FF8E36CC0564E52BD8EFD3FD7DE6906 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:20Z' + status: 200 OK + code: 200 + duration: 841.634329ms + - id: 32 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 99 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"asotest-fwrule-jhwmoj","properties":{"endIpAddress":"1.2.3.4","startIpAddress":"1.2.3.4"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "99" + Content-Type: + - application/json + Test-Request-Hash: + - 91c3ec100e33cca2b805f258b3dfbaefe518133d6f0de1bda9a1723b020d2127 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 99 + uncompressed: false + body: '{"operation":"UpsertServerFirewallRulesManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/bedb4885-eda8-4c76-9aa1-26d66f54bbdc?api-version=2023-12-30&t=638749055656163803&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=lMwQHYUmeoa32nITJ3k2NKjugZ_riRAS7p-SKPj9Yog5UlfaodNVJTnLSht5ke2thfPe843e_Ccl7krld5PUFo3n5z9tk5bL_ZQ9MeOJe-p2vkG-j1Olxf-wwPi1WRPKf0T6C8FA1xEkRmH2aMTkvgcfRAgo45o2PyMy_13MZntzYSIn-9GQ3XpTO5JZETWWYts5K1JTwSgouKNL_8MGeXFQu3BqlGGsHcXOELPiFnxFsq_b0wp6j2E5pMVqXKm8qCqeBWAB1cl88kLAHampDx9B5fogbIMYyrCaP0RCUEyUSVtRO7eDAGBGNguGTSMcIC3ex3e3o2vIo_jYIEfZMA&h=7C3n46E7JQ6xo7g5SaF2r-ngYc85Vj02_CmS1vJBUrA + Cache-Control: + - no-cache + Content-Length: + - "99" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/bedb4885-eda8-4c76-9aa1-26d66f54bbdc?api-version=2023-12-30&t=638749055656320151&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=uWjLH3mlt_XpzVyAsHP3__UGo5Lq3MyWYDIki2HXGiFUR8k8FljFM4HBkNbj7fXNFRVoYpBoz9Cd15kR8BNXmZzvu7ZLJgfoXy3SymGu_fVP2Yp638lW19L1pEnyQpicgJ7u6cLUmJ0ywpqJZtTgE186k48ZTC-peuGapqjs7926uRpciBcGYpSX-bJxEiqcD84YFMMa3y2VIxHWVsECxjC5kRbaTpoYd22NLqa3A-7nlPUqy8Wss0bqQvoK2LSfvD9kmu18_Rux7nnF-d7mwZib5ALD4-pqQEhH2oR0Q8bVgh87oIOD3PxIGaaVyS8b8K4U3jZK6hmrir2G5NnD-w&h=BKs-kcaZyKKx8A5OmZvDIbM4_dYs6JZs-ZwGdXWbyls + Pragma: + - no-cache + Retry-After: + - "60" + 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: 9096CF1A17734BBBB5B1C4620F1C3AC3 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:24Z' + status: 202 Accepted + code: 202 + duration: 1.479611008s + - id: 33 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 61 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"asotestdbnmutal","properties":{"charset":"utf8mb4"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "61" + Content-Type: + - application/json + Test-Request-Hash: + - cf54513db3afb7ac01fe8c2d167c526b437a4af16848068fd5b2b3954b5e617b + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 94 + uncompressed: false + body: '{"operation":"UpsertServerDatabaseManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=GfCHIxxgTx1r-PYROJf8SQ8jUTa42J1hNSU8QZVfncoKhIoulFonMe-AZjE-kLHC9KZngmVBjCVI2ZFLAanJNeAJik0sfTut_o138-ubHBtsTCZ4utwyq1kzLcsDwXqw9JDPXRxFuCBo8xWjSLtzv5lw3buGPrMd4Dt2GuS6eyNaOFToiaJZs74pCkwMhOHrny42mf5zWavEXJ80pl9BvcKb-_vc6Kk2CVoHBDnWGHDfmLxs2Akq7kF5H_kGxg4Mx77f3SnGA7Wi4adhLKDorrzHXnzlVdJX8QPOeESMFbOpHEcCUdVVut3dFiqXviFwBt-i_kbR2ZNzeCOUN83BSg&h=u5Zup8fC_DkOuuSEVRCyNfPmd6yduaw5tuyID1qvOYE + Cache-Control: + - no-cache + Content-Length: + - "94" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=MaU7C7bfxSVZoSni8Rvsclrsr_DpgKZ5_02zMnOfVyjKTv2IafM3SvYo0uacCrilVJM49FV4gIUqENHJTVyMkxS6sRYzt5E8QgvLbNzhW6te4utG7yjcnZNK32KGMGvOMSeKnjhSMp8snLtjuAm2BLEvMmQTtcpqNHlyjsZpD5ghyMf-PMz4usXD0MwzcZ8ElPBfHNZV5RwkHJrba_pfC2PNUpzG0tY26B-zPAiSt9Ip79XmzT4tfD0v_KE96hZShbLPVTVIn7kj8zOtLiWekO4KtbP-6Ldq1Nnz3vJRCF-x98gf5UZKX8CCOhHXamC3XYDqCXsIH8JcHuMTIqaXoA&h=Jq4tXtQW94jt-KziQBXM8VHwGOxuzpsAZQcT-i9x3NU + 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-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 6F2899C451B640298A2BDB3630014A4C Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:24Z' + status: 202 Accepted + code: 202 + duration: 1.641872566s + - id: 34 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 79 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"max_connections","properties":{"source":"user-override","value":"20"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "79" + Content-Type: + - application/json + Test-Request-Hash: + - b2de8c2d080b5500f2922ac481bfb2d6653a302197a52e0d055740cb3138943f + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/configurations/max_connections?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 97 + uncompressed: false + body: '{"operation":"UpdateServerParameterManagementOperationV2","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + Cache-Control: + - no-cache + Content-Length: + - "97" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657984490&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=kzQskiSbutEeG4HIx5zVpWOg6X5hLQ_8Cj8vx3EFKAELO8ZklfxLhx6xNVKJU07_dV8aAtuYuSQ6yMTZB6teyQRBw_3l2C437rePbHOHnWahuPvBbvCsWHvID0uahxHpS3EB-_4kSVdc4WJW_2Nm3GjuBQjrYxCliKcebNPplD9RwkvUvOoXDmv13-E6PWkNjQXxLGFoknx0o0-N_IKvU3CFksHq5v4OUrr4JPmy9AE-OydEuoyxdS4uakPweuO2YShx_pV7eMjVnzT0U4FtDlP8mnrQl5MuVUrv05PbA8WhTTvvInAIk3CswRa-K47QX4mbl-1Au4jU073IkF37Kw&h=Xk-DaHxXomRpa1lfBFdY_D8BFA2mVohHKZu08asXUqY + 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-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 1AC3EBDC21FC4589B90126EA08F68D4E Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:24Z' + status: 202 Accepted + code: 202 + duration: 1.639508809s + - 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: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/bedb4885-eda8-4c76-9aa1-26d66f54bbdc?api-version=2023-12-30&t=638749055656163803&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=lMwQHYUmeoa32nITJ3k2NKjugZ_riRAS7p-SKPj9Yog5UlfaodNVJTnLSht5ke2thfPe843e_Ccl7krld5PUFo3n5z9tk5bL_ZQ9MeOJe-p2vkG-j1Olxf-wwPi1WRPKf0T6C8FA1xEkRmH2aMTkvgcfRAgo45o2PyMy_13MZntzYSIn-9GQ3XpTO5JZETWWYts5K1JTwSgouKNL_8MGeXFQu3BqlGGsHcXOELPiFnxFsq_b0wp6j2E5pMVqXKm8qCqeBWAB1cl88kLAHampDx9B5fogbIMYyrCaP0RCUEyUSVtRO7eDAGBGNguGTSMcIC3ex3e3o2vIo_jYIEfZMA&h=7C3n46E7JQ6xo7g5SaF2r-ngYc85Vj02_CmS1vJBUrA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"bedb4885-eda8-4c76-9aa1-26d66f54bbdc","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: D28CF24F3BE24C0E9A6042CE4FECEF0B Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:29Z' + status: 200 OK + code: 200 + duration: 824.242122ms + - id: 36 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=GfCHIxxgTx1r-PYROJf8SQ8jUTa42J1hNSU8QZVfncoKhIoulFonMe-AZjE-kLHC9KZngmVBjCVI2ZFLAanJNeAJik0sfTut_o138-ubHBtsTCZ4utwyq1kzLcsDwXqw9JDPXRxFuCBo8xWjSLtzv5lw3buGPrMd4Dt2GuS6eyNaOFToiaJZs74pCkwMhOHrny42mf5zWavEXJ80pl9BvcKb-_vc6Kk2CVoHBDnWGHDfmLxs2Akq7kF5H_kGxg4Mx77f3SnGA7Wi4adhLKDorrzHXnzlVdJX8QPOeESMFbOpHEcCUdVVut3dFiqXviFwBt-i_kbR2ZNzeCOUN83BSg&h=u5Zup8fC_DkOuuSEVRCyNfPmd6yduaw5tuyID1qvOYE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"90983986-e952-43d8-aec7-52022b331331","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 6AFB95B2C5F1415897E0D64F414FE698 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:30Z' + status: 200 OK + code: 200 + duration: 864.600814ms + - 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: B3DE43C8D91443A18B3371A9C18CBB6F Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:30Z' + status: 200 OK + code: 200 + duration: 1.018635046s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 355 + uncompressed: false + body: '{"properties":{"startIpAddress":"1.2.3.4","endIpAddress":"1.2.3.4"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj","name":"asotest-fwrule-jhwmoj","type":"Microsoft.DBforMySQL/flexibleServers/firewallRules"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "355" + 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: 506D5299C30F4BAD99768AD4559EE2A1 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:31Z' + status: 200 OK + code: 200 + duration: 1.112752469s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 355 + uncompressed: false + body: '{"properties":{"startIpAddress":"1.2.3.4","endIpAddress":"1.2.3.4"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj","name":"asotest-fwrule-jhwmoj","type":"Microsoft.DBforMySQL/flexibleServers/firewallRules"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "355" + 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: F6AA82D382D44A32AA85215691F091D6 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:34Z' + status: 200 OK + code: 200 + duration: 1.445886421s + - id: 40 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 99 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"asotest-fwrule-jhwmoj","properties":{"endIpAddress":"1.2.3.5","startIpAddress":"1.2.3.4"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "99" + Content-Type: + - application/json + Test-Request-Hash: + - 9f2af575ba89c0a0afdb9fa82e567708f0e49bd87f1661c192f84bc7dc018dba + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 99 + uncompressed: false + body: '{"operation":"UpsertServerFirewallRulesManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/109fcaac-32fb-4c32-b689-0d467c40dda9?api-version=2023-12-30&t=638749055808975878&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=gtZt34i-I7X6XR9OfGCvToIAfXTDJRaYxzsu1uPh7nLCzrjyXwBe2H57Ke2cTfU7cPwVkq3d8c0KP3dHtuaAnbljckDyAMs2o26_g4ZSMZ48wp2my88FKa5E725apnv2TYT4GIGWh2djCIsT9Ns8iMpa0XoU-6NhaCU3T-1uPLcbWPQAAD9maNlGHh67kTg2yr877j8Kb8A4iK0cHRU5g0naDdrP0HX1GmUfW9u35rk68WkROIaD13n9adit5RnudMxKylZL8zZp9Qk1nUMGI27HZYs2xDKPn4JNpK4QetwzzN0UvE7rRgsD4qDKC9XmkJvCS-PMmHwvRvjL_gEGAQ&h=qs1YrITMHHUMDqjAL14jZDCjlUZxGH6OJ1f-_sjL1-I + Cache-Control: + - no-cache + Content-Length: + - "99" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/109fcaac-32fb-4c32-b689-0d467c40dda9?api-version=2023-12-30&t=638749055809132217&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=q-cnURJ8OwGpe9aArzRBXOBRtIXGUfrucmXJyN-gK8vvG6OpU9C-y_hXTU77evZopQjixQWyp7uuQzwqZWQvV8pRudy4rEXp4kbRt-nIuMbw6ygvmuhMW_yyfH4QVrUjgDZD3l5YFqVa-y9B4eIQ_mixLfrhYk_uqcvmboQQFsh_QdmJKR4RUkcWKBzBoSMOOy-eYymek937RKUkLZkl8rAmgJ_PKkjV57ismRJMWL6WdHPH_Jg-ukiJTz_fHYgyhrLSWE7hwglT8c_HiKgHh5UwA_PUd2dYeoWZPRCy-2KbyfjeChvbjqbkaJFqnhoWHJYJYFPGbH7Or1eRUg0jvw&h=rZf_5zYFOOhltvur4jEVW1Mb9zSzIJJQXAv7DsPn8tM + Pragma: + - no-cache + Retry-After: + - "60" + 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: 0A0036CFEFCA467EAC4C24E735059723 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:39Z' + status: 202 Accepted + code: 202 + duration: 1.464381714s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/109fcaac-32fb-4c32-b689-0d467c40dda9?api-version=2023-12-30&t=638749055808975878&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=gtZt34i-I7X6XR9OfGCvToIAfXTDJRaYxzsu1uPh7nLCzrjyXwBe2H57Ke2cTfU7cPwVkq3d8c0KP3dHtuaAnbljckDyAMs2o26_g4ZSMZ48wp2my88FKa5E725apnv2TYT4GIGWh2djCIsT9Ns8iMpa0XoU-6NhaCU3T-1uPLcbWPQAAD9maNlGHh67kTg2yr877j8Kb8A4iK0cHRU5g0naDdrP0HX1GmUfW9u35rk68WkROIaD13n9adit5RnudMxKylZL8zZp9Qk1nUMGI27HZYs2xDKPn4JNpK4QetwzzN0UvE7rRgsD4qDKC9XmkJvCS-PMmHwvRvjL_gEGAQ&h=qs1YrITMHHUMDqjAL14jZDCjlUZxGH6OJ1f-_sjL1-I + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"109fcaac-32fb-4c32-b689-0d467c40dda9","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 467F3A42038C4B94B6D96EA38D41856E Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:44Z' + status: 200 OK + code: 200 + duration: 962.699602ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=GfCHIxxgTx1r-PYROJf8SQ8jUTa42J1hNSU8QZVfncoKhIoulFonMe-AZjE-kLHC9KZngmVBjCVI2ZFLAanJNeAJik0sfTut_o138-ubHBtsTCZ4utwyq1kzLcsDwXqw9JDPXRxFuCBo8xWjSLtzv5lw3buGPrMd4Dt2GuS6eyNaOFToiaJZs74pCkwMhOHrny42mf5zWavEXJ80pl9BvcKb-_vc6Kk2CVoHBDnWGHDfmLxs2Akq7kF5H_kGxg4Mx77f3SnGA7Wi4adhLKDorrzHXnzlVdJX8QPOeESMFbOpHEcCUdVVut3dFiqXviFwBt-i_kbR2ZNzeCOUN83BSg&h=u5Zup8fC_DkOuuSEVRCyNfPmd6yduaw5tuyID1qvOYE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"90983986-e952-43d8-aec7-52022b331331","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 7208FE74D7604DEA8D5EAC70A581128B Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:48Z' + status: 200 OK + code: 200 + duration: 840.288572ms + - 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: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 1D345532EDBA4027AEE2C13EE5F673A2 Ref B: MAA201060513047 Ref C: 2025-02-11T21:19:48Z' + status: 200 OK + code: 200 + duration: 808.361971ms + - 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: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=GfCHIxxgTx1r-PYROJf8SQ8jUTa42J1hNSU8QZVfncoKhIoulFonMe-AZjE-kLHC9KZngmVBjCVI2ZFLAanJNeAJik0sfTut_o138-ubHBtsTCZ4utwyq1kzLcsDwXqw9JDPXRxFuCBo8xWjSLtzv5lw3buGPrMd4Dt2GuS6eyNaOFToiaJZs74pCkwMhOHrny42mf5zWavEXJ80pl9BvcKb-_vc6Kk2CVoHBDnWGHDfmLxs2Akq7kF5H_kGxg4Mx77f3SnGA7Wi4adhLKDorrzHXnzlVdJX8QPOeESMFbOpHEcCUdVVut3dFiqXviFwBt-i_kbR2ZNzeCOUN83BSg&h=u5Zup8fC_DkOuuSEVRCyNfPmd6yduaw5tuyID1qvOYE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"90983986-e952-43d8-aec7-52022b331331","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: E9757D3470B84FB5BD3B921146741FF6 Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:06Z' + status: 200 OK + code: 200 + duration: 715.314727ms + - 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: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 35AA49811B50431CBFF23E8D4786318D Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:06Z' + status: 200 OK + code: 200 + duration: 756.827851ms + - 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: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=GfCHIxxgTx1r-PYROJf8SQ8jUTa42J1hNSU8QZVfncoKhIoulFonMe-AZjE-kLHC9KZngmVBjCVI2ZFLAanJNeAJik0sfTut_o138-ubHBtsTCZ4utwyq1kzLcsDwXqw9JDPXRxFuCBo8xWjSLtzv5lw3buGPrMd4Dt2GuS6eyNaOFToiaJZs74pCkwMhOHrny42mf5zWavEXJ80pl9BvcKb-_vc6Kk2CVoHBDnWGHDfmLxs2Akq7kF5H_kGxg4Mx77f3SnGA7Wi4adhLKDorrzHXnzlVdJX8QPOeESMFbOpHEcCUdVVut3dFiqXviFwBt-i_kbR2ZNzeCOUN83BSg&h=u5Zup8fC_DkOuuSEVRCyNfPmd6yduaw5tuyID1qvOYE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"90983986-e952-43d8-aec7-52022b331331","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 95C01022C5384498A64E229A478C16FA Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:24Z' + status: 200 OK + code: 200 + duration: 838.304192ms + - 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: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: F84FCB856BAC4F16829450DD2BB8A1FB Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:24Z' + status: 200 OK + code: 200 + duration: 831.700344ms + - 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: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: A03CA1CE2EAB4F0B9C9833BC2F4A629B Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:43Z' + status: 200 OK + code: 200 + duration: 1.180197097s + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/90983986-e952-43d8-aec7-52022b331331?api-version=2023-12-30&t=638749055657764508&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=GfCHIxxgTx1r-PYROJf8SQ8jUTa42J1hNSU8QZVfncoKhIoulFonMe-AZjE-kLHC9KZngmVBjCVI2ZFLAanJNeAJik0sfTut_o138-ubHBtsTCZ4utwyq1kzLcsDwXqw9JDPXRxFuCBo8xWjSLtzv5lw3buGPrMd4Dt2GuS6eyNaOFToiaJZs74pCkwMhOHrny42mf5zWavEXJ80pl9BvcKb-_vc6Kk2CVoHBDnWGHDfmLxs2Akq7kF5H_kGxg4Mx77f3SnGA7Wi4adhLKDorrzHXnzlVdJX8QPOeESMFbOpHEcCUdVVut3dFiqXviFwBt-i_kbR2ZNzeCOUN83BSg&h=u5Zup8fC_DkOuuSEVRCyNfPmd6yduaw5tuyID1qvOYE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"90983986-e952-43d8-aec7-52022b331331","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 4064190DC72F47CC9BE507296B8731F0 Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:43Z' + status: 200 OK + code: 200 + duration: 1.399347928s + - id: 50 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 246 + uncompressed: false + body: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq'' under resource group ''asotest-rg-qlxgsl'' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "246" + 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: 46CFF442744148FBA64414B8D06690EE Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:45Z' + status: 404 Not Found + code: 404 + duration: 414.681378ms + - id: 51 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 61 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"asotestdbnmutal","properties":{"charset":"utf8mb4"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "61" + Content-Type: + - application/json + Test-Request-Hash: + - cf54513db3afb7ac01fe8c2d167c526b437a4af16848068fd5b2b3954b5e617b + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 93 + uncompressed: false + body: '{"operation":"UpsertServerDatabaseManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + Cache-Control: + - no-cache + Content-Length: + - "93" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=np4uH1ZxSVu04qllpdqMA2JcrNUfcIM1Wfv8ybRi2ysUv27prmv91O-T6d2bhztqzr1wXdd651gjNUN24I_eiFjb4kxPuef2EFg3pCou7UZRnu3B38W8p-ir56DRT20jURBw2OaZ1KegujbTAPd3tZJQj45A8kdW5hE9X1DLR1buInzZSs4tfiqsnoZrneu4DBoWTNbj7BVswu03A07HyuY_C7mYXfG1dMWTAekaMZ2ghGhAwvmxnlQTxx5fqbkdq_at-7MhpjMQLu87KzhdKa23DnTLRk9hhVsRZZtWhQv6MROBuzIu1Me1m9FPdwfyZDRDTwaLmB8HkG0Z1TVuWA&h=6KEjfHkHFhbyNf_ptT6lKDFuNNXrJQftTNhvHrAW9lA + 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-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 7B0E5E9B819F42F7BB3971FEDF77C1CB Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:47Z' + status: 202 Accepted + code: 202 + duration: 1.62062412s + - id: 52 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/109fcaac-32fb-4c32-b689-0d467c40dda9?api-version=2023-12-30&t=638749055808975878&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=gtZt34i-I7X6XR9OfGCvToIAfXTDJRaYxzsu1uPh7nLCzrjyXwBe2H57Ke2cTfU7cPwVkq3d8c0KP3dHtuaAnbljckDyAMs2o26_g4ZSMZ48wp2my88FKa5E725apnv2TYT4GIGWh2djCIsT9Ns8iMpa0XoU-6NhaCU3T-1uPLcbWPQAAD9maNlGHh67kTg2yr877j8Kb8A4iK0cHRU5g0naDdrP0HX1GmUfW9u35rk68WkROIaD13n9adit5RnudMxKylZL8zZp9Qk1nUMGI27HZYs2xDKPn4JNpK4QetwzzN0UvE7rRgsD4qDKC9XmkJvCS-PMmHwvRvjL_gEGAQ&h=qs1YrITMHHUMDqjAL14jZDCjlUZxGH6OJ1f-_sjL1-I + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"109fcaac-32fb-4c32-b689-0d467c40dda9","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 908DC880D490444B8CB2B463133F8440 Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:51Z' + status: 200 OK + code: 200 + duration: 799.951222ms + - id: 53 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: E1BF99DEF26C4504A94FCCB46CAF07F4 Ref B: MAA201060513047 Ref C: 2025-02-11T21:20:52Z' + status: 200 OK + code: 200 + duration: 729.962531ms + - id: 54 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 186204A9EED3467B92EA01ED74D0A154 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:01Z' + status: 200 OK + code: 200 + duration: 734.34355ms + - id: 55 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: D1F2AD31E56B4E08A1E9D9DC31ABD2A8 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:10Z' + status: 200 OK + code: 200 + duration: 835.228831ms + - id: 56 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 47AE7DEF99FA4755BF8CCB0A6A1893E5 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:19Z' + status: 200 OK + code: 200 + duration: 742.66382ms + - id: 57 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: E2735AFDE0B948CB8798B346346F57EC Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:28Z' + status: 200 OK + code: 200 + duration: 826.926691ms + - id: 58 + 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: + - "7" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/ae2f2b16-7d8a-4998-8603-4bf3e354b1ec?api-version=2023-12-30&t=638749055657828243&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cgc7fmOyqwNYA5VWhnR1Z8euDIB37NkOc2N17fpgTBSVdE-6TRIQ420x95S73-RldzbQyujHuBFq22M7VzpARyZtzfGlhwZu5wv0kdAATqrZVPSOSxqDbM90PfPz92kyArRdQ1ildGePBPxZLR6zvlNqEFOSjrAhLf1IBhJBhtgOU4V_It5COcujvqwhEZxG9Egt--VLckBYSgtlZ_hC-VeUaRGMrW6erSHr6nCSPqMugbRSEdVTdtw2mc9ipHFF5UPBjytO3m9Dm7mHDevsatKGaqej3cpEtTrf2XVCpjA1CCeX9UpSxziHO1DfEbn7GTDvwD6MkBEDtRYC-xTfyg&h=iZd1ydGDZwsD0iyOX3smM_1bz99897snRiYHYYipFTE + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"ae2f2b16-7d8a-4998-8603-4bf3e354b1ec","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 3422C495CD594F0490E11EE74606BDC2 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:37Z' + status: 200 OK + code: 200 + duration: 780.591605ms + - id: 59 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/configurations/max_connections?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 694 + uncompressed: false + body: '{"properties":{"value":"20","currentValue":"20","description":"The maximum permitted number of simultaneous client connections.","defaultValue":"1365","dataType":"Integer","allowedValues":"10-2731","source":"user-override","isConfigPendingRestart":"False","isDynamicConfig":"True","isReadOnly":"False","documentationLink":"https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/configurations/max_connections","name":"max_connections","type":"Microsoft.DBforMySQL/flexibleServers/configurations"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "694" + 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: 329863BA216242E9838153D1406B8871 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:39Z' + status: 200 OK + code: 200 + duration: 917.174971ms + - id: 60 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/configurations/max_connections?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 694 + uncompressed: false + body: '{"properties":{"value":"20","currentValue":"20","description":"The maximum permitted number of simultaneous client connections.","defaultValue":"1365","dataType":"Integer","allowedValues":"10-2731","source":"user-override","isConfigPendingRestart":"False","isDynamicConfig":"True","isReadOnly":"False","documentationLink":"https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/configurations/max_connections","name":"max_connections","type":"Microsoft.DBforMySQL/flexibleServers/configurations"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "694" + 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: 58D02D20AD514077B6E85CE9F0073F29 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:41Z' + status: 200 OK + code: 200 + duration: 909.561867ms + - id: 61 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 0825FB4CF9A647929478A91D42FB6FBE Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:46Z' + status: 200 OK + code: 200 + duration: 1.41949196s + - id: 62 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/109fcaac-32fb-4c32-b689-0d467c40dda9?api-version=2023-12-30&t=638749055808975878&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=gtZt34i-I7X6XR9OfGCvToIAfXTDJRaYxzsu1uPh7nLCzrjyXwBe2H57Ke2cTfU7cPwVkq3d8c0KP3dHtuaAnbljckDyAMs2o26_g4ZSMZ48wp2my88FKa5E725apnv2TYT4GIGWh2djCIsT9Ns8iMpa0XoU-6NhaCU3T-1uPLcbWPQAAD9maNlGHh67kTg2yr877j8Kb8A4iK0cHRU5g0naDdrP0HX1GmUfW9u35rk68WkROIaD13n9adit5RnudMxKylZL8zZp9Qk1nUMGI27HZYs2xDKPn4JNpK4QetwzzN0UvE7rRgsD4qDKC9XmkJvCS-PMmHwvRvjL_gEGAQ&h=qs1YrITMHHUMDqjAL14jZDCjlUZxGH6OJ1f-_sjL1-I + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"109fcaac-32fb-4c32-b689-0d467c40dda9","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 68E184BD77B549598E759655217572B1 Ref B: MAA201060513047 Ref C: 2025-02-11T21:21:58Z' + status: 200 OK + code: 200 + duration: 819.849705ms + - id: 63 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 355 + uncompressed: false + body: '{"properties":{"startIpAddress":"1.2.3.4","endIpAddress":"1.2.3.5"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj","name":"asotest-fwrule-jhwmoj","type":"Microsoft.DBforMySQL/flexibleServers/firewallRules"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "355" + 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: BFEBFB66C0474981852F50D798CB5114 Ref B: MAA201060513047 Ref C: 2025-02-11T21:22:00Z' + status: 200 OK + code: 200 + duration: 1.086873273s + - id: 64 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 355 + uncompressed: false + body: '{"properties":{"startIpAddress":"1.2.3.4","endIpAddress":"1.2.3.5"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj","name":"asotest-fwrule-jhwmoj","type":"Microsoft.DBforMySQL/flexibleServers/firewallRules"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "355" + 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: 825D6293800C4302AC1DC2F04727468C Ref B: MAA201060513047 Ref C: 2025-02-11T21:22:02Z' + status: 200 OK + code: 200 + duration: 581.421256ms + - id: 65 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 5A0094035E7941A48BCAF0B32C7F6D1E Ref B: MAA201060513047 Ref C: 2025-02-11T21:22:05Z' + status: 200 OK + code: 200 + duration: 812.888018ms + - id: 66 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/firewallRules/asotest-fwrule-jhwmoj?api-version=2023-12-30 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 97 + uncompressed: false + body: '{"operation":"DropServerFirewallRulesManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/c5612abd-29f0-4883-9a00-a32c1ca21a1b?api-version=2023-12-30&t=638749057272959737&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=JhCCWVXdBcbWUoPgrcu1T0YUAGGvy96V-RELgdw_aVoR70j2r9VF5JLwNx6Hwca8ZioGLC_9FfGuyR7pRLtAfo_LXOyIAK9JKDvYM_pNeLWgopsyaT4eOFQAJ1-KpoLbtzpsnbOqo76fF0zmyNMQ4jG8244nmPBk-Z0OJMi6kDQPa4SseRuM5fZqJIBj3tY-iYS9cRVN5iXeu_XkWO6LNJKfbYaBnhRIJKpssk0_WkBHyJJfZD2d4YHiW-ww5qnVsJ9OcTRPE0ILU3CD8WK5etGGvYljwDc7_KSsvkYL6NNWz3KiclNU4NhI17aUqW5Vwco6ACGv_SmWd9qMygHZsQ&h=Y4F-aE7OLPOBLQF68hDx66mQqPN5iCLqmdvWu_72m-A + Cache-Control: + - no-cache + Content-Length: + - "97" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/c5612abd-29f0-4883-9a00-a32c1ca21a1b?api-version=2023-12-30&t=638749057273115995&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=CmphKeyhtqSrTli2ALSrFTFODwlvCoF_MVr2bcx6rjqWOyZxNtbGuPUEu-AdB8Rp0pWSaobyzCEtijrG0BV0y8CLYjG5alqIM2qHzjhYravbE2weth7YoJsiznFfrmmVzwoHzVTJAn--YQ2h9pP4UdgBFN-oGkrQl35_8Lk5yLwaEjMpwSn9fQsNzGo_q1uzFRJiIKi3rqJHxFt89_n4SSby1hdeL1v1jPX75BaJ9EitKeO7X83RpS9ru8EfDXKpkRx6VRN7Zp9MoR5MQ2ldXzeP0W-IE2TdibwfruauELt76qpfJfVKazzO270h4ZG2LCMAULW1OjRlvpOHYvsSkw&h=-8DN73YUZAaqEOuvgc9dNc55n0dLTdy-8cM6lh2hPhk + Pragma: + - no-cache + Retry-After: + - "60" + 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: 136947627C9741B4A628692BB973606A Ref B: MAA201060513047 Ref C: 2025-02-11T21:22:06Z' + status: 202 Accepted + code: 202 + duration: 1.132320265s + - id: 67 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 144962B911534953913CBEF534F41833 Ref B: MAA201060513047 Ref C: 2025-02-11T21:22:23Z' + status: 200 OK + code: 200 + duration: 717.429214ms + - id: 68 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 6054A0DAAAF3436797FC735B5750449A Ref B: MAA201060513047 Ref C: 2025-02-11T21:22:41Z' + status: 200 OK + code: 200 + duration: 894.818347ms + - id: 69 + 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: + - "7" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/96409525-1c63-4595-9888-f183cb266b59?api-version=2023-12-30&t=638749056489787344&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=SPsTV29U6i-zvQJ4nCf6RN0SrW3-2WI9DOrJhn78yvXBugGO77Au5PW5PJ36VTflQhRcSRAzq-qe0OE6vYnbfpEWBMawLc6uiCqGd_2tsVf_mN1SgDsGtXr4FLplz6yXGgkhZ7RGC9XAuZ2AX2VLKU1qxhr3U_DDk0AS0dk0sHl4H0dC-a1oPR5jpk0_rYm3NB5LLnJKe5ubYca6aEu2Lvpw5Dej3936bPzNm5d-XP_Pu9BzFObsdY7W44PLyS-czVku9tvHnPkGUXrOTVqciqWIoRSI6kZBO6Q4qStl3psVcJFaWLRjW8iv7MrxxLFStTbSCL_HEUwRsyEQlA6RiA&h=LzAjPAZoJKyCtecyWxZTuA4dCy_l0qr3fbr-I6elp1E + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 106 + uncompressed: false + body: '{"name":"96409525-1c63-4595-9888-f183cb266b59","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "106" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: F85F6C318EE945CEAFCE746B08864463 Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:00Z' + status: 200 OK + code: 200 + duration: 1.010294979s + - id: 70 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"properties":{"charset":"utf8mb4","collation":"utf8mb4_0900_ai_ci"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal","name":"asotestdbnmutal","type":"Microsoft.DBforMySQL/flexibleServers/databases"}' + 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: EC80D302248C4F108CC23799C1F29B8D Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:02Z' + status: 200 OK + code: 200 + duration: 907.869712ms + - id: 71 + 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 336 + uncompressed: false + body: '{"properties":{"charset":"utf8mb4","collation":"utf8mb4_0900_ai_ci"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal","name":"asotestdbnmutal","type":"Microsoft.DBforMySQL/flexibleServers/databases"}' + 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: F98312F0F33E47078E6828A48F32C0C2 Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:04Z' + status: 200 OK + code: 200 + duration: 1.356258654s + - id: 72 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/databases/asotestdbnmutal?api-version=2023-12-30 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 92 + uncompressed: false + body: '{"operation":"DropServerDatabaseManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/42002d1a-cd38-41b4-9506-b3af54bb5281?api-version=2023-12-30&t=638749057925764170&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=RvgK1xdMFrfnA4B1JKz0BwKSDQtIPgio5PZPAQC9ceFg2hnSEJxAkNS8AlcN-32pA56yAxVRB_bVhPnDsEb4pNyv5ySQp3sh2jfb5W0gYZqGP3KdUkGB9p4Vf1lQ1PDbkh0NtAriXpvWPxRSCvqC3eidPV1Of2srOSzr_URc0wNZvrKHbWxpVWHFuT4rPJ8wWvOZ41bawpuBEO8stEOV1N5injK2Rbsp5QggrONG1xK00e_4MZ1CNZI2MHHBoe6pK4HDBNRwaUT9QMyzhuVgEhUbcQboesa9bWkwu5YG7Cqcphk_FXp4dArjfvWFKFAR39FMl75qQVcdbrZxzTqWNw&h=SlYMULErl6bqeD0hX-1_rk7L3PkpM532hlF545Tr0dg + Cache-Control: + - no-cache + Content-Length: + - "92" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/westus2/operationResults/42002d1a-cd38-41b4-9506-b3af54bb5281?api-version=2023-12-30&t=638749057925764170&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=auSpe5GJB-xknlEGo7MkeDqYb9Rqu5v0alCaqS47qWCTn_UwpVzuNxvckDRX5D4y7kA2eMDE7jPlbNlyGcv7cb2Y_SAImAW-p8FtXEBq_-Nc04NK5AaDtMmn8443HbfvMLaw3dCiXt3S2zsTaFx14l_A-dQ6Es3UWCPLANg-_vVhEpkD3mKS2CTHDzS5I9GfwzBd19jvZtegURy9zxBNq6eCQQSMYhvJDr6cAvyPw6nvAC6MTyuRH6wtTNoElhg0WeWSuAgIsz3QtJDUC9xjJUOKQKBR0nMa3gBtS2xBkAfQrz5i_oOquLvnSUx-7lK7mDDZ79Bd80_grXcfQSCCXA&h=JPSqZXB3DrEcHr8O1h3n9xDOwUS9uv9d4I8NxH0xzrw + 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: D34DF197FE81431BABFADF251143DE28 Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:11Z' + status: 202 Accepted + code: 202 + duration: 1.331365891s + - id: 73 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/c5612abd-29f0-4883-9a00-a32c1ca21a1b?api-version=2023-12-30&t=638749057272959737&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=JhCCWVXdBcbWUoPgrcu1T0YUAGGvy96V-RELgdw_aVoR70j2r9VF5JLwNx6Hwca8ZioGLC_9FfGuyR7pRLtAfo_LXOyIAK9JKDvYM_pNeLWgopsyaT4eOFQAJ1-KpoLbtzpsnbOqo76fF0zmyNMQ4jG8244nmPBk-Z0OJMi6kDQPa4SseRuM5fZqJIBj3tY-iYS9cRVN5iXeu_XkWO6LNJKfbYaBnhRIJKpssk0_WkBHyJJfZD2d4YHiW-ww5qnVsJ9OcTRPE0ILU3CD8WK5etGGvYljwDc7_KSsvkYL6NNWz3KiclNU4NhI17aUqW5Vwco6ACGv_SmWd9qMygHZsQ&h=Y4F-aE7OLPOBLQF68hDx66mQqPN5iCLqmdvWu_72m-A + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"c5612abd-29f0-4883-9a00-a32c1ca21a1b","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 6D4D230E517B4D5280D84B58ADB2AC02 Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:14Z' + status: 200 OK + code: 200 + duration: 496.38247ms + - id: 74 + 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/providers/Microsoft.DBforMySQL/locations/westus2/azureAsyncOperation/42002d1a-cd38-41b4-9506-b3af54bb5281?api-version=2023-12-30&t=638749057925764170&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=RvgK1xdMFrfnA4B1JKz0BwKSDQtIPgio5PZPAQC9ceFg2hnSEJxAkNS8AlcN-32pA56yAxVRB_bVhPnDsEb4pNyv5ySQp3sh2jfb5W0gYZqGP3KdUkGB9p4Vf1lQ1PDbkh0NtAriXpvWPxRSCvqC3eidPV1Of2srOSzr_URc0wNZvrKHbWxpVWHFuT4rPJ8wWvOZ41bawpuBEO8stEOV1N5injK2Rbsp5QggrONG1xK00e_4MZ1CNZI2MHHBoe6pK4HDBNRwaUT9QMyzhuVgEhUbcQboesa9bWkwu5YG7Cqcphk_FXp4dArjfvWFKFAR39FMl75qQVcdbrZxzTqWNw&h=SlYMULErl6bqeD0hX-1_rk7L3PkpM532hlF545Tr0dg + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"42002d1a-cd38-41b4-9506-b3af54bb5281","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 2271F91E239842DD8442343D9A5C01AD Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:30Z' + status: 200 OK + code: 200 + duration: 723.289366ms + - id: 75 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 84 + uncompressed: false + body: '{"operation":"DropServerManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/West%20US%202/azureAsyncOperation/e7edf2fb-8e19-4244-a5c5-371f8689ba90?api-version=2023-12-30&t=638749058157877640&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cW3r80orIl-Muc54H1bSArV9EdF-dzWpHhmX6D1D_Nlav_lIidWQjwG_1Ju_Z77yXIUKYNOIl6iyPX6n3PRTMlBYbdvXwzOpqqMc5xoi_LToyfixxlG-TXnwAih6ajURlcOw3z3R_-pF4zuIzcjU0ubiucVgQqd7vV0ewXHwq1x1fPBf2stGZAUmZtm95_9egmczBBiuYyi-emBtkPtkP-8SHdpxxRQk4rdrZWtC54Ydn32-b6HvV-SCvuHssPGpEHQam85jx1UAUss2UG-EY3Y5sZQXdFu0kwyrAEEKJvyqS0W90eWOnam6p1QF0heW1ru6IB40twl3qgQY7x2pdA&h=ywS15Y4ACfQfNq-ibXauP06FEkRXm7rioOfZ-3kqa48 + Cache-Control: + - no-cache + Content-Length: + - "84" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/West%20US%202/operationResults/e7edf2fb-8e19-4244-a5c5-371f8689ba90?api-version=2023-12-30&t=638749058157877640&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=RZA25RQgxaR7g1BtYJ6RYxOwIWJ2F_JvqapEG2bp2GO-suQlHcl3XtRB_33z3MPigbSr56rrrhlOJUIJrPzqZtZ8dF4VhXOc3Wwus62nHUGU6IBqMFdBX_pk_BCJS-GpTX0390Z_X1XKIJatWoTBYQxtNzHPnjDoPZjJxgvMP6wFtDc4jDfRcit0q_j7EZuXBLoAxOc5GkApC_YYNIlQRoGp2lpHzpJzoA-jFUuXegRTlp1duQ9jPv8N506JC1LdRao_CS08wQcdrOya3E0F6NHPlV365esgPKh7bwwOIE7Xhktf70jLhh_sHjrZXp8sh4YFIihKwXdr4muR_Oi3WA&h=A3DHzQQR7_Ua0hDj9rDoJUh7796VQEc60QQijlg6R6M + 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: E230EF2A762A41388819FEC77FA45B9A Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:33Z' + status: 202 Accepted + code: 202 + duration: 2.368417219s + - id: 76 + 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/providers/Microsoft.DBforMySQL/locations/West%20US%202/azureAsyncOperation/e7edf2fb-8e19-4244-a5c5-371f8689ba90?api-version=2023-12-30&t=638749058157877640&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=cW3r80orIl-Muc54H1bSArV9EdF-dzWpHhmX6D1D_Nlav_lIidWQjwG_1Ju_Z77yXIUKYNOIl6iyPX6n3PRTMlBYbdvXwzOpqqMc5xoi_LToyfixxlG-TXnwAih6ajURlcOw3z3R_-pF4zuIzcjU0ubiucVgQqd7vV0ewXHwq1x1fPBf2stGZAUmZtm95_9egmczBBiuYyi-emBtkPtkP-8SHdpxxRQk4rdrZWtC54Ydn32-b6HvV-SCvuHssPGpEHQam85jx1UAUss2UG-EY3Y5sZQXdFu0kwyrAEEKJvyqS0W90eWOnam6p1QF0heW1ru6IB40twl3qgQY7x2pdA&h=ywS15Y4ACfQfNq-ibXauP06FEkRXm7rioOfZ-3kqa48 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"e7edf2fb-8e19-4244-a5c5-371f8689ba90","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: F6BD9A9F61F84AD783B430C95EAAFE80 Ref B: MAA201060513047 Ref C: 2025-02-11T21:23:54Z' + status: 200 OK + code: 200 + duration: 743.945765ms + - id: 77 + 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: + - "6" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 246 + uncompressed: false + body: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq'' under resource group ''asotest-rg-qlxgsl'' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "246" + 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: D68CE85F03F943A3B03FFF1383E140EE Ref B: MAA201060513047 Ref C: 2025-02-11T21:24:01Z' + status: 404 Not Found + code: 404 + duration: 517.593099ms + - id: 78 + 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-qlxgsl?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058463841830&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=C9QKqBH3wv9__e-54zaw-TqgdNkzhxfO3BJvD491QuiBsIh2VAYRFeoOYSnPIVrAppEnnlV52W1DItmQabsUiz2vi2KYc1nocfdcvvGtA1wjYammF9dNTX6D1nSVLPDHwZmtwtdijvdk3SpNFrkhwAZHpOeHkyooZScLC41rh2NS5WLObWkPheHwS9V0FALAVujHipwKMt1JX8RJAXux_koAf94_7DBDjQX3fZLd8SC7Q1854QH5XV3E7dELK7N6o4h5uOGteltmAbSjENd-iftOAkPnhmBSNEvwjNkGqKTvY-tRdiDCorU37fcxv09kbwGiRiG9C-eSPpIQyIW9PQ&h=72PL9NqUFb4PDKBS-s3ZRr729E105ynijM9ZFPtq1Sc + 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: 98F9C3B2130E481F8745F5812F2B1AE8 Ref B: MAA201060513047 Ref C: 2025-02-11T21:24:02Z' + status: 202 Accepted + code: 202 + duration: 4.003139739s + - id: 79 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058463841830&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=C9QKqBH3wv9__e-54zaw-TqgdNkzhxfO3BJvD491QuiBsIh2VAYRFeoOYSnPIVrAppEnnlV52W1DItmQabsUiz2vi2KYc1nocfdcvvGtA1wjYammF9dNTX6D1nSVLPDHwZmtwtdijvdk3SpNFrkhwAZHpOeHkyooZScLC41rh2NS5WLObWkPheHwS9V0FALAVujHipwKMt1JX8RJAXux_koAf94_7DBDjQX3fZLd8SC7Q1854QH5XV3E7dELK7N6o4h5uOGteltmAbSjENd-iftOAkPnhmBSNEvwjNkGqKTvY-tRdiDCorU37fcxv09kbwGiRiG9C-eSPpIQyIW9PQ&h=72PL9NqUFb4PDKBS-s3ZRr729E105ynijM9ZFPtq1Sc + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058680666416&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=e8ttlWioNZzS73VW5RFY03WC6zxtQ6IR1nzAYFM5hmjG6O3JJsXGNv9DDncdt6dRRJreOVTzs5W0KWAWN-NdFmVfyE7ypIEg3irb4VRNllsUSBt23oyGE8VdrrHiWIR8dYVqWN0-fXhD4UeNQkDhrUzqd7OsnpHgmzpIH-4ur1PesB-51XKNb5uP_GkE9TiXMJmG_hHBRCCDdRcLchnPpVv8_7HUSRivf-ZrKVPhqd-31NoxfTuXhZ82NbdLhbs23R3-wVCBrCcm5wXreSDH9UVaInfSsJWH0CxqoQZz40jWaJN7gkKuz-lCr8OtHkkb_LgDBjieyBZ_F6yMVmeX8w&h=4nBWG49gQrZUpewXd0kObmpBwvs_-Rvsd8qAT7ISH8I + 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: 6D87F022F1804A1282E4020D7E136223 Ref B: MAA201060513047 Ref C: 2025-02-11T21:24:27Z' + status: 202 Accepted + code: 202 + duration: 976.325342ms + - id: 80 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058463841830&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=C9QKqBH3wv9__e-54zaw-TqgdNkzhxfO3BJvD491QuiBsIh2VAYRFeoOYSnPIVrAppEnnlV52W1DItmQabsUiz2vi2KYc1nocfdcvvGtA1wjYammF9dNTX6D1nSVLPDHwZmtwtdijvdk3SpNFrkhwAZHpOeHkyooZScLC41rh2NS5WLObWkPheHwS9V0FALAVujHipwKMt1JX8RJAXux_koAf94_7DBDjQX3fZLd8SC7Q1854QH5XV3E7dELK7N6o4h5uOGteltmAbSjENd-iftOAkPnhmBSNEvwjNkGqKTvY-tRdiDCorU37fcxv09kbwGiRiG9C-eSPpIQyIW9PQ&h=72PL9NqUFb4PDKBS-s3ZRr729E105ynijM9ZFPtq1Sc + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058866124157&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=MpCftgJ4EfzPPT4vxcynrL-4qxrJ7RlQOWQEm8mnUb7jDZPRvj0xb7M41M_AzBp13Dfh3821sR4oaeeCO1GKpk96MCMLL7XPe9YkiGez-5Pc64gzS-_gsdFHxrT7Tj46715WQVkFhJ_ChjPYwJwfPllm-9MXPHH0pooS8Lb9LANmLm5kmLmR7SJDcc_f-KUC797oaBLULBJTOPjhPpb6TqFy6HcBGVsW4zTXsvsJ5XAfVO7dK0AABwKhmt1f_xre2K1x_KIL-_TYkfMBtmMXxRawqyTkzASRQKWdmKsIabxog6wHR_DNdTnppiSToNAmf_e5VVeZDtSexSQnQjcnyQ&h=oA8KOVZlF_hpzB1Bb5QlWc0Hf9Q_KpEmyLu_0sNsjoE + 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: F765523185B14CB1816C458128A67C80 Ref B: MAA201060513047 Ref C: 2025-02-11T21:24:45Z' + status: 202 Accepted + code: 202 + duration: 1.408693918s + - id: 81 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058463841830&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=C9QKqBH3wv9__e-54zaw-TqgdNkzhxfO3BJvD491QuiBsIh2VAYRFeoOYSnPIVrAppEnnlV52W1DItmQabsUiz2vi2KYc1nocfdcvvGtA1wjYammF9dNTX6D1nSVLPDHwZmtwtdijvdk3SpNFrkhwAZHpOeHkyooZScLC41rh2NS5WLObWkPheHwS9V0FALAVujHipwKMt1JX8RJAXux_koAf94_7DBDjQX3fZLd8SC7Q1854QH5XV3E7dELK7N6o4h5uOGteltmAbSjENd-iftOAkPnhmBSNEvwjNkGqKTvY-tRdiDCorU37fcxv09kbwGiRiG9C-eSPpIQyIW9PQ&h=72PL9NqUFb4PDKBS-s3ZRr729E105ynijM9ZFPtq1Sc + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749059058630248&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=YwT_7avdipD0TqzmROfCs5wQ5nU5vtcVm_RoEmddchYbweq4lsC4FTP-Jz9vuQUs55Eflp94-ze65huvbbyrCsNDBeLN5xLlij5SY3-DBNYTWf6bJYtPvwyxFK6EoVjMzhbC31jlCRzKPGFOsAqTPVMf9Ag3ZH7E4CnAWeQaCpMsJQOLWwoXfDulF_awjSOzQdP03YvtLnCxmEZV1knOtmmDNP9u48Qk-jtJB4s8WYZwBe8_uG_Vh2hoSGeF00CgXeoqAyLm0MH35knsbosJ6ShtRxTPcpPNYoZHQA0U23ch0WOFvGBufN3G0IMfGCbDtPo3IDyn93aXkVRHZTxEOw&h=28Y1owN9wyiEBIMYApUHLVwztCh282MUK-H8F13QqhI + 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: 260DA73B8B7947DD9127A02DDA3BBC11 Ref B: MAA201060513047 Ref C: 2025-02-11T21:25:05Z' + status: 202 Accepted + code: 202 + duration: 1.296331066s + - id: 82 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRRTFhHU0wtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749058463841830&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=C9QKqBH3wv9__e-54zaw-TqgdNkzhxfO3BJvD491QuiBsIh2VAYRFeoOYSnPIVrAppEnnlV52W1DItmQabsUiz2vi2KYc1nocfdcvvGtA1wjYammF9dNTX6D1nSVLPDHwZmtwtdijvdk3SpNFrkhwAZHpOeHkyooZScLC41rh2NS5WLObWkPheHwS9V0FALAVujHipwKMt1JX8RJAXux_koAf94_7DBDjQX3fZLd8SC7Q1854QH5XV3E7dELK7N6o4h5uOGteltmAbSjENd-iftOAkPnhmBSNEvwjNkGqKTvY-tRdiDCorU37fcxv09kbwGiRiG9C-eSPpIQyIW9PQ&h=72PL9NqUFb4PDKBS-s3ZRr729E105ynijM9ZFPtq1Sc + 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: 59533C2F88204D54B2555A66BF402083 Ref B: MAA201060513047 Ref C: 2025-02-11T21:25:24Z' + status: 200 OK + code: 200 + duration: 1.195024686s + - id: 83 + 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-qlxgsl/providers/Microsoft.ManagedIdentity/userAssignedIdentities/asotest-mi-knncjg?api-version=2018-11-30 + 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-qlxgsl'' 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: C15575C5C21A4F12881D5D9306D63A9B Ref B: MAA201060513047 Ref C: 2025-02-11T21:25:29Z' + status: 404 Not Found + code: 404 + duration: 593.163726ms + - id: 84 + 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-qlxgsl/providers/Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq/configurations/max_connections?api-version=2023-12-30 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 246 + uncompressed: false + body: '{"error":{"code":"ResourceNotFound","message":"The Resource ''Microsoft.DBforMySQL/flexibleServers/asotest-mysql-vihfnq'' under resource group ''asotest-rg-qlxgsl'' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "246" + 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: B70AB7485DF94063A328980E402F1E74 Ref B: MAA201060513047 Ref C: 2025-02-11T21:25:34Z' + status: 404 Not Found + code: 404 + duration: 440.805001ms diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Dbformysql_v1api20231230_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Dbformysql_v1api20231230_CreationAndDeletion.yaml new file mode 100644 index 0000000000..b5a4942558 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Dbformysql_v1api20231230_CreationAndDeletion.yaml @@ -0,0 +1,2603 @@ +--- +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-mnswhs","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - deca393aeddb33e85c17d35c62e8c5713b190d22fcc3eb602fa2ba8b70d6be77 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs?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-mnswhs","name":"asotest-rg-mnswhs","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: 9AB77AB98F7941FC8B3E632A896A745A Ref B: MAA201060516009 Ref C: 2025-02-11T23:34:39Z' + status: 201 Created + code: 201 + duration: 4.826660633s + - 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-mnswhs?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-mnswhs","name":"asotest-rg-mnswhs","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: D609C7EC240A45F9AD5AB42A26CD3A68 Ref B: MAA201060516009 Ref C: 2025-02-11T23:34:48Z' + status: 200 OK + code: 200 + duration: 368.986128ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 504 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity":{}}},"location":"eastus","name":"asotesthkcknu","properties":{"administratorLogin":"myAdmin","administratorLoginPassword":"{PASSWORD}","storage":{"storageSizeGB":128},"version":"8.0.21"},"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "504" + Content-Type: + - application/json + Test-Request-Hash: + - 831b6ff711968151eba7503007b99289a951c4f68949704cf68cbf115ec89827 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 577 + uncompressed: false + body: '{"error":{"code":"FailedIdentityOperation","message":"Identity operation for resource ''/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu'' failed with error ''Failed to perform resource identity operation. Status: ''BadRequest''. Response: ''{\"error\":{\"code\":\"BadRequest\",\"message\":\"Resource ''/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity'' was not found.\"}}''.''."}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "577" + 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: D8A484221085417D8106DF4FF27ADFA8 Ref B: MAA201060516009 Ref C: 2025-02-11T23:34:55Z' + status: 400 Bad Request + code: 400 + duration: 3.420373447s + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 44 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"eastus","name":"adminidentity"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "44" + Content-Type: + - application/json + Test-Request-Hash: + - a3b7210e6287b9a23e20479a42cc4e409d61c7c904ab5be12aeee2bc44a2cebc + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity?api-version=2018-11-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 445 + uncompressed: false + body: '{"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity","name":"adminidentity","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"ab4506d1-2085-4605-8a52-32cb715b91ff","clientId":"972a1f06-516a-42e8-9b88-573be33612a5"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "445" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity + 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: DCFB8A8D6BBB45738E1D4DCC995DF237 Ref B: MAA201060516009 Ref C: 2025-02-11T23:34:55Z' + status: 201 Created + code: 201 + duration: 5.257218532s + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 504 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity":{}}},"location":"eastus","name":"asotesthkcknu","properties":{"administratorLogin":"myAdmin","administratorLoginPassword":"{PASSWORD}","storage":{"storageSizeGB":128},"version":"8.0.21"},"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "504" + Content-Type: + - application/json + Test-Request-Hash: + - 831b6ff711968151eba7503007b99289a951c4f68949704cf68cbf115ec89827 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 88 + uncompressed: false + body: '{"operation":"UpsertServerManagementOperationV2","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/32812a1d-bbda-4e44-b91f-0e45c70d47f4?api-version=2023-12-30&t=638749137091258394&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mHnl4xyBquZ2S5Smqm5PVsYKPGb3dIn4s5IXJNsP2igWy65DYuDN0eygsDDQOV36lkCwdK32XC3Rj80edPOd79N6aVVnvHup3N-S-Pc32Azuyb_nz-lWLoq0xSo9HdHm_K68z5gpTCdh_UZ63FWcefQjaxf3vmjd0WZ2vegNbM_Z7pGY28iN3U7JzkAXLLKtsdpi3EYqfzMMfD40125-Ex-h3nwRjL1TAMHZQLyQeI4GcxtuoFhqRNt_3HfvN16mnEm61D57ksYkI9zr6gxfPfBmJAy2soxYDzQbuj2R7XEb-3aDxEPxdBe1VkHTFGDd8Ddula5-Bby-qNXtkxGYBQ&h=LQwxizfw0v3i0jrJqa4bAPgSbCLs-3x93FcETKyHORQ + Cache-Control: + - no-cache + Content-Length: + - "88" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/operationResults/32812a1d-bbda-4e44-b91f-0e45c70d47f4?api-version=2023-12-30&t=638749137091258394&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=M5I1TuLeIx9EPbcrB8qZfHzLFy-TQ1palWqmHpPNdQIzj4n862XxtxNnC1Qc8mIlX5Wln-PH-sFGN01fa0kcm7YZckxY5LFoCTP_OBJ7JiBBv8g_BqFc4TwceYlV6gPF2VKSsHpI38RX_bqEHG2ybdgg4_BTq97PdVv_yP87o19MnFCqQXt4oRLTP4rnuNEV9lFunRd8bV8ZJRcxZ1Nmi6QN4zC4Mw8xaLzqtSWqRua_0fWPrLSam0_rh5-mPZiovRkIaBqOF47mgzQ-6sZVEND5rOBieyrX12CjmtE8y9_cs9j0Imd3IGQu3YujH4J1go41oPx4zM0F22p2OCh5dA&h=vXni0ZfSLoEYeBHgW4s8ehMuPWg77Ahs63PubI7Zi70 + Pragma: + - no-cache + Retry-After: + - "60" + 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: 2D002B24676440C0B9522DB730CC6264 Ref B: MAA201060516009 Ref C: 2025-02-11T23:35:04Z' + status: 202 Accepted + code: 202 + duration: 4.312870254s + - id: 5 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 44 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"eastus","name":"adminidentity"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "44" + Content-Type: + - application/json + Test-Request-Hash: + - a3b7210e6287b9a23e20479a42cc4e409d61c7c904ab5be12aeee2bc44a2cebc + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity?api-version=2018-11-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 445 + uncompressed: false + body: '{"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity","name":"adminidentity","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"ab4506d1-2085-4605-8a52-32cb715b91ff","clientId":"972a1f06-516a-42e8-9b88-573be33612a5"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "445" + 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: FBA0336A9F8A494A90F2D7C77FA48CEB Ref B: MAA201060516009 Ref C: 2025-02-11T23:35:08Z' + status: 200 OK + code: 200 + duration: 1.54273756s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity?api-version=2018-11-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 445 + uncompressed: false + body: '{"location":"eastus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity","name":"adminidentity","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"ab4506d1-2085-4605-8a52-32cb715b91ff","clientId":"972a1f06-516a-42e8-9b88-573be33612a5"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "445" + 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: ABD37CF44B274DEE8F6448EC37023729 Ref B: MAA201060516009 Ref C: 2025-02-11T23:35:12Z' + status: 200 OK + code: 200 + duration: 1.079134525s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/32812a1d-bbda-4e44-b91f-0e45c70d47f4?api-version=2023-12-30&t=638749137091258394&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mHnl4xyBquZ2S5Smqm5PVsYKPGb3dIn4s5IXJNsP2igWy65DYuDN0eygsDDQOV36lkCwdK32XC3Rj80edPOd79N6aVVnvHup3N-S-Pc32Azuyb_nz-lWLoq0xSo9HdHm_K68z5gpTCdh_UZ63FWcefQjaxf3vmjd0WZ2vegNbM_Z7pGY28iN3U7JzkAXLLKtsdpi3EYqfzMMfD40125-Ex-h3nwRjL1TAMHZQLyQeI4GcxtuoFhqRNt_3HfvN16mnEm61D57ksYkI9zr6gxfPfBmJAy2soxYDzQbuj2R7XEb-3aDxEPxdBe1VkHTFGDd8Ddula5-Bby-qNXtkxGYBQ&h=LQwxizfw0v3i0jrJqa4bAPgSbCLs-3x93FcETKyHORQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"32812a1d-bbda-4e44-b91f-0e45c70d47f4","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 4A58A4A30D194EF1B7F534488A9D949A Ref B: MAA201060516009 Ref C: 2025-02-11T23:35:15Z' + status: 200 OK + code: 200 + duration: 935.966884ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/32812a1d-bbda-4e44-b91f-0e45c70d47f4?api-version=2023-12-30&t=638749137091258394&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mHnl4xyBquZ2S5Smqm5PVsYKPGb3dIn4s5IXJNsP2igWy65DYuDN0eygsDDQOV36lkCwdK32XC3Rj80edPOd79N6aVVnvHup3N-S-Pc32Azuyb_nz-lWLoq0xSo9HdHm_K68z5gpTCdh_UZ63FWcefQjaxf3vmjd0WZ2vegNbM_Z7pGY28iN3U7JzkAXLLKtsdpi3EYqfzMMfD40125-Ex-h3nwRjL1TAMHZQLyQeI4GcxtuoFhqRNt_3HfvN16mnEm61D57ksYkI9zr6gxfPfBmJAy2soxYDzQbuj2R7XEb-3aDxEPxdBe1VkHTFGDd8Ddula5-Bby-qNXtkxGYBQ&h=LQwxizfw0v3i0jrJqa4bAPgSbCLs-3x93FcETKyHORQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"32812a1d-bbda-4e44-b91f-0e45c70d47f4","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 0404E0EA7B8C4E309B5FB9FD4F870AB9 Ref B: MAA201060516009 Ref C: 2025-02-11T23:36:22Z' + status: 200 OK + code: 200 + duration: 1.011343651s + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/32812a1d-bbda-4e44-b91f-0e45c70d47f4?api-version=2023-12-30&t=638749137091258394&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mHnl4xyBquZ2S5Smqm5PVsYKPGb3dIn4s5IXJNsP2igWy65DYuDN0eygsDDQOV36lkCwdK32XC3Rj80edPOd79N6aVVnvHup3N-S-Pc32Azuyb_nz-lWLoq0xSo9HdHm_K68z5gpTCdh_UZ63FWcefQjaxf3vmjd0WZ2vegNbM_Z7pGY28iN3U7JzkAXLLKtsdpi3EYqfzMMfD40125-Ex-h3nwRjL1TAMHZQLyQeI4GcxtuoFhqRNt_3HfvN16mnEm61D57ksYkI9zr6gxfPfBmJAy2soxYDzQbuj2R7XEb-3aDxEPxdBe1VkHTFGDd8Ddula5-Bby-qNXtkxGYBQ&h=LQwxizfw0v3i0jrJqa4bAPgSbCLs-3x93FcETKyHORQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"name":"32812a1d-bbda-4e44-b91f-0e45c70d47f4","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 890334A670164A6A886FD22B9BCA0B2E Ref B: MAA201060516009 Ref C: 2025-02-11T23:37:30Z' + status: 200 OK + code: 200 + duration: 998.152553ms + - 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: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/32812a1d-bbda-4e44-b91f-0e45c70d47f4?api-version=2023-12-30&t=638749137091258394&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=mHnl4xyBquZ2S5Smqm5PVsYKPGb3dIn4s5IXJNsP2igWy65DYuDN0eygsDDQOV36lkCwdK32XC3Rj80edPOd79N6aVVnvHup3N-S-Pc32Azuyb_nz-lWLoq0xSo9HdHm_K68z5gpTCdh_UZ63FWcefQjaxf3vmjd0WZ2vegNbM_Z7pGY28iN3U7JzkAXLLKtsdpi3EYqfzMMfD40125-Ex-h3nwRjL1TAMHZQLyQeI4GcxtuoFhqRNt_3HfvN16mnEm61D57ksYkI9zr6gxfPfBmJAy2soxYDzQbuj2R7XEb-3aDxEPxdBe1VkHTFGDd8Ddula5-Bby-qNXtkxGYBQ&h=LQwxizfw0v3i0jrJqa4bAPgSbCLs-3x93FcETKyHORQ + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"32812a1d-bbda-4e44-b91f-0e45c70d47f4","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 924482F39E8947219CB2721324C93A90 Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:38Z' + status: 200 OK + code: 200 + duration: 1.018959111s + - 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-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1555 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"identity":{"userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity":{"principalId":"ab4506d1-2085-4605-8a52-32cb715b91ff","tenantId":"00000000-0000-0000-0000-000000000000"}},"principalId":"00000000-0000-0000-0000-000000000000","type":"UserAssigned","tenantId":"00000000-0000-0000-0000-000000000000"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myAdmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotesthkcknu.mysql.database.azure.com","availabilityZone":"2","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":7,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T23:45:23.876008+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"East US","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu","name":"asotesthkcknu","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1555" + 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: 13D503BFC12449789F2015153FA67FDD Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:40Z' + status: 200 OK + code: 200 + duration: 1.245986037s + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1555 + uncompressed: false + body: '{"sku":{"name":"Standard_D4ds_v4","tier":"GeneralPurpose"},"identity":{"userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity":{"principalId":"ab4506d1-2085-4605-8a52-32cb715b91ff","tenantId":"00000000-0000-0000-0000-000000000000"}},"principalId":"00000000-0000-0000-0000-000000000000","type":"UserAssigned","tenantId":"00000000-0000-0000-0000-000000000000"},"systemData":{"createdAt":"2001-02-03T04:05:06Z"},"properties":{"administratorLogin":"myAdmin","storage":{"storageSizeGB":128,"iops":684,"autoGrow":"Enabled","autoIoScaling":"Disabled","storageSku":"Premium_LRS","logOnDisk":"Disabled"},"version":"8.0.21","state":"Ready","fullyQualifiedDomainName":"asotesthkcknu.mysql.database.azure.com","availabilityZone":"2","maintenanceWindow":{"customWindow":"Disabled","dayOfWeek":0,"startHour":0,"startMinute":0},"replicationRole":"None","replicaCapacity":10,"network":{"publicNetworkAccess":"Enabled"},"backup":{"backupRetentionDays":7,"backupIntervalHours":24,"geoRedundantBackup":"Disabled","earliestRestoreDate":"2025-02-11T23:45:23.876008+00:00"},"highAvailability":{"mode":"Disabled","state":"NotEnabled","standbyAvailabilityZone":""},"privateEndpointConnections":[]},"location":"East US","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu","name":"asotesthkcknu","type":"Microsoft.DBforMySQL/flexibleServers"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1555" + 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: 819059A91B1344E8BDF6DE402BA6C59C Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:43Z' + status: 200 OK + code: 200 + duration: 1.31864674s + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 379 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"ActiveDirectory","properties":{"administratorType":"ActiveDirectory","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity","login":"adminidentity","sid":"972a1f06-516a-42e8-9b88-573be33612a5","tenantId":"00000000-0000-0000-0000-000000000000"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "379" + Content-Type: + - application/json + Test-Request-Hash: + - e3881ee7516b161945b5c45c6bc33782ff88711e870508ffb69c0ea4c546536e + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/administrators/ActiveDirectory?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 108 + uncompressed: false + body: '{"operation":"UpsertActiveDirectoryAdministratorManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/376459a9-806c-42de-a4ad-be4b49dcdf77?api-version=2023-12-30&t=638749139279958245&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=hw9hDi3VEnkjeBWr97zD79Je5Gonsy0ESt18JIKQGZCwLwa_CTVwGvTBV87GDS4spxQv1piU1nZMYKpo9SPos6ZTrS46ULrdhPGXp1eo8vJttJ8JHb2vr6ET5Yn0D5c1smDc-xsB8MdN4NyKQjA7pTURtIs_O1wmYilKxNmFh_Dvf6A8r-mnqh_NLsKPykULvGOFZ0RjHDwHuy1LVSmGQWhJsM95V3815syX6m6-YAixaerkkxTBVqM6ffzR1CrjqY23j2VTr5eP9RYvXNpTJ6lHnfuyGc0KSCv4M5FQHapb7iHX6R9tAygneUJn02cbW0k4Wqova73AvIYCTe99DA&h=3AJg1Iqzu-xpeOIrpWnfhEZAq1koxypoyMFESvU7wsY + Cache-Control: + - no-cache + Content-Length: + - "108" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/operationResults/376459a9-806c-42de-a4ad-be4b49dcdf77?api-version=2023-12-30&t=638749139279958245&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=qF2tVJE9Xxeo_SM09cuLEC1D868QYA_4rKiC05jtCGYGPqIJ3o-hHgual9nuJMiQdB_fEjk55rsq3kksdbCW87ndKZXQ5Ghf8cNfqFqgJqr21qkY9QbVQDValWH5mTsMAD7yHU8xvYzsOtvp-8RQNcnh7j01Pj3kIDEuxLNRixWFgLhjVupULiL3jacB-J0V8iH4Npy0MNkDK1SbOQEE424PvJ901KSVJnRTSo0moI2hk17ttyYeNDIL7cWDaRVHfbLtmVXmlmFrdqjAWqWCp_PBxF6qvLTzCmuhgH_T0tmyalIrtcru3OSTMJI22c8fCcZRsxkuu05IMSOoQXHaOg&h=OYI2uusVW0ZVPpi3DERbrkuiI1vV_4EQQF3GE_ThQU4 + Pragma: + - no-cache + Retry-After: + - "60" + 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: 1699BF5DFB2644A6B815AD989CDE81EB Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:46Z' + status: 202 Accepted + code: 202 + duration: 1.574412423s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/376459a9-806c-42de-a4ad-be4b49dcdf77?api-version=2023-12-30&t=638749139279958245&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=hw9hDi3VEnkjeBWr97zD79Je5Gonsy0ESt18JIKQGZCwLwa_CTVwGvTBV87GDS4spxQv1piU1nZMYKpo9SPos6ZTrS46ULrdhPGXp1eo8vJttJ8JHb2vr6ET5Yn0D5c1smDc-xsB8MdN4NyKQjA7pTURtIs_O1wmYilKxNmFh_Dvf6A8r-mnqh_NLsKPykULvGOFZ0RjHDwHuy1LVSmGQWhJsM95V3815syX6m6-YAixaerkkxTBVqM6ffzR1CrjqY23j2VTr5eP9RYvXNpTJ6lHnfuyGc0KSCv4M5FQHapb7iHX6R9tAygneUJn02cbW0k4Wqova73AvIYCTe99DA&h=3AJg1Iqzu-xpeOIrpWnfhEZAq1koxypoyMFESvU7wsY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"376459a9-806c-42de-a4ad-be4b49dcdf77","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: F964D8E8D4CC4AA59A6EB324DC634A80 Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:51Z' + status: 200 OK + code: 200 + duration: 918.764008ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/administrators/ActiveDirectory?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 624 + uncompressed: false + body: '{"properties":{"administratorType":"ActiveDirectory","login":"adminidentity","sid":"972a1f06-516a-42e8-9b88-573be33612a5","tenantId":"00000000-0000-0000-0000-000000000000","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/administrators/ActiveDirectory","name":"ActiveDirectory","type":"Microsoft.DBforMySQL/flexibleServers/administrators"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "624" + 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: CEFC8224E61847FC843F8F521DAAFD83 Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:53Z' + status: 200 OK + code: 200 + duration: 1.163454931s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/administrators/ActiveDirectory?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 624 + uncompressed: false + body: '{"properties":{"administratorType":"ActiveDirectory","login":"adminidentity","sid":"972a1f06-516a-42e8-9b88-573be33612a5","tenantId":"00000000-0000-0000-0000-000000000000","identityResourceId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/administrators/ActiveDirectory","name":"ActiveDirectory","type":"Microsoft.DBforMySQL/flexibleServers/administrators"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "624" + 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: 4BFD65BEDF9B40ECBAD299557F9736E9 Ref B: MAA201060516009 Ref C: 2025-02-11T23:38:56Z' + status: 200 OK + code: 200 + duration: 1.099517668s + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 59 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"asotestwhtaxr","properties":{"charset":"utf8mb4"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "59" + Content-Type: + - application/json + Test-Request-Hash: + - 9a39c1343b52a7c74882545b054048ceb3ef1f47b7c3c60ba4797bea60f1751c + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/databases/asotestwhtaxr?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 94 + uncompressed: false + body: '{"operation":"UpsertServerDatabaseManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9688cd49-f01c-47c5-9249-7584f731d9f0?api-version=2023-12-30&t=638749139629631170&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=Lopt-Fp-1v0CW2gpZc7gKZzhA9sbm6mtuYRHp544SxN_tppRHpW_fanbXCT7eHSGM8npZQ0KtlWJhxNSOpz-ciJihvhOowa_1ugtQXaYdTXOZW0DJM4KdilqcGW2D4WU2pa6d2CUHisZKGL1bCLsXyDXXTCIsaLgMx7OYo5Cb3aLygyXhNCk9dNh8g4WaOnx-K0_G1gKPrKLE298uDtzs38OiM6bBY-O5Ko3SaCi40EwHFR7XtfqWRtEfxxirQ3vYPIxg5gjKlmOyxJZEYyY8SLJSYfnOaJp0nH8V_YI6vIoJk6k0RWEKrSIPnXhUk1iqRZ4VzRiUkwBPF1Unk4Kiw&h=PnpX4VsDAZiplnAMgx4evRxUK64_qTCvRqGXRUhfwZw + Cache-Control: + - no-cache + Content-Length: + - "94" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/operationResults/9688cd49-f01c-47c5-9249-7584f731d9f0?api-version=2023-12-30&t=638749139629787417&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=fQ70ig5xhhHxmWmzooGLDZmSVieYoh4YogrxVrEcFaZGupY9QB8eLXa3fABsA3r_mf3Jsjbsw73fttWFJq7rAZGicWXvqIcV7z8vP395tXhIB1H34zQAOmP_OsHci38jaOPFzABPh7ETP8KF2azO28IcmI5dxtdEX4hwfCJTT597LVz84rzlU0wpGdtzpkprsZRcfE_55f_mVs_nBZNow6CrrYIrjnjpGx1dy2-9XfiPRco6MEXkSi2MF_52dSq2ARa7tD-E6cqJuQPo4RQW5bzY7V5TFg9B1N1zD8RYffyGt1RyLhNtDLZzhUkHTyhTOV6vMhnBSbuZaIUt64b7Uw&h=i5ww2TDHTPtmcsbYvHdbOssDQgeSumHK2El2q4sEBIg + 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-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 1E226CE707804D82847342BC76DC1960 Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:21Z' + status: 202 Accepted + code: 202 + duration: 1.591974115s + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 91 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"asotestyotarc","properties":{"endIpAddress":"1.2.3.4","startIpAddress":"1.2.3.4"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "91" + Content-Type: + - application/json + Test-Request-Hash: + - 6499f9d260d9a03cfc2a1518856fdd0dc8cd089fb1d1fc721f9afdc99437d99a + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/firewallRules/asotestyotarc?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 98 + uncompressed: false + body: '{"operation":"UpsertServerFirewallRulesManagementOperation","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/edb89e9f-436c-499a-a70a-293cfa30aeaf?api-version=2023-12-30&t=638749139630767279&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=HYYOYBBOs_E6BDD2m1mYBMABU4mrbPOgPkAbPjvTwMsXnsDqyXCtz5jlrItC6sFxn66W_9Uds6x4x6n1tplXGQNhwWidsBLfBrvkJFrVGwWwf9JE1AZKgPYwlAi6lNTEitajU6ZSwqy-UcCNQpdMUyC401QCI956w062NYhJ1BdDGfUazdSKpVsYSWtzfPjM6iuFECJh4D_tjp_gNLob_MX6OQT_Q3C6MkKdngOu9XHjI3kHzUXKpGwJADz2pvrf4tJv2HaSw5u-QISQ_PoiJwF718nBN2t44DyD73MV2sdqQ7QHR-6C97L3Vg1o9R1k0SXMc1XZSFdLOOdUw0rhIg&h=ArXw2jRA2Xjk86O8DU8MfNuIMBVtKGvALwBTZC-Lx1I + Cache-Control: + - no-cache + Content-Length: + - "98" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/operationResults/edb89e9f-436c-499a-a70a-293cfa30aeaf?api-version=2023-12-30&t=638749139630923587&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=WQlF7MRfL5U7V72W-5b72wZvIw5P7_BoNvOSfoSe8FO8vuqiGdllnYOXca7CPMTbf4FlwkzXx1MAxFyYU4OT0gRpzCOMq55Cdw_OtOPMA0hICO9oWPbKRxAThXw-268VcP5o-qkx-VkJeidADo2v7j9SyWi1eiKPPOcVdR_5laC6bAXOgQEzz-e_rbK4O74p0_KGZES0TlGNvDSZ0nYjYssQcxP8KkTphxej5dTMv-YLkr9FbbIyxxqFaq8anBJ0F_yrAP0k0D3GUu_t3CJFY3rgT0-eovVRLFZhsaaejeYQJWF67Vy4dVJege9EAp_imJ7p8ppbnXGY4dGuS5wTag&h=p1_0HrlZernb87cON0pfZxujzlBLCZxQxQRcuCt8bbo + Pragma: + - no-cache + Retry-After: + - "60" + 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: 1495A87A36704976B9BCF4A40C733C1A Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:21Z' + status: 202 Accepted + code: 202 + duration: 1.598090354s + - id: 19 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 79 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"max_connections","properties":{"source":"user-override","value":"20"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "79" + Content-Type: + - application/json + Test-Request-Hash: + - b2de8c2d080b5500f2922ac481bfb2d6653a302197a52e0d055740cb3138943f + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/configurations/max_connections?api-version=2023-12-30 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 96 + uncompressed: false + body: '{"operation":"UpdateServerParameterManagementOperationV2","startTime":"2001-02-03T04:05:06Z"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + Cache-Control: + - no-cache + Content-Length: + - "96" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/operationResults/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632513136&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tVWqFjZQOcc5--7XlPtW6iAZQ36cLDWwtCpgDcuz6FXFlJElsj-u8XDLJ5lV-PFJnvVlgxktoX7VKZMUR_cE--ndUF2mcoV_Oj3_86TnHHxJz0iU6e5NNOlVGIb10lCmfsXRNNxDYDJr9nyZC90sVz74HL9g-ivUxm_93AxtYkRyIJYZv6oyTP4NaN2gAVmD8Psz1cCTGW2J2v8dUk5Xt45G8a_6714VcEqSJjnsglLCZL04Ur7Xd7p0M5ofiCcO0JKSd9f4XcdLCN3QlxUlFjUl94AAWvsQ8h2lZvhkNxYScWGyVtym2Upcn1mnbcvh5zKXAOJzzzZIG9B3rH7DbA&h=hP-6TiF9lOQVYmOlpg2E0DpzjcPIZk6JcGwGA5stPDc + 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-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 7AF22E49186F497D8FA93A7BB9B898AE Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:21Z' + status: 202 Accepted + code: 202 + duration: 1.759469139s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9688cd49-f01c-47c5-9249-7584f731d9f0?api-version=2023-12-30&t=638749139629631170&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=Lopt-Fp-1v0CW2gpZc7gKZzhA9sbm6mtuYRHp544SxN_tppRHpW_fanbXCT7eHSGM8npZQ0KtlWJhxNSOpz-ciJihvhOowa_1ugtQXaYdTXOZW0DJM4KdilqcGW2D4WU2pa6d2CUHisZKGL1bCLsXyDXXTCIsaLgMx7OYo5Cb3aLygyXhNCk9dNh8g4WaOnx-K0_G1gKPrKLE298uDtzs38OiM6bBY-O5Ko3SaCi40EwHFR7XtfqWRtEfxxirQ3vYPIxg5gjKlmOyxJZEYyY8SLJSYfnOaJp0nH8V_YI6vIoJk6k0RWEKrSIPnXhUk1iqRZ4VzRiUkwBPF1Unk4Kiw&h=PnpX4VsDAZiplnAMgx4evRxUK64_qTCvRqGXRUhfwZw + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9688cd49-f01c-47c5-9249-7584f731d9f0","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: EC25135598224239BA5BA3056ED76A5F Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:26Z' + status: 200 OK + code: 200 + duration: 956.894682ms + - 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/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/edb89e9f-436c-499a-a70a-293cfa30aeaf?api-version=2023-12-30&t=638749139630767279&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=HYYOYBBOs_E6BDD2m1mYBMABU4mrbPOgPkAbPjvTwMsXnsDqyXCtz5jlrItC6sFxn66W_9Uds6x4x6n1tplXGQNhwWidsBLfBrvkJFrVGwWwf9JE1AZKgPYwlAi6lNTEitajU6ZSwqy-UcCNQpdMUyC401QCI956w062NYhJ1BdDGfUazdSKpVsYSWtzfPjM6iuFECJh4D_tjp_gNLob_MX6OQT_Q3C6MkKdngOu9XHjI3kHzUXKpGwJADz2pvrf4tJv2HaSw5u-QISQ_PoiJwF718nBN2t44DyD73MV2sdqQ7QHR-6C97L3Vg1o9R1k0SXMc1XZSFdLOOdUw0rhIg&h=ArXw2jRA2Xjk86O8DU8MfNuIMBVtKGvALwBTZC-Lx1I + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"edb89e9f-436c-499a-a70a-293cfa30aeaf","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: 2C7AC970667A40A69A83E86844FFA1B1 Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:26Z' + status: 200 OK + code: 200 + duration: 990.911027ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: B9873B5B9D2A4DAEB1F611DBD99F2577 Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:26Z' + status: 200 OK + code: 200 + duration: 858.050719ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/databases/asotestwhtaxr?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 325 + uncompressed: false + body: '{"properties":{"charset":"utf8mb4","collation":"utf8mb4_0900_ai_ci"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/databases/asotestwhtaxr","name":"asotestwhtaxr","type":"Microsoft.DBforMySQL/flexibleServers/databases"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "325" + 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: 42FA2B8E59D3459B8D771FE88DBD0AFB Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:28Z' + status: 200 OK + code: 200 + duration: 1.138041127s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/databases/asotestwhtaxr?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 325 + uncompressed: false + body: '{"properties":{"charset":"utf8mb4","collation":"utf8mb4_0900_ai_ci"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/databases/asotestwhtaxr","name":"asotestwhtaxr","type":"Microsoft.DBforMySQL/flexibleServers/databases"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "325" + 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: C543212E0FA348C593C6CBA2D37F2AFF Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:30Z' + status: 200 OK + code: 200 + duration: 1.177752902s + - 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: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 903436E7C1A742828F5E28AB90874126 Ref B: MAA201060516009 Ref C: 2025-02-11T23:39:44Z' + status: 200 OK + code: 200 + duration: 908.206211ms + - 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: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 17D5638766A842298796744F9F2545A6 Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:03Z' + status: 200 OK + code: 200 + duration: 857.872718ms + - id: 27 + 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/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: BA81E167CCFC4BE48B8E71007424F4F2 Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:21Z' + status: 200 OK + code: 200 + duration: 933.455328ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/edb89e9f-436c-499a-a70a-293cfa30aeaf?api-version=2023-12-30&t=638749139630767279&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=HYYOYBBOs_E6BDD2m1mYBMABU4mrbPOgPkAbPjvTwMsXnsDqyXCtz5jlrItC6sFxn66W_9Uds6x4x6n1tplXGQNhwWidsBLfBrvkJFrVGwWwf9JE1AZKgPYwlAi6lNTEitajU6ZSwqy-UcCNQpdMUyC401QCI956w062NYhJ1BdDGfUazdSKpVsYSWtzfPjM6iuFECJh4D_tjp_gNLob_MX6OQT_Q3C6MkKdngOu9XHjI3kHzUXKpGwJADz2pvrf4tJv2HaSw5u-QISQ_PoiJwF718nBN2t44DyD73MV2sdqQ7QHR-6C97L3Vg1o9R1k0SXMc1XZSFdLOOdUw0rhIg&h=ArXw2jRA2Xjk86O8DU8MfNuIMBVtKGvALwBTZC-Lx1I + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 106 + uncompressed: false + body: '{"name":"edb89e9f-436c-499a-a70a-293cfa30aeaf","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "106" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "60" + 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: B10005155A764F0496A5BE98C9B505B8 Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:34Z' + status: 200 OK + code: 200 + duration: 915.389895ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/firewallRules/asotestyotarc?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 332 + uncompressed: false + body: '{"properties":{"startIpAddress":"1.2.3.4","endIpAddress":"1.2.3.4"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/firewallRules/asotestyotarc","name":"asotestyotarc","type":"Microsoft.DBforMySQL/flexibleServers/firewallRules"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "332" + 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: 99D5EE57D38E4923B13BB0FB5CD28863 Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:36Z' + status: 200 OK + code: 200 + duration: 1.168224654s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/firewallRules/asotestyotarc?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 332 + uncompressed: false + body: '{"properties":{"startIpAddress":"1.2.3.4","endIpAddress":"1.2.3.4"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/firewallRules/asotestyotarc","name":"asotestyotarc","type":"Microsoft.DBforMySQL/flexibleServers/firewallRules"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "332" + 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: 46405FF4018644A998238BC225596C19 Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:38Z' + status: 200 OK + code: 200 + duration: 1.179249426s + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: C3B73237360E4073B0C7F4D46843D633 Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:40Z' + status: 200 OK + code: 200 + duration: 968.840821ms + - 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: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: BBEB5C4455BF4A89BF463222DE8C491D Ref B: MAA201060516009 Ref C: 2025-02-11T23:40:58Z' + status: 200 OK + code: 200 + duration: 951.918673ms + - 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/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 107 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"InProgress","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "107" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: F21BE5021C2B41B59779211DAEDB6B6D Ref B: MAA201060516009 Ref C: 2025-02-11T23:41:17Z' + status: 200 OK + code: 200 + duration: 899.190031ms + - 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: + Test-Request-Attempt: + - "7" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DBforMySQL/locations/eastus/azureAsyncOperation/9cf053a5-d3a2-4552-8e5b-951557283917?api-version=2023-12-30&t=638749139632356775&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tUqvGnt6FVB1xfmblzIs30xcqMepl2iTjCD6oL3z0WSwiGW5rMWTyAaq6hFUn_AMopmqELfTwY9gh8EIBYgmdwxcEBDv8jWVBQEP1O1T0hdQU55YkInKmjmrSIfefFjeZhwIutpFlhTtlx8ZBaZLFSg5Z12OPzRiOPFF7PZBuzoeyfYLEQPdrQ-kCC5E0alf7-yQYlkN1Is6YcUhsPzam1u8QQwVmNgcdezyasUvdQlNFIpRDWca8u7Fx_GPJ62HyF9o6X7SMg8d3677vujEs9ST5xMkndFmRJnRBv5-fZoCNLlMPVrNER1FjC1-9Qc6riiW2bc-khLuabn0Jh3bpQ&h=SEH0BwQBydW52O0MrMaNs1kqYur-xR-kRoYJAO9JOVA + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 106 + uncompressed: false + body: '{"name":"9cf053a5-d3a2-4552-8e5b-951557283917","status":"Succeeded","startTime":"2001-02-03T04:05:06Z"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "106" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + 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: 0651AC1A10E64CCCBAB593D84518BFAF Ref B: MAA201060516009 Ref C: 2025-02-11T23:41:35Z' + status: 200 OK + code: 200 + duration: 967.077881ms + - 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: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/configurations/max_connections?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 687 + uncompressed: false + body: '{"properties":{"value":"20","currentValue":"20","description":"The maximum permitted number of simultaneous client connections.","defaultValue":"1365","dataType":"Integer","allowedValues":"10-2731","source":"user-override","isConfigPendingRestart":"False","isDynamicConfig":"True","isReadOnly":"False","documentationLink":"https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/configurations/max_connections","name":"max_connections","type":"Microsoft.DBforMySQL/flexibleServers/configurations"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "687" + 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: 70BD5506BEBE47259E8F643F38340C11 Ref B: MAA201060516009 Ref C: 2025-02-11T23:41:38Z' + status: 200 OK + code: 200 + duration: 1.180411655s + - id: 36 + 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-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/configurations/max_connections?api-version=2023-12-30 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 687 + uncompressed: false + body: '{"properties":{"value":"20","currentValue":"20","description":"The maximum permitted number of simultaneous client connections.","defaultValue":"1365","dataType":"Integer","allowedValues":"10-2731","source":"user-override","isConfigPendingRestart":"False","isDynamicConfig":"True","isReadOnly":"False","documentationLink":"https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/configurations/max_connections","name":"max_connections","type":"Microsoft.DBforMySQL/flexibleServers/configurations"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "687" + 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: 7759323B552C409482DF3E28C6BAA831 Ref B: MAA201060516009 Ref C: 2025-02-11T23:41:40Z' + status: 200 OK + code: 200 + duration: 1.193907384s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141087921546&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=olB0pRXhPVgCk8tYLDOX0oX1l5jO9_yXU_i4Qbb8gszAME_t7CFLz3kFtAfn4Ykm_nI950VdmeWpGk-jzMeuMMkCIOqr-OtkADY7KYzHsPcNTwlqxDVp7w8LuBxcH4N3SHNjiX08f6BHkK7s0G5oqg1EBDy_nvg5Cd5yQpe0DTbeOwSSRDbLetxw6-TTlMkGnVHZkvn9mpCPTg5Oh9UKzZmXl_URk_nPG6La-MOEciVuqJ-z7k5WRZVlh3Lq-DiHfxWHLOCATP5rV9ckOurgmTuInFHrJ868UT7wUbMRTYsUym3soqGRFPFCd8TRcZsComy7TaNRZwN3voBJ2dfFYQ&h=kmUJqkKEp6p_yGuzUgXN5-sYGVJorpZuOdVcZXytZAY + 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: FF7F6D89A6CB4287805F219399E2CA5B Ref B: MAA201060516009 Ref C: 2025-02-11T23:41:45Z' + status: 202 Accepted + code: 202 + duration: 3.542613638s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141087921546&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=olB0pRXhPVgCk8tYLDOX0oX1l5jO9_yXU_i4Qbb8gszAME_t7CFLz3kFtAfn4Ykm_nI950VdmeWpGk-jzMeuMMkCIOqr-OtkADY7KYzHsPcNTwlqxDVp7w8LuBxcH4N3SHNjiX08f6BHkK7s0G5oqg1EBDy_nvg5Cd5yQpe0DTbeOwSSRDbLetxw6-TTlMkGnVHZkvn9mpCPTg5Oh9UKzZmXl_URk_nPG6La-MOEciVuqJ-z7k5WRZVlh3Lq-DiHfxWHLOCATP5rV9ckOurgmTuInFHrJ868UT7wUbMRTYsUym3soqGRFPFCd8TRcZsComy7TaNRZwN3voBJ2dfFYQ&h=kmUJqkKEp6p_yGuzUgXN5-sYGVJorpZuOdVcZXytZAY + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141303166858&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=QVf_zYz90xskA_Jm1FtPYmMuRmRL9x0ir9IV5n07TEA_tsvcwztKnLgP6SD8tQPig5m-D6_TwjGiXPF39Ki-IxxRSGpG2_nJPfBvvB1vkyD8mc0DjnfC6jO5XYBYDr-zdZYcHsTNYb1Is7K4Z3Wmys2JlG-Dxs2BIhaicbv6GN0K6mY3-rU1Chkplq83saHwhknVc3N-bzLPJmlwDyEdD7s7fvnN_cisBriLaOqWIKY7C1OEhZJS7DofrCzLuI1Hn9Sa_MwQ9pOjUX2UxZxz36IwnKA8hyZS7av7MOnka8tgrj26gU0tJP_-wRyJ9Mq1i1I_0d-6Dc0Gf1wT3ANLzA&h=8TLGqb1iVOPv2WR10aOleSngUXk_ojjuXNoALKXKUtQ + 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: 81FAE16F8F124C28A695AF68BA7349F9 Ref B: MAA201060516009 Ref C: 2025-02-11T23:42:09Z' + status: 202 Accepted + code: 202 + duration: 1.217895469s + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141087921546&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=olB0pRXhPVgCk8tYLDOX0oX1l5jO9_yXU_i4Qbb8gszAME_t7CFLz3kFtAfn4Ykm_nI950VdmeWpGk-jzMeuMMkCIOqr-OtkADY7KYzHsPcNTwlqxDVp7w8LuBxcH4N3SHNjiX08f6BHkK7s0G5oqg1EBDy_nvg5Cd5yQpe0DTbeOwSSRDbLetxw6-TTlMkGnVHZkvn9mpCPTg5Oh9UKzZmXl_URk_nPG6La-MOEciVuqJ-z7k5WRZVlh3Lq-DiHfxWHLOCATP5rV9ckOurgmTuInFHrJ868UT7wUbMRTYsUym3soqGRFPFCd8TRcZsComy7TaNRZwN3voBJ2dfFYQ&h=kmUJqkKEp6p_yGuzUgXN5-sYGVJorpZuOdVcZXytZAY + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141490556269&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=WDYJSqMHgXprkGblfK0U2LRYpDzFtIgP7lkGAT9GakaesyGiqHyff1eaXYB5IMITkhjZNLIhDB4g52nsPB3Dv6gEifK4NZyvBmWK3EcvXUOVuSWOYEgS6gu60fFgrhQSG77vuWDfqj_BlQbJZD0JJwXRDsqSJuiKDuMFcKW1hujfFJ4vIxKrPSPFfvyeeg8l4EeLTzQHA3HdSQ23SWbbt3fVL99FUQR6SFcYAN4Q4AwXjaq5BqZUXd84IQPGgbFO8ijTijD9vYxiL3ihzc51z_GUDo6STPUGEIHc0Ue3LVtJN5wTK9ukMajCU8kEuHylUuxF_nlD_3Mvng-dhmklyw&h=eC_f-6BSXLsfzXdfOBJgSveb7hIekvKfNJxm81I75bg + 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: C4B1319399CC4B41BCF90E69DF032BEF Ref B: MAA201060516009 Ref C: 2025-02-11T23:42:28Z' + status: 202 Accepted + code: 202 + duration: 977.905127ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141087921546&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=olB0pRXhPVgCk8tYLDOX0oX1l5jO9_yXU_i4Qbb8gszAME_t7CFLz3kFtAfn4Ykm_nI950VdmeWpGk-jzMeuMMkCIOqr-OtkADY7KYzHsPcNTwlqxDVp7w8LuBxcH4N3SHNjiX08f6BHkK7s0G5oqg1EBDy_nvg5Cd5yQpe0DTbeOwSSRDbLetxw6-TTlMkGnVHZkvn9mpCPTg5Oh9UKzZmXl_URk_nPG6La-MOEciVuqJ-z7k5WRZVlh3Lq-DiHfxWHLOCATP5rV9ckOurgmTuInFHrJ868UT7wUbMRTYsUym3soqGRFPFCd8TRcZsComy7TaNRZwN3voBJ2dfFYQ&h=kmUJqkKEp6p_yGuzUgXN5-sYGVJorpZuOdVcZXytZAY + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141696400368&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=tAH5OgfJvUII5uX7Vf7BU1svbw-CMYZyO3CWtrrGJy3Zusu2IW0x5DkDOGnh7KtXHKbL1cvHMhS2l32A-5CaNJE5-MIfZxopP-lcqittQ7GEZ-gVTT6hvUO-DwQoEnF6Q_kDw_hr9XKFb6AX9S1zpykxNqGpKMFqLRJAyIXLGflQ8eIRiXWqNfwQXKIoeGqeyCDCFmkVEQlRIHpoy_hFnWrg6h6yNmBBrWPcU990fqInYtyuF761_tQTUd_Jck379G01OvIxaR123w3T35Bt0-MNRuXVjXVOfXDeK9bqIpmEKhlCwhL7vedg6Gqzg3qP4NngnUjn3cKPp3_XLMkN5g&h=k70cRtlt3UNCaivyvHLHgviZ8gNtho605yespwB-cWc + 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: 4FA2219701EC427A8D7F11D638B0881F Ref B: MAA201060516009 Ref C: 2025-02-11T23:42:48Z' + status: 202 Accepted + code: 202 + duration: 2.813518805s + - 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: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRNTlNXSFMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638749141087921546&c=MIIHpTCCBo2gAwIBAgITfwTbn828Ducmmj24MgAEBNufzTANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUwMTI1MTI1MTUzWhcNMjUwNzI0MTI1MTUzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL20TJQJbhV5Jrwzn-fiGrag_COjmaTwDy9Ir0oe1CLIfiJ9ageBVfcEmW-k5bUVL3eg6B8mQTEYE-FJDVVZ4jbJ9Qw8REpm2kBASDRwoItVVD_HBpJf1VhdViEPJPMDvLg0mAmde0X2m3HVEO6Y7eggJ9iL31DDv9PF-Xvn6x9xlWvO3_OCJReOoV_HCTDyzds4Pq9OySlnAGAozKYzOumbcVPz_WEMc_vwW80fjQLmdihJgp6_15qlnMdx48MQhVGT3y4gdbknMQJghyzTFcsASVncSqtmz8nAx5qT9dZ63iaF6E7Fbx76fnF4lx5K72ANX5cjlfVOig5jzgf8RPkCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQp8DW_okjTMbIBWANCvQr_FrvzazAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAA5sOyKXcQwQQAVKz9J8GIjVymZkoHVSft4TqdgNxSdoIAYkk_tYdx_dEZChJfSvIfzhzAb8k57EHRKNwKtP752SSUr0Q0oB60Y3Fq7il1fMKFTbVk9ZMTyOoo3hJmRwJaisv9rK2UVHWvwD2iUKD0IK_tHwy3m6bqbGDVKaRn1K9UYM39wEvEdy-k8J2z3Olfn6yYpcrVBHWzDzSy7TVdgUzaa0IZ670aJGPrNVYMvsCepP2_T_FdHVk4LoK9K4_0-GkZbvBLZPQO6FYgttg78s6Nn34TUcXWeTeeXArlkf48rbeL5fDY_CJyKYXLv3arwG7gUdcU5T8MGHeLLzcyo&s=olB0pRXhPVgCk8tYLDOX0oX1l5jO9_yXU_i4Qbb8gszAME_t7CFLz3kFtAfn4Ykm_nI950VdmeWpGk-jzMeuMMkCIOqr-OtkADY7KYzHsPcNTwlqxDVp7w8LuBxcH4N3SHNjiX08f6BHkK7s0G5oqg1EBDy_nvg5Cd5yQpe0DTbeOwSSRDbLetxw6-TTlMkGnVHZkvn9mpCPTg5Oh9UKzZmXl_URk_nPG6La-MOEciVuqJ-z7k5WRZVlh3Lq-DiHfxWHLOCATP5rV9ckOurgmTuInFHrJ868UT7wUbMRTYsUym3soqGRFPFCd8TRcZsComy7TaNRZwN3voBJ2dfFYQ&h=kmUJqkKEp6p_yGuzUgXN5-sYGVJorpZuOdVcZXytZAY + 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: 05A5A17C2E0D4BCDAE3EF54F93C0CBC4 Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:09Z' + status: 200 OK + code: 200 + duration: 1.112876201s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.ManagedIdentity/userAssignedIdentities/adminidentity?api-version=2018-11-30 + 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-mnswhs'' 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: CFD8C072BEAE48BC95CC4ADF4206B613 Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:12Z' + status: 404 Not Found + code: 404 + duration: 570.07674ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu?api-version=2023-12-30 + 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-mnswhs'' 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: CD010CEC916B473A9CE48A5FD2D263AA Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:12Z' + status: 404 Not Found + code: 404 + duration: 672.034996ms + - 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-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/configurations/max_connections?api-version=2023-12-30 + 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-mnswhs'' 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: C25B2AECC0E74EC99A67A9723FA47321 Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:18Z' + status: 404 Not Found + code: 404 + duration: 386.126993ms + - 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-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/administrators/ActiveDirectory?api-version=2023-12-30 + 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-mnswhs'' 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: C060822F9B9641C9B6EC6E794639E0C8 Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:18Z' + status: 404 Not Found + code: 404 + duration: 367.403078ms + - 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-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/firewallRules/asotestyotarc?api-version=2023-12-30 + 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-mnswhs'' 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: 58DCDD3769384ABDA4622E96E63A69C9 Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:18Z' + status: 404 Not Found + code: 404 + duration: 461.760959ms + - 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-mnswhs/providers/Microsoft.DBforMySQL/flexibleServers/asotesthkcknu/databases/asotestwhtaxr?api-version=2023-12-30 + 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-mnswhs'' 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: 45FBE1151FA34A20B043CBAB78E01EFB Ref B: MAA201060516009 Ref C: 2025-02-11T23:43:18Z' + status: 404 Not Found + code: 404 + duration: 467.906549ms From dfd132a8d879c0ca484b4a9ba3920d2d0886c6d3 Mon Sep 17 00:00:00 2001 From: Bevan Arps Date: Wed, 12 Feb 2025 01:27:51 +0000 Subject: [PATCH 8/8] Remove custom region from test --- .../controllers/dbformysql_flexibleserver_20231230_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go b/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go index 3717b49d03..fa1f6e98e2 100644 --- a/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go +++ b/v2/internal/controllers/dbformysql_flexibleserver_20231230_test.go @@ -24,8 +24,6 @@ func Test_DBForMySQL_FlexibleServer_20231230_CRUD(t *testing.T) { t.Parallel() tc := globalTestContext.ForTest(t) - tc.AzureRegion = to.Ptr("canadacentral") - rg := tc.CreateTestResourceGroupAndWait() secretName := "mysqlsecret" adminPasswordKey := "adminPassword"