diff --git a/docs/hugo/content/reference/_index.md b/docs/hugo/content/reference/_index.md index db8119205c3..0c10985eb7f 100644 --- a/docs/hugo/content/reference/_index.md +++ b/docs/hugo/content/reference/_index.md @@ -112,6 +112,17 @@ These are older versions of resources still available for use in the current rel To install the CRDs for these resources, your ASO configuration must include `appconfiguration.azure.com/*` as one of the configured CRD patterns. See [CRD Management in ASO](https://azure.github.io/azure-service-operator/guide/crd-management/) for details on doing this for both [Helm](https://azure.github.io/azure-service-operator/guide/crd-management/#helm) and [YAML](https://azure.github.io/azure-service-operator/guide/crd-management/#yaml) based installations. +### Next Release + +Development of these new resources is complete and they will be available in the next release of ASO. + +| Resource | ARM Version | CRD Version | Supported From | Sample | +|--------------------|-------------|-------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| +| ConfigurationStore | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_configurationstore.yaml) | +| KeyValue | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_keyvalue.yaml) | +| Replica | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_replica.yaml) | +| Snapshot | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_snapshot.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/appconfiguration/_index.md b/docs/hugo/content/reference/appconfiguration/_index.md index d7207737888..84248167050 100644 --- a/docs/hugo/content/reference/appconfiguration/_index.md +++ b/docs/hugo/content/reference/appconfiguration/_index.md @@ -5,6 +5,17 @@ no_list: true --- To install the CRDs for these resources, your ASO configuration must include `appconfiguration.azure.com/*` as one of the configured CRD patterns. See [CRD Management in ASO](https://azure.github.io/azure-service-operator/guide/crd-management/) for details on doing this for both [Helm](https://azure.github.io/azure-service-operator/guide/crd-management/#helm) and [YAML](https://azure.github.io/azure-service-operator/guide/crd-management/#yaml) based installations. +### Next Release + +Development of these new resources is complete and they will be available in the next release of ASO. + +| Resource | ARM Version | CRD Version | Supported From | Sample | +|--------------------|-------------|-------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| +| ConfigurationStore | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_configurationstore.yaml) | +| KeyValue | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_keyvalue.yaml) | +| Replica | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_replica.yaml) | +| Snapshot | 2024-06-01 | v20240601 | v2.17.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/appconfiguration/v20240601/v20240601_snapshot.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/appconfiguration/customizations/configuration_store_extension_types_gen.go b/v2/api/appconfiguration/customizations/configuration_store_extension_types_gen.go index eef7f1888b8..fa691b94d9e 100644 --- a/v2/api/appconfiguration/customizations/configuration_store_extension_types_gen.go +++ b/v2/api/appconfiguration/customizations/configuration_store_extension_types_gen.go @@ -5,7 +5,9 @@ package customizations import ( v20220501 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501" - storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" + v20220501s "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + v20240601s "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -16,5 +18,7 @@ type ConfigurationStoreExtension struct { func (extension *ConfigurationStoreExtension) GetExtendedResources() []genruntime.KubernetesResource { return []genruntime.KubernetesResource{ &v20220501.ConfigurationStore{}, - &storage.ConfigurationStore{}} + &v20220501s.ConfigurationStore{}, + &v20240601.ConfigurationStore{}, + &v20240601s.ConfigurationStore{}} } diff --git a/v2/api/appconfiguration/customizations/configuration_store_extensions.go b/v2/api/appconfiguration/customizations/configuration_store_extensions.go index dbf986048d4..25e60f49a0c 100644 --- a/v2/api/appconfiguration/customizations/configuration_store_extensions.go +++ b/v2/api/appconfiguration/customizations/configuration_store_extensions.go @@ -17,7 +17,7 @@ import ( v1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/conversion" - storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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/appconfiguration/customizations/configuration_store_extensions_test.go b/v2/api/appconfiguration/customizations/configuration_store_extensions_test.go index e9a251873d2..cddd3ea2208 100644 --- a/v2/api/appconfiguration/customizations/configuration_store_extensions_test.go +++ b/v2/api/appconfiguration/customizations/configuration_store_extensions_test.go @@ -11,7 +11,7 @@ import ( . "github.com/onsi/gomega" - appconfiguration "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" + appconfiguration "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" testreflect "github.com/Azure/azure-service-operator/v2/internal/testcommon/reflect" ) diff --git a/v2/api/appconfiguration/customizations/key_value_extension_types_gen.go b/v2/api/appconfiguration/customizations/key_value_extension_types_gen.go new file mode 100644 index 00000000000..aafc8b5e42c --- /dev/null +++ b/v2/api/appconfiguration/customizations/key_value_extension_types_gen.go @@ -0,0 +1,20 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package customizations + +import ( + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type KeyValueExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *KeyValueExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20240601.KeyValue{}, + &storage.KeyValue{}} +} diff --git a/v2/api/appconfiguration/customizations/replica_extension_types_gen.go b/v2/api/appconfiguration/customizations/replica_extension_types_gen.go new file mode 100644 index 00000000000..cc4ccea5514 --- /dev/null +++ b/v2/api/appconfiguration/customizations/replica_extension_types_gen.go @@ -0,0 +1,20 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package customizations + +import ( + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type ReplicaExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *ReplicaExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20240601.Replica{}, + &storage.Replica{}} +} diff --git a/v2/api/appconfiguration/customizations/snapshot_extension_types_gen.go b/v2/api/appconfiguration/customizations/snapshot_extension_types_gen.go new file mode 100644 index 00000000000..820cb4c5a69 --- /dev/null +++ b/v2/api/appconfiguration/customizations/snapshot_extension_types_gen.go @@ -0,0 +1,20 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package customizations + +import ( + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type SnapshotExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *SnapshotExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20240601.Snapshot{}, + &storage.Snapshot{}} +} diff --git a/v2/api/appconfiguration/customizations/structure.txt b/v2/api/appconfiguration/customizations/structure.txt index e4c7d342ded..231a8a29fb7 100644 --- a/v2/api/appconfiguration/customizations/structure.txt +++ b/v2/api/appconfiguration/customizations/structure.txt @@ -3,3 +3,9 @@ github.com/Azure/azure-service-operator/v2/api/appconfiguration/customizations ------------------------------------------------------------------------------ ConfigurationStoreExtension: Object (0 properties) +KeyValueExtension: Object (0 properties) + +ReplicaExtension: Object (0 properties) + +SnapshotExtension: Object (0 properties) + diff --git a/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen.go b/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen.go index df12b026250..124a3175d64 100644 --- a/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen.go +++ b/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen.go @@ -19,9 +19,6 @@ type ConfigurationStore_Spec struct { // Sku: The sku of the configuration store. Sku *Sku `json:"sku,omitempty"` - // SystemData: Resource system metadata. - SystemData *SystemData `json:"systemData,omitempty"` - // Tags: Resource tags. Tags map[string]string `json:"tags,omitempty"` } @@ -80,27 +77,6 @@ type Sku struct { Name *string `json:"name,omitempty"` } -// Metadata pertaining to creation and last modification of the resource. -type SystemData 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 `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 `json:"lastModifiedByType,omitempty"` -} - // +kubebuilder:validation:Enum={"Default","Recover"} type ConfigurationStoreProperties_CreateMode string @@ -153,42 +129,6 @@ var resourceIdentity_Type_Values = map[string]ResourceIdentity_Type{ "userassigned": ResourceIdentity_Type_UserAssigned, } -// +kubebuilder:validation:Enum={"Application","Key","ManagedIdentity","User"} -type SystemData_CreatedByType string - -const ( - SystemData_CreatedByType_Application = SystemData_CreatedByType("Application") - SystemData_CreatedByType_Key = SystemData_CreatedByType("Key") - SystemData_CreatedByType_ManagedIdentity = SystemData_CreatedByType("ManagedIdentity") - SystemData_CreatedByType_User = SystemData_CreatedByType("User") -) - -// Mapping from string to SystemData_CreatedByType -var systemData_CreatedByType_Values = map[string]SystemData_CreatedByType{ - "application": SystemData_CreatedByType_Application, - "key": SystemData_CreatedByType_Key, - "managedidentity": SystemData_CreatedByType_ManagedIdentity, - "user": SystemData_CreatedByType_User, -} - -// +kubebuilder:validation:Enum={"Application","Key","ManagedIdentity","User"} -type SystemData_LastModifiedByType string - -const ( - SystemData_LastModifiedByType_Application = SystemData_LastModifiedByType("Application") - SystemData_LastModifiedByType_Key = SystemData_LastModifiedByType("Key") - SystemData_LastModifiedByType_ManagedIdentity = SystemData_LastModifiedByType("ManagedIdentity") - SystemData_LastModifiedByType_User = SystemData_LastModifiedByType("User") -) - -// Mapping from string to SystemData_LastModifiedByType -var systemData_LastModifiedByType_Values = map[string]SystemData_LastModifiedByType{ - "application": SystemData_LastModifiedByType_Application, - "key": SystemData_LastModifiedByType_Key, - "managedidentity": SystemData_LastModifiedByType_ManagedIdentity, - "user": SystemData_LastModifiedByType_User, -} - // Information about the user assigned identity for the resource type UserAssignedIdentityDetails struct { } diff --git a/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen_test.go b/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen_test.go index fbe6bdf6f8b..e31134a734a 100644 --- a/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen_test.go +++ b/v2/api/appconfiguration/v1api20220501/arm/configuration_store_spec_types_gen_test.go @@ -175,7 +175,6 @@ func AddRelatedPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopt gens["Identity"] = gen.PtrOf(ResourceIdentityGenerator()) gens["Properties"] = gen.PtrOf(ConfigurationStorePropertiesGenerator()) gens["Sku"] = gen.PtrOf(SkuGenerator()) - gens["SystemData"] = gen.PtrOf(SystemDataGenerator()) } func Test_EncryptionProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { @@ -440,79 +439,6 @@ func AddIndependentPropertyGeneratorsForSku(gens map[string]gopter.Gen) { gens["Name"] = gen.PtrOf(gen.AlphaString()) } -func Test_SystemData_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 SystemData via JSON returns original", - prop.ForAll(RunJSONSerializationTestForSystemData, SystemDataGenerator())) - properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) -} - -// RunJSONSerializationTestForSystemData runs a test to see if a specific instance of SystemData round trips to JSON and back losslessly -func RunJSONSerializationTestForSystemData(subject SystemData) string { - // Serialize to JSON - bin, err := json.Marshal(subject) - if err != nil { - return err.Error() - } - - // Deserialize back into memory - var actual SystemData - err = json.Unmarshal(bin, &actual) - if err != nil { - return err.Error() - } - - // Check for outcome - match := cmp.Equal(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 instances for property testing - lazily instantiated by SystemDataGenerator() -var systemDataGenerator gopter.Gen - -// SystemDataGenerator returns a generator of SystemData instances for property testing. -func SystemDataGenerator() gopter.Gen { - if systemDataGenerator != nil { - return systemDataGenerator - } - - generators := make(map[string]gopter.Gen) - AddIndependentPropertyGeneratorsForSystemData(generators) - systemDataGenerator = gen.Struct(reflect.TypeOf(SystemData{}), generators) - - return systemDataGenerator -} - -// AddIndependentPropertyGeneratorsForSystemData is a factory method for creating gopter generators -func AddIndependentPropertyGeneratorsForSystemData(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_Application, - SystemData_CreatedByType_Key, - SystemData_CreatedByType_ManagedIdentity, - SystemData_CreatedByType_User)) - gens["LastModifiedAt"] = gen.PtrOf(gen.AlphaString()) - gens["LastModifiedBy"] = gen.PtrOf(gen.AlphaString()) - gens["LastModifiedByType"] = gen.PtrOf(gen.OneConstOf( - SystemData_LastModifiedByType_Application, - SystemData_LastModifiedByType_Key, - SystemData_LastModifiedByType_ManagedIdentity, - SystemData_LastModifiedByType_User)) -} - func Test_UserAssignedIdentityDetails_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/appconfiguration/v1api20220501/arm/structure.txt b/v2/api/appconfiguration/v1api20220501/arm/structure.txt index b4859b36e72..08aa25e1294 100644 --- a/v2/api/appconfiguration/v1api20220501/arm/structure.txt +++ b/v2/api/appconfiguration/v1api20220501/arm/structure.txt @@ -61,7 +61,7 @@ ConfigurationStore_STATUS: Object (9 properties) ├── Tags: map[string]string └── Type: *string -ConfigurationStore_Spec: Object (7 properties) +ConfigurationStore_Spec: Object (6 properties) ├── Identity: *Object (2 properties) │ ├── Type: *Enum (4 values) │ │ ├── "None" @@ -87,20 +87,5 @@ ConfigurationStore_Spec: Object (7 properties) │ └── SoftDeleteRetentionInDays: *int ├── Sku: *Object (1 property) │ └── 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" └── Tags: map[string]string diff --git a/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen.go b/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen.go index f6fef9a7bfb..6e3edbd91a5 100644 --- a/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen.go +++ b/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen.go @@ -51,22 +51,36 @@ var _ conversion.Convertible = &ConfigurationStore{} // ConvertFrom populates our ConfigurationStore from the provided hub ConfigurationStore func (store *ConfigurationStore) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.ConfigurationStore) - if !ok { - return fmt.Errorf("expected appconfiguration/v1api20220501/storage/ConfigurationStore but received %T instead", hub) + // intermediate variable for conversion + var source storage.ConfigurationStore + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") } - return store.AssignProperties_From_ConfigurationStore(source) + err = store.AssignProperties_From_ConfigurationStore(&source) + if err != nil { + return eris.Wrap(err, "converting from source to store") + } + + return nil } // ConvertTo populates the provided hub ConfigurationStore from our ConfigurationStore func (store *ConfigurationStore) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.ConfigurationStore) - if !ok { - return fmt.Errorf("expected appconfiguration/v1api20220501/storage/ConfigurationStore but received %T instead", hub) + // intermediate variable for conversion + var destination storage.ConfigurationStore + err := store.AssignProperties_To_ConfigurationStore(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from store") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return store.AssignProperties_To_ConfigurationStore(destination) + return nil } var _ configmaps.Exporter = &ConfigurationStore{} @@ -89,17 +103,6 @@ func (store *ConfigurationStore) SecretDestinationExpressions() []*core.Destinat return store.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &ConfigurationStore{} - -// InitializeSpec initializes the spec for this resource from the given status -func (store *ConfigurationStore) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*ConfigurationStore_STATUS); ok { - return store.Spec.Initialize_From_ConfigurationStore_STATUS(s) - } - - return fmt.Errorf("expected Status of type ConfigurationStore_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &ConfigurationStore{} // AzureName returns the Azure name of the resource @@ -300,9 +303,6 @@ type ConfigurationStore_Spec struct { // deleted. SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` - // SystemData: Resource system metadata. - SystemData *SystemData `json:"systemData,omitempty"` - // Tags: Resource tags. Tags map[string]string `json:"tags,omitempty"` } @@ -387,16 +387,6 @@ func (store *ConfigurationStore_Spec) ConvertToARM(resolved genruntime.ConvertTo result.Sku = &sku } - // Set property "SystemData": - if store.SystemData != nil { - systemData_ARM, err := store.SystemData.ConvertToARM(resolved) - if err != nil { - return nil, err - } - systemData := *systemData_ARM.(*arm.SystemData) - result.SystemData = &systemData - } - // Set property "Tags": if store.Tags != nil { result.Tags = make(map[string]string, len(store.Tags)) @@ -521,17 +511,6 @@ func (store *ConfigurationStore_Spec) PopulateFromARM(owner genruntime.Arbitrary } } - // Set property "SystemData": - if typedInput.SystemData != nil { - var systemData1 SystemData - err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) - if err != nil { - return err - } - systemData := systemData1 - store.SystemData = &systemData - } - // Set property "Tags": if typedInput.Tags != nil { store.Tags = make(map[string]string, len(typedInput.Tags)) @@ -696,18 +675,6 @@ func (store *ConfigurationStore_Spec) AssignProperties_From_ConfigurationStore_S // SoftDeleteRetentionInDays store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) - // SystemData - if source.SystemData != nil { - var systemDatum SystemData - err := systemDatum.AssignProperties_From_SystemData(source.SystemData) - if err != nil { - return eris.Wrap(err, "calling AssignProperties_From_SystemData() to populate field SystemData") - } - store.SystemData = &systemDatum - } else { - store.SystemData = nil - } - // Tags store.Tags = genruntime.CloneMapOfStringToString(source.Tags) @@ -820,18 +787,6 @@ func (store *ConfigurationStore_Spec) AssignProperties_To_ConfigurationStore_Spe // SoftDeleteRetentionInDays destination.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(store.SoftDeleteRetentionInDays) - // SystemData - if store.SystemData != nil { - var systemDatum storage.SystemData - err := store.SystemData.AssignProperties_To_SystemData(&systemDatum) - if err != nil { - return eris.Wrap(err, "calling AssignProperties_To_SystemData() to populate field SystemData") - } - destination.SystemData = &systemDatum - } else { - destination.SystemData = nil - } - // Tags destination.Tags = genruntime.CloneMapOfStringToString(store.Tags) @@ -846,102 +801,6 @@ func (store *ConfigurationStore_Spec) AssignProperties_To_ConfigurationStore_Spe return nil } -// Initialize_From_ConfigurationStore_STATUS populates our ConfigurationStore_Spec from the provided source ConfigurationStore_STATUS -func (store *ConfigurationStore_Spec) Initialize_From_ConfigurationStore_STATUS(source *ConfigurationStore_STATUS) error { - - // CreateMode - if source.CreateMode != nil { - createMode := genruntime.ToEnum(string(*source.CreateMode), configurationStoreProperties_CreateMode_Values) - store.CreateMode = &createMode - } else { - store.CreateMode = nil - } - - // DisableLocalAuth - if source.DisableLocalAuth != nil { - disableLocalAuth := *source.DisableLocalAuth - store.DisableLocalAuth = &disableLocalAuth - } else { - store.DisableLocalAuth = nil - } - - // EnablePurgeProtection - if source.EnablePurgeProtection != nil { - enablePurgeProtection := *source.EnablePurgeProtection - store.EnablePurgeProtection = &enablePurgeProtection - } else { - store.EnablePurgeProtection = nil - } - - // Encryption - if source.Encryption != nil { - var encryption EncryptionProperties - err := encryption.Initialize_From_EncryptionProperties_STATUS(source.Encryption) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_EncryptionProperties_STATUS() to populate field Encryption") - } - store.Encryption = &encryption - } else { - store.Encryption = nil - } - - // Identity - if source.Identity != nil { - var identity ResourceIdentity - err := identity.Initialize_From_ResourceIdentity_STATUS(source.Identity) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ResourceIdentity_STATUS() to populate field Identity") - } - store.Identity = &identity - } else { - store.Identity = nil - } - - // Location - store.Location = genruntime.ClonePointerToString(source.Location) - - // PublicNetworkAccess - if source.PublicNetworkAccess != nil { - publicNetworkAccess := genruntime.ToEnum(string(*source.PublicNetworkAccess), configurationStoreProperties_PublicNetworkAccess_Values) - store.PublicNetworkAccess = &publicNetworkAccess - } else { - store.PublicNetworkAccess = nil - } - - // Sku - if source.Sku != nil { - var sku Sku - err := sku.Initialize_From_Sku_STATUS(source.Sku) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_Sku_STATUS() to populate field Sku") - } - store.Sku = &sku - } else { - store.Sku = nil - } - - // SoftDeleteRetentionInDays - store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) - - // SystemData - if source.SystemData != nil { - var systemDatum SystemData - err := systemDatum.Initialize_From_SystemData_STATUS(source.SystemData) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_SystemData_STATUS() to populate field SystemData") - } - store.SystemData = &systemDatum - } else { - store.SystemData = nil - } - - // Tags - store.Tags = genruntime.CloneMapOfStringToString(source.Tags) - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (store *ConfigurationStore_Spec) OriginalVersion() string { return GroupVersion.Version @@ -1841,25 +1700,6 @@ func (properties *EncryptionProperties) AssignProperties_To_EncryptionProperties return nil } -// Initialize_From_EncryptionProperties_STATUS populates our EncryptionProperties from the provided source EncryptionProperties_STATUS -func (properties *EncryptionProperties) Initialize_From_EncryptionProperties_STATUS(source *EncryptionProperties_STATUS) error { - - // KeyVaultProperties - if source.KeyVaultProperties != nil { - var keyVaultProperty KeyVaultProperties - err := keyVaultProperty.Initialize_From_KeyVaultProperties_STATUS(source.KeyVaultProperties) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_KeyVaultProperties_STATUS() to populate field KeyVaultProperties") - } - properties.KeyVaultProperties = &keyVaultProperty - } else { - properties.KeyVaultProperties = nil - } - - // No error - return nil -} - // The encryption settings for a configuration store. type EncryptionProperties_STATUS struct { // KeyVaultProperties: Key vault properties. @@ -2141,33 +1981,6 @@ func (identity *ResourceIdentity) AssignProperties_To_ResourceIdentity(destinati return nil } -// Initialize_From_ResourceIdentity_STATUS populates our ResourceIdentity from the provided source ResourceIdentity_STATUS -func (identity *ResourceIdentity) Initialize_From_ResourceIdentity_STATUS(source *ResourceIdentity_STATUS) error { - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), resourceIdentity_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 -} - // An identity that can be associated with a resource. type ResourceIdentity_STATUS struct { // PrincipalId: The principal id of the identity. This property will only be provided for a system-assigned identity. @@ -2397,16 +2210,6 @@ func (sku *Sku) AssignProperties_To_Sku(destination *storage.Sku) error { return nil } -// Initialize_From_Sku_STATUS populates our Sku from the provided source Sku_STATUS -func (sku *Sku) Initialize_From_Sku_STATUS(source *Sku_STATUS) error { - - // Name - sku.Name = genruntime.ClonePointerToString(source.Name) - - // No error - return nil -} - // Describes a configuration store SKU. type Sku_STATUS struct { // Name: The SKU name of the configuration store. @@ -2466,250 +2269,6 @@ func (sku *Sku_STATUS) AssignProperties_To_Sku_STATUS(destination *storage.Sku_S return nil } -// Metadata pertaining to creation and last modification of the resource. -type SystemData 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 `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 `json:"lastModifiedByType,omitempty"` -} - -var _ genruntime.ARMTransformer = &SystemData{} - -// ConvertToARM converts from a Kubernetes CRD object to an ARM object -func (data *SystemData) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { - if data == nil { - return nil, nil - } - result := &arm.SystemData{} - - // Set property "CreatedAt": - if data.CreatedAt != nil { - createdAt := *data.CreatedAt - result.CreatedAt = &createdAt - } - - // Set property "CreatedBy": - if data.CreatedBy != nil { - createdBy := *data.CreatedBy - result.CreatedBy = &createdBy - } - - // Set property "CreatedByType": - if data.CreatedByType != nil { - var temp string - temp = string(*data.CreatedByType) - createdByType := arm.SystemData_CreatedByType(temp) - result.CreatedByType = &createdByType - } - - // Set property "LastModifiedAt": - if data.LastModifiedAt != nil { - lastModifiedAt := *data.LastModifiedAt - result.LastModifiedAt = &lastModifiedAt - } - - // Set property "LastModifiedBy": - if data.LastModifiedBy != nil { - lastModifiedBy := *data.LastModifiedBy - result.LastModifiedBy = &lastModifiedBy - } - - // Set property "LastModifiedByType": - if data.LastModifiedByType != nil { - var temp string - temp = string(*data.LastModifiedByType) - lastModifiedByType := arm.SystemData_LastModifiedByType(temp) - result.LastModifiedByType = &lastModifiedByType - } - return result, nil -} - -// NewEmptyARMValue returns an empty ARM value suitable for deserializing into -func (data *SystemData) NewEmptyARMValue() genruntime.ARMResourceStatus { - return &arm.SystemData{} -} - -// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object -func (data *SystemData) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { - typedInput, ok := armInput.(arm.SystemData) - if !ok { - return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SystemData, 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(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(temp) - data.LastModifiedByType = &lastModifiedByType - } - - // No error - return nil -} - -// AssignProperties_From_SystemData populates our SystemData from the provided source SystemData -func (data *SystemData) AssignProperties_From_SystemData(source *storage.SystemData) 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_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_Values) - data.LastModifiedByType = &lastModifiedByTypeTemp - } else { - data.LastModifiedByType = nil - } - - // No error - return nil -} - -// AssignProperties_To_SystemData populates the provided destination SystemData from our SystemData -func (data *SystemData) AssignProperties_To_SystemData(destination *storage.SystemData) 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 -} - -// Initialize_From_SystemData_STATUS populates our SystemData from the provided source SystemData_STATUS -func (data *SystemData) Initialize_From_SystemData_STATUS(source *SystemData_STATUS) error { - - // CreatedAt - data.CreatedAt = genruntime.ClonePointerToString(source.CreatedAt) - - // CreatedBy - data.CreatedBy = genruntime.ClonePointerToString(source.CreatedBy) - - // CreatedByType - if source.CreatedByType != nil { - createdByType := genruntime.ToEnum(string(*source.CreatedByType), systemData_CreatedByType_Values) - data.CreatedByType = &createdByType - } else { - data.CreatedByType = nil - } - - // LastModifiedAt - data.LastModifiedAt = genruntime.ClonePointerToString(source.LastModifiedAt) - - // LastModifiedBy - data.LastModifiedBy = genruntime.ClonePointerToString(source.LastModifiedBy) - - // LastModifiedByType - if source.LastModifiedByType != nil { - lastModifiedByType := genruntime.ToEnum(string(*source.LastModifiedByType), systemData_LastModifiedByType_Values) - data.LastModifiedByType = &lastModifiedByType - } else { - data.LastModifiedByType = 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). @@ -3230,19 +2789,6 @@ func (properties *KeyVaultProperties) AssignProperties_To_KeyVaultProperties(des return nil } -// Initialize_From_KeyVaultProperties_STATUS populates our KeyVaultProperties from the provided source KeyVaultProperties_STATUS -func (properties *KeyVaultProperties) Initialize_From_KeyVaultProperties_STATUS(source *KeyVaultProperties_STATUS) error { - - // IdentityClientId - properties.IdentityClientId = genruntime.ClonePointerToString(source.IdentityClientId) - - // KeyIdentifier - properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) - - // No error - return nil -} - // Settings concerning key vault encryption for a configuration store. type KeyVaultProperties_STATUS struct { // IdentityClientId: The client id of the identity which will be used to access key vault. @@ -3352,24 +2898,6 @@ var resourceIdentity_Type_STATUS_Values = map[string]ResourceIdentity_Type_STATU "userassigned": ResourceIdentity_Type_STATUS_UserAssigned, } -// +kubebuilder:validation:Enum={"Application","Key","ManagedIdentity","User"} -type SystemData_CreatedByType string - -const ( - SystemData_CreatedByType_Application = SystemData_CreatedByType("Application") - SystemData_CreatedByType_Key = SystemData_CreatedByType("Key") - SystemData_CreatedByType_ManagedIdentity = SystemData_CreatedByType("ManagedIdentity") - SystemData_CreatedByType_User = SystemData_CreatedByType("User") -) - -// Mapping from string to SystemData_CreatedByType -var systemData_CreatedByType_Values = map[string]SystemData_CreatedByType{ - "application": SystemData_CreatedByType_Application, - "key": SystemData_CreatedByType_Key, - "managedidentity": SystemData_CreatedByType_ManagedIdentity, - "user": SystemData_CreatedByType_User, -} - type SystemData_CreatedByType_STATUS string const ( @@ -3387,24 +2915,6 @@ var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType "user": SystemData_CreatedByType_STATUS_User, } -// +kubebuilder:validation:Enum={"Application","Key","ManagedIdentity","User"} -type SystemData_LastModifiedByType string - -const ( - SystemData_LastModifiedByType_Application = SystemData_LastModifiedByType("Application") - SystemData_LastModifiedByType_Key = SystemData_LastModifiedByType("Key") - SystemData_LastModifiedByType_ManagedIdentity = SystemData_LastModifiedByType("ManagedIdentity") - SystemData_LastModifiedByType_User = SystemData_LastModifiedByType("User") -) - -// Mapping from string to SystemData_LastModifiedByType -var systemData_LastModifiedByType_Values = map[string]SystemData_LastModifiedByType{ - "application": SystemData_LastModifiedByType_Application, - "key": SystemData_LastModifiedByType_Key, - "managedidentity": SystemData_LastModifiedByType_ManagedIdentity, - "user": SystemData_LastModifiedByType_User, -} - type SystemData_LastModifiedByType_STATUS string const ( diff --git a/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen_test.go b/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen_test.go index 3a5e3f3a9e3..68dc49d502c 100644 --- a/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen_test.go +++ b/v2/api/appconfiguration/v1api20220501/configuration_store_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20220501 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" + v20220501s "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" + v20240601s "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -36,7 +37,7 @@ func RunResourceConversionTestForConfigurationStore(subject ConfigurationStore) copied := subject.DeepCopy() // Convert to our hub version - var hub storage.ConfigurationStore + var hub v20240601s.ConfigurationStore err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -78,7 +79,7 @@ func RunPropertyAssignmentTestForConfigurationStore(subject ConfigurationStore) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ConfigurationStore + var other v20220501s.ConfigurationStore err := copied.AssignProperties_To_ConfigurationStore(&other) if err != nil { return err.Error() @@ -181,7 +182,7 @@ func RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets(subject Confi copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ConfigurationStoreOperatorSecrets + var other v20220501s.ConfigurationStoreOperatorSecrets err := copied.AssignProperties_To_ConfigurationStoreOperatorSecrets(&other) if err != nil { return err.Error() @@ -278,7 +279,7 @@ func RunPropertyAssignmentTestForConfigurationStoreOperatorSpec(subject Configur copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ConfigurationStoreOperatorSpec + var other v20220501s.ConfigurationStoreOperatorSpec err := copied.AssignProperties_To_ConfigurationStoreOperatorSpec(&other) if err != nil { return err.Error() @@ -381,7 +382,7 @@ func RunPropertyAssignmentTestForConfigurationStore_STATUS(subject Configuration copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ConfigurationStore_STATUS + var other v20220501s.ConfigurationStore_STATUS err := copied.AssignProperties_To_ConfigurationStore_STATUS(&other) if err != nil { return err.Error() @@ -522,7 +523,7 @@ func RunPropertyAssignmentTestForConfigurationStore_Spec(subject ConfigurationSt copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ConfigurationStore_Spec + var other v20220501s.ConfigurationStore_Spec err := copied.AssignProperties_To_ConfigurationStore_Spec(&other) if err != nil { return err.Error() @@ -632,7 +633,6 @@ func AddRelatedPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopt gens["Identity"] = gen.PtrOf(ResourceIdentityGenerator()) gens["OperatorSpec"] = gen.PtrOf(ConfigurationStoreOperatorSpecGenerator()) gens["Sku"] = gen.PtrOf(SkuGenerator()) - gens["SystemData"] = gen.PtrOf(SystemDataGenerator()) } func Test_EncryptionProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { @@ -652,7 +652,7 @@ func RunPropertyAssignmentTestForEncryptionProperties(subject EncryptionProperti copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.EncryptionProperties + var other v20220501s.EncryptionProperties err := copied.AssignProperties_To_EncryptionProperties(&other) if err != nil { return err.Error() @@ -755,7 +755,7 @@ func RunPropertyAssignmentTestForEncryptionProperties_STATUS(subject EncryptionP copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.EncryptionProperties_STATUS + var other v20220501s.EncryptionProperties_STATUS err := copied.AssignProperties_To_EncryptionProperties_STATUS(&other) if err != nil { return err.Error() @@ -858,7 +858,7 @@ func RunPropertyAssignmentTestForKeyVaultProperties(subject KeyVaultProperties) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.KeyVaultProperties + var other v20220501s.KeyVaultProperties err := copied.AssignProperties_To_KeyVaultProperties(&other) if err != nil { return err.Error() @@ -961,7 +961,7 @@ func RunPropertyAssignmentTestForKeyVaultProperties_STATUS(subject KeyVaultPrope copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.KeyVaultProperties_STATUS + var other v20220501s.KeyVaultProperties_STATUS err := copied.AssignProperties_To_KeyVaultProperties_STATUS(&other) if err != nil { return err.Error() @@ -1065,7 +1065,7 @@ func RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS(subje copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.PrivateEndpointConnectionReference_STATUS + var other v20220501s.PrivateEndpointConnectionReference_STATUS err := copied.AssignProperties_To_PrivateEndpointConnectionReference_STATUS(&other) if err != nil { return err.Error() @@ -1168,7 +1168,7 @@ func RunPropertyAssignmentTestForResourceIdentity(subject ResourceIdentity) stri copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceIdentity + var other v20220501s.ResourceIdentity err := copied.AssignProperties_To_ResourceIdentity(&other) if err != nil { return err.Error() @@ -1288,7 +1288,7 @@ func RunPropertyAssignmentTestForResourceIdentity_STATUS(subject ResourceIdentit copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ResourceIdentity_STATUS + var other v20220501s.ResourceIdentity_STATUS err := copied.AssignProperties_To_ResourceIdentity_STATUS(&other) if err != nil { return err.Error() @@ -1413,7 +1413,7 @@ func RunPropertyAssignmentTestForSku(subject Sku) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Sku + var other v20220501s.Sku err := copied.AssignProperties_To_Sku(&other) if err != nil { return err.Error() @@ -1515,7 +1515,7 @@ func RunPropertyAssignmentTestForSku_STATUS(subject Sku_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Sku_STATUS + var other v20220501s.Sku_STATUS err := copied.AssignProperties_To_Sku_STATUS(&other) if err != nil { return err.Error() @@ -1600,121 +1600,6 @@ func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { gens["Name"] = gen.PtrOf(gen.AlphaString()) } -func Test_SystemData_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { - t.Parallel() - parameters := gopter.DefaultTestParameters() - parameters.MaxSize = 10 - properties := gopter.NewProperties(parameters) - properties.Property( - "Round trip from SystemData to SystemData via AssignProperties_To_SystemData & AssignProperties_From_SystemData returns original", - prop.ForAll(RunPropertyAssignmentTestForSystemData, SystemDataGenerator())) - properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) -} - -// RunPropertyAssignmentTestForSystemData tests if a specific instance of SystemData can be assigned to storage and back losslessly -func RunPropertyAssignmentTestForSystemData(subject SystemData) 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 - err := copied.AssignProperties_To_SystemData(&other) - if err != nil { - return err.Error() - } - - // Use AssignPropertiesFrom() to convert back to our original type - var actual SystemData - err = actual.AssignProperties_From_SystemData(&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_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 SystemData via JSON returns original", - prop.ForAll(RunJSONSerializationTestForSystemData, SystemDataGenerator())) - properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) -} - -// RunJSONSerializationTestForSystemData runs a test to see if a specific instance of SystemData round trips to JSON and back losslessly -func RunJSONSerializationTestForSystemData(subject SystemData) string { - // Serialize to JSON - bin, err := json.Marshal(subject) - if err != nil { - return err.Error() - } - - // Deserialize back into memory - var actual SystemData - err = json.Unmarshal(bin, &actual) - if err != nil { - return err.Error() - } - - // Check for outcome - match := cmp.Equal(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 instances for property testing - lazily instantiated by SystemDataGenerator() -var systemDataGenerator gopter.Gen - -// SystemDataGenerator returns a generator of SystemData instances for property testing. -func SystemDataGenerator() gopter.Gen { - if systemDataGenerator != nil { - return systemDataGenerator - } - - generators := make(map[string]gopter.Gen) - AddIndependentPropertyGeneratorsForSystemData(generators) - systemDataGenerator = gen.Struct(reflect.TypeOf(SystemData{}), generators) - - return systemDataGenerator -} - -// AddIndependentPropertyGeneratorsForSystemData is a factory method for creating gopter generators -func AddIndependentPropertyGeneratorsForSystemData(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_Application, - SystemData_CreatedByType_Key, - SystemData_CreatedByType_ManagedIdentity, - SystemData_CreatedByType_User)) - gens["LastModifiedAt"] = gen.PtrOf(gen.AlphaString()) - gens["LastModifiedBy"] = gen.PtrOf(gen.AlphaString()) - gens["LastModifiedByType"] = gen.PtrOf(gen.OneConstOf( - SystemData_LastModifiedByType_Application, - SystemData_LastModifiedByType_Key, - SystemData_LastModifiedByType_ManagedIdentity, - SystemData_LastModifiedByType_User)) -} - func Test_SystemData_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1732,7 +1617,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 v20220501s.SystemData_STATUS err := copied.AssignProperties_To_SystemData_STATUS(&other) if err != nil { return err.Error() @@ -1847,7 +1732,7 @@ func RunPropertyAssignmentTestForUserAssignedIdentityDetails(subject UserAssigne copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserAssignedIdentityDetails + var other v20220501s.UserAssignedIdentityDetails err := copied.AssignProperties_To_UserAssignedIdentityDetails(&other) if err != nil { return err.Error() @@ -1944,7 +1829,7 @@ func RunPropertyAssignmentTestForUserIdentity_STATUS(subject UserIdentity_STATUS copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserIdentity_STATUS + var other v20220501s.UserIdentity_STATUS err := copied.AssignProperties_To_UserIdentity_STATUS(&other) if err != nil { return err.Error() diff --git a/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen.go b/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen.go index b3916660014..5df2512bd68 100644 --- a/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen.go +++ b/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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,15 +14,12 @@ 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=appconfiguration.azure.com,resources=configurationstores,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=appconfiguration.azure.com,resources={configurationstores/status,configurationstores/finalizers},verbs=get;update;patch - // +kubebuilder:object:root=true // +kubebuilder:resource:categories={azure,appconfiguration} // +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" @@ -48,6 +47,28 @@ func (store *ConfigurationStore) SetConditions(conditions conditions.Conditions) store.Status.Conditions = conditions } +var _ conversion.Convertible = &ConfigurationStore{} + +// ConvertFrom populates our ConfigurationStore from the provided hub ConfigurationStore +func (store *ConfigurationStore) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.ConfigurationStore) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/ConfigurationStore but received %T instead", hub) + } + + return store.AssignProperties_From_ConfigurationStore(source) +} + +// ConvertTo populates the provided hub ConfigurationStore from our ConfigurationStore +func (store *ConfigurationStore) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.ConfigurationStore) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/ConfigurationStore but received %T instead", hub) + } + + return store.AssignProperties_To_ConfigurationStore(destination) +} + var _ configmaps.Exporter = &ConfigurationStore{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -143,8 +164,75 @@ func (store *ConfigurationStore) SetStatus(status genruntime.ConvertibleStatus) return nil } -// Hub marks that this ConfigurationStore is the hub type for conversion -func (store *ConfigurationStore) Hub() {} +// AssignProperties_From_ConfigurationStore populates our ConfigurationStore from the provided source ConfigurationStore +func (store *ConfigurationStore) AssignProperties_From_ConfigurationStore(source *storage.ConfigurationStore) error { + + // ObjectMeta + store.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec ConfigurationStore_Spec + err := spec.AssignProperties_From_ConfigurationStore_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStore_Spec() to populate field Spec") + } + store.Spec = spec + + // Status + var status ConfigurationStore_STATUS + err = status.AssignProperties_From_ConfigurationStore_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStore_STATUS() to populate field Status") + } + store.Status = status + + // Invoke the augmentConversionForConfigurationStore interface (if implemented) to customize the conversion + var storeAsAny any = store + if augmentedStore, ok := storeAsAny.(augmentConversionForConfigurationStore); ok { + err := augmentedStore.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStore populates the provided destination ConfigurationStore from our ConfigurationStore +func (store *ConfigurationStore) AssignProperties_To_ConfigurationStore(destination *storage.ConfigurationStore) error { + + // ObjectMeta + destination.ObjectMeta = *store.ObjectMeta.DeepCopy() + + // Spec + var spec storage.ConfigurationStore_Spec + err := store.Spec.AssignProperties_To_ConfigurationStore_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStore_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.ConfigurationStore_STATUS + err = store.Status.AssignProperties_To_ConfigurationStore_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStore_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForConfigurationStore interface (if implemented) to customize the conversion + var storeAsAny any = store + if augmentedStore, ok := storeAsAny.(augmentConversionForConfigurationStore); ok { + err := augmentedStore.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 (store *ConfigurationStore) OriginalGVK() *schema.GroupVersionKind { @@ -172,6 +260,11 @@ type APIVersion string const APIVersion_Value = APIVersion("2022-05-01") +type augmentConversionForConfigurationStore interface { + AssignPropertiesFrom(src *storage.ConfigurationStore) error + AssignPropertiesTo(dst *storage.ConfigurationStore) error +} + // Storage version of v1api20220501.ConfigurationStore_Spec type ConfigurationStore_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 @@ -195,7 +288,6 @@ type ConfigurationStore_Spec struct { PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` Sku *Sku `json:"sku,omitempty"` SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` - SystemData *SystemData `json:"systemData,omitempty"` Tags map[string]string `json:"tags,omitempty"` } @@ -203,20 +295,326 @@ var _ genruntime.ConvertibleSpec = &ConfigurationStore_Spec{} // ConvertSpecFrom populates our ConfigurationStore_Spec from the provided source func (store *ConfigurationStore_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == store { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.ConfigurationStore_Spec) + if ok { + // Populate our instance from source + return store.AssignProperties_From_ConfigurationStore_Spec(src) + } + + // Convert to an intermediate form + src = &storage.ConfigurationStore_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(store) + // Update our instance from src + err = store.AssignProperties_From_ConfigurationStore_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil } // ConvertSpecTo populates the provided destination from our ConfigurationStore_Spec func (store *ConfigurationStore_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == store { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.ConfigurationStore_Spec) + if ok { + // Populate destination from our instance + return store.AssignProperties_To_ConfigurationStore_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.ConfigurationStore_Spec{} + err := store.AssignProperties_To_ConfigurationStore_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_ConfigurationStore_Spec populates our ConfigurationStore_Spec from the provided source ConfigurationStore_Spec +func (store *ConfigurationStore_Spec) AssignProperties_From_ConfigurationStore_Spec(source *storage.ConfigurationStore_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AzureName + store.AzureName = source.AzureName + + // CreateMode + store.CreateMode = genruntime.ClonePointerToString(source.CreateMode) + + // DataPlaneProxy + if source.DataPlaneProxy != nil { + propertyBag.Add("DataPlaneProxy", *source.DataPlaneProxy) + } else { + propertyBag.Remove("DataPlaneProxy") + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + if source.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + propertyBag.Add("DefaultKeyValueRevisionRetentionPeriodInSeconds", *source.DefaultKeyValueRevisionRetentionPeriodInSeconds) + } else { + propertyBag.Remove("DefaultKeyValueRevisionRetentionPeriodInSeconds") + } + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } else { + store.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if source.EnablePurgeProtection != nil { + enablePurgeProtection := *source.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } else { + store.EnablePurgeProtection = nil } - return destination.ConvertSpecFrom(store) + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperties + err := encryption.AssignProperties_From_EncryptionProperties(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperties() to populate field Encryption") + } + store.Encryption = &encryption + } else { + store.Encryption = nil + } + + // Identity + if source.Identity != nil { + var identity ResourceIdentity + err := identity.AssignProperties_From_ResourceIdentity(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceIdentity() to populate field Identity") + } + store.Identity = &identity + } else { + store.Identity = nil + } + + // Location + store.Location = genruntime.ClonePointerToString(source.Location) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec ConfigurationStoreOperatorSpec + err := operatorSpec.AssignProperties_From_ConfigurationStoreOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStoreOperatorSpec() to populate field OperatorSpec") + } + store.OperatorSpec = &operatorSpec + } else { + store.OperatorSpec = nil + } + + // OriginalVersion + store.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + store.Owner = &owner + } else { + store.Owner = nil + } + + // PublicNetworkAccess + store.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // Sku + if source.Sku != nil { + var sku Sku + err := sku.AssignProperties_From_Sku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Sku() to populate field Sku") + } + store.Sku = &sku + } else { + store.Sku = nil + } + + // SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) + + // Tags + store.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Update the property bag + if len(propertyBag) > 0 { + store.PropertyBag = propertyBag + } else { + store.PropertyBag = nil + } + + // Invoke the augmentConversionForConfigurationStore_Spec interface (if implemented) to customize the conversion + var storeAsAny any = store + if augmentedStore, ok := storeAsAny.(augmentConversionForConfigurationStore_Spec); ok { + err := augmentedStore.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStore_Spec populates the provided destination ConfigurationStore_Spec from our ConfigurationStore_Spec +func (store *ConfigurationStore_Spec) AssignProperties_To_ConfigurationStore_Spec(destination *storage.ConfigurationStore_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(store.PropertyBag) + + // AzureName + destination.AzureName = store.AzureName + + // CreateMode + destination.CreateMode = genruntime.ClonePointerToString(store.CreateMode) + + // DataPlaneProxy + if propertyBag.Contains("DataPlaneProxy") { + var dataPlaneProxy storage.DataPlaneProxyProperties + err := propertyBag.Pull("DataPlaneProxy", &dataPlaneProxy) + if err != nil { + return eris.Wrap(err, "pulling 'DataPlaneProxy' from propertyBag") + } + + destination.DataPlaneProxy = &dataPlaneProxy + } else { + destination.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + if propertyBag.Contains("DefaultKeyValueRevisionRetentionPeriodInSeconds") { + var defaultKeyValueRevisionRetentionPeriodInSecond int + err := propertyBag.Pull("DefaultKeyValueRevisionRetentionPeriodInSeconds", &defaultKeyValueRevisionRetentionPeriodInSecond) + if err != nil { + return eris.Wrap(err, "pulling 'DefaultKeyValueRevisionRetentionPeriodInSeconds' from propertyBag") + } + + destination.DefaultKeyValueRevisionRetentionPeriodInSeconds = &defaultKeyValueRevisionRetentionPeriodInSecond + } else { + destination.DefaultKeyValueRevisionRetentionPeriodInSeconds = nil + } + + // DisableLocalAuth + if store.DisableLocalAuth != nil { + disableLocalAuth := *store.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if store.EnablePurgeProtection != nil { + enablePurgeProtection := *store.EnablePurgeProtection + destination.EnablePurgeProtection = &enablePurgeProtection + } else { + destination.EnablePurgeProtection = nil + } + + // Encryption + if store.Encryption != nil { + var encryption storage.EncryptionProperties + err := store.Encryption.AssignProperties_To_EncryptionProperties(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperties() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Identity + if store.Identity != nil { + var identity storage.ResourceIdentity + err := store.Identity.AssignProperties_To_ResourceIdentity(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceIdentity() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(store.Location) + + // OperatorSpec + if store.OperatorSpec != nil { + var operatorSpec storage.ConfigurationStoreOperatorSpec + err := store.OperatorSpec.AssignProperties_To_ConfigurationStoreOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStoreOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = store.OriginalVersion + + // Owner + if store.Owner != nil { + owner := store.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(store.PublicNetworkAccess) + + // Sku + if store.Sku != nil { + var sku storage.Sku + err := store.Sku.AssignProperties_To_Sku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Sku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SoftDeleteRetentionInDays + destination.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(store.SoftDeleteRetentionInDays) + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(store.Tags) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForConfigurationStore_Spec interface (if implemented) to customize the conversion + var storeAsAny any = store + if augmentedStore, ok := storeAsAny.(augmentConversionForConfigurationStore_Spec); ok { + err := augmentedStore.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20220501.ConfigurationStore_STATUS @@ -249,20 +647,382 @@ var _ genruntime.ConvertibleStatus = &ConfigurationStore_STATUS{} // ConvertStatusFrom populates our ConfigurationStore_STATUS from the provided source func (store *ConfigurationStore_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == store { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.ConfigurationStore_STATUS) + if ok { + // Populate our instance from source + return store.AssignProperties_From_ConfigurationStore_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.ConfigurationStore_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = store.AssignProperties_From_ConfigurationStore_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") } - return source.ConvertStatusTo(store) + return nil } // ConvertStatusTo populates the provided destination from our ConfigurationStore_STATUS func (store *ConfigurationStore_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == store { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.ConfigurationStore_STATUS) + if ok { + // Populate destination from our instance + return store.AssignProperties_To_ConfigurationStore_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.ConfigurationStore_STATUS{} + err := store.AssignProperties_To_ConfigurationStore_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_ConfigurationStore_STATUS populates our ConfigurationStore_STATUS from the provided source ConfigurationStore_STATUS +func (store *ConfigurationStore_STATUS) AssignProperties_From_ConfigurationStore_STATUS(source *storage.ConfigurationStore_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Conditions + store.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CreateMode + store.CreateMode = genruntime.ClonePointerToString(source.CreateMode) + + // CreationDate + store.CreationDate = genruntime.ClonePointerToString(source.CreationDate) + + // DataPlaneProxy + if source.DataPlaneProxy != nil { + propertyBag.Add("DataPlaneProxy", *source.DataPlaneProxy) + } else { + propertyBag.Remove("DataPlaneProxy") + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + if source.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + propertyBag.Add("DefaultKeyValueRevisionRetentionPeriodInSeconds", *source.DefaultKeyValueRevisionRetentionPeriodInSeconds) + } else { + propertyBag.Remove("DefaultKeyValueRevisionRetentionPeriodInSeconds") + } + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } else { + store.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if source.EnablePurgeProtection != nil { + enablePurgeProtection := *source.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } else { + store.EnablePurgeProtection = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperties_STATUS + err := encryption.AssignProperties_From_EncryptionProperties_STATUS(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperties_STATUS() to populate field Encryption") + } + store.Encryption = &encryption + } else { + store.Encryption = nil + } + + // Endpoint + store.Endpoint = genruntime.ClonePointerToString(source.Endpoint) + + // Id + store.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity ResourceIdentity_STATUS + err := identity.AssignProperties_From_ResourceIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceIdentity_STATUS() to populate field Identity") + } + store.Identity = &identity + } else { + store.Identity = nil + } + + // Location + store.Location = genruntime.ClonePointerToString(source.Location) + + // Name + store.Name = genruntime.ClonePointerToString(source.Name) + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnectionReference_STATUS, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + var privateEndpointConnection PrivateEndpointConnectionReference_STATUS + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnectionReference_STATUS(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnectionReference_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + store.PrivateEndpointConnections = privateEndpointConnectionList + } else { + store.PrivateEndpointConnections = nil + } + + // ProvisioningState + store.ProvisioningState = genruntime.ClonePointerToString(source.ProvisioningState) + + // PublicNetworkAccess + store.PublicNetworkAccess = genruntime.ClonePointerToString(source.PublicNetworkAccess) + + // Sku + if source.Sku != nil { + var sku Sku_STATUS + err := sku.AssignProperties_From_Sku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Sku_STATUS() to populate field Sku") + } + store.Sku = &sku + } else { + store.Sku = nil + } + + // SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) + + // 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") + } + store.SystemData = &systemDatum + } else { + store.SystemData = nil + } + + // Tags + store.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + store.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + store.PropertyBag = propertyBag + } else { + store.PropertyBag = nil + } + + // Invoke the augmentConversionForConfigurationStore_STATUS interface (if implemented) to customize the conversion + var storeAsAny any = store + if augmentedStore, ok := storeAsAny.(augmentConversionForConfigurationStore_STATUS); ok { + err := augmentedStore.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStore_STATUS populates the provided destination ConfigurationStore_STATUS from our ConfigurationStore_STATUS +func (store *ConfigurationStore_STATUS) AssignProperties_To_ConfigurationStore_STATUS(destination *storage.ConfigurationStore_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(store.PropertyBag) + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(store.Conditions) + + // CreateMode + destination.CreateMode = genruntime.ClonePointerToString(store.CreateMode) + + // CreationDate + destination.CreationDate = genruntime.ClonePointerToString(store.CreationDate) + + // DataPlaneProxy + if propertyBag.Contains("DataPlaneProxy") { + var dataPlaneProxy storage.DataPlaneProxyProperties_STATUS + err := propertyBag.Pull("DataPlaneProxy", &dataPlaneProxy) + if err != nil { + return eris.Wrap(err, "pulling 'DataPlaneProxy' from propertyBag") + } + + destination.DataPlaneProxy = &dataPlaneProxy + } else { + destination.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + if propertyBag.Contains("DefaultKeyValueRevisionRetentionPeriodInSeconds") { + var defaultKeyValueRevisionRetentionPeriodInSecond int + err := propertyBag.Pull("DefaultKeyValueRevisionRetentionPeriodInSeconds", &defaultKeyValueRevisionRetentionPeriodInSecond) + if err != nil { + return eris.Wrap(err, "pulling 'DefaultKeyValueRevisionRetentionPeriodInSeconds' from propertyBag") + } + + destination.DefaultKeyValueRevisionRetentionPeriodInSeconds = &defaultKeyValueRevisionRetentionPeriodInSecond + } else { + destination.DefaultKeyValueRevisionRetentionPeriodInSeconds = nil + } + + // DisableLocalAuth + if store.DisableLocalAuth != nil { + disableLocalAuth := *store.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if store.EnablePurgeProtection != nil { + enablePurgeProtection := *store.EnablePurgeProtection + destination.EnablePurgeProtection = &enablePurgeProtection + } else { + destination.EnablePurgeProtection = nil + } + + // Encryption + if store.Encryption != nil { + var encryption storage.EncryptionProperties_STATUS + err := store.Encryption.AssignProperties_To_EncryptionProperties_STATUS(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperties_STATUS() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Endpoint + destination.Endpoint = genruntime.ClonePointerToString(store.Endpoint) + + // Id + destination.Id = genruntime.ClonePointerToString(store.Id) + + // Identity + if store.Identity != nil { + var identity storage.ResourceIdentity_STATUS + err := store.Identity.AssignProperties_To_ResourceIdentity_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceIdentity_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(store.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(store.Name) + + // PrivateEndpointConnections + if store.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnectionReference_STATUS, len(store.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range store.PrivateEndpointConnections { + var privateEndpointConnection storage.PrivateEndpointConnectionReference_STATUS + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnectionReference_STATUS(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnectionReference_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ProvisioningState + destination.ProvisioningState = genruntime.ClonePointerToString(store.ProvisioningState) + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(store.PublicNetworkAccess) + + // Sku + if store.Sku != nil { + var sku storage.Sku_STATUS + err := store.Sku.AssignProperties_To_Sku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Sku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SoftDeleteRetentionInDays + destination.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(store.SoftDeleteRetentionInDays) + + // SystemData + if store.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := store.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(store.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(store.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil } - return destination.ConvertStatusFrom(store) + // Invoke the augmentConversionForConfigurationStore_STATUS interface (if implemented) to customize the conversion + var storeAsAny any = store + if augmentedStore, ok := storeAsAny.(augmentConversionForConfigurationStore_STATUS); ok { + err := augmentedStore.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForConfigurationStore_Spec interface { + AssignPropertiesFrom(src *storage.ConfigurationStore_Spec) error + AssignPropertiesTo(dst *storage.ConfigurationStore_Spec) error +} + +type augmentConversionForConfigurationStore_STATUS interface { + AssignPropertiesFrom(src *storage.ConfigurationStore_STATUS) error + AssignPropertiesTo(dst *storage.ConfigurationStore_STATUS) error } // Storage version of v1api20220501.ConfigurationStoreOperatorSpec @@ -274,6 +1034,144 @@ type ConfigurationStoreOperatorSpec struct { Secrets *ConfigurationStoreOperatorSecrets `json:"secrets,omitempty"` } +// AssignProperties_From_ConfigurationStoreOperatorSpec populates our ConfigurationStoreOperatorSpec from the provided source ConfigurationStoreOperatorSpec +func (operator *ConfigurationStoreOperatorSpec) AssignProperties_From_ConfigurationStoreOperatorSpec(source *storage.ConfigurationStoreOperatorSpec) 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 { + 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 { + 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 ConfigurationStoreOperatorSecrets + err := secret.AssignProperties_From_ConfigurationStoreOperatorSecrets(source.Secrets) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStoreOperatorSecrets() 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 augmentConversionForConfigurationStoreOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForConfigurationStoreOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStoreOperatorSpec populates the provided destination ConfigurationStoreOperatorSpec from our ConfigurationStoreOperatorSpec +func (operator *ConfigurationStoreOperatorSpec) AssignProperties_To_ConfigurationStoreOperatorSpec(destination *storage.ConfigurationStoreOperatorSpec) 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 { + 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 { + 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.ConfigurationStoreOperatorSecrets + err := operator.Secrets.AssignProperties_To_ConfigurationStoreOperatorSecrets(&secret) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStoreOperatorSecrets() 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 augmentConversionForConfigurationStoreOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForConfigurationStoreOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20220501.EncryptionProperties // The encryption settings for a configuration store. type EncryptionProperties struct { @@ -281,19 +1179,323 @@ type EncryptionProperties struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } -// Storage version of v1api20220501.EncryptionProperties_STATUS -// The encryption settings for a configuration store. -type EncryptionProperties_STATUS struct { - KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} +// AssignProperties_From_EncryptionProperties populates our EncryptionProperties from the provided source EncryptionProperties +func (properties *EncryptionProperties) AssignProperties_From_EncryptionProperties(source *storage.EncryptionProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) -// Storage version of v1api20220501.PrivateEndpointConnectionReference_STATUS -// A reference to a related private endpoint connection. -type PrivateEndpointConnectionReference_STATUS struct { - Id *string `json:"id,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // KeyVaultProperties + if source.KeyVaultProperties != nil { + var keyVaultProperty KeyVaultProperties + err := keyVaultProperty.AssignProperties_From_KeyVaultProperties(source.KeyVaultProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyVaultProperties() to populate field KeyVaultProperties") + } + properties.KeyVaultProperties = &keyVaultProperty + } else { + properties.KeyVaultProperties = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForEncryptionProperties); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperties populates the provided destination EncryptionProperties from our EncryptionProperties +func (properties *EncryptionProperties) AssignProperties_To_EncryptionProperties(destination *storage.EncryptionProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // KeyVaultProperties + if properties.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties + err := properties.KeyVaultProperties.AssignProperties_To_KeyVaultProperties(&keyVaultProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyVaultProperties() to populate field KeyVaultProperties") + } + destination.KeyVaultProperties = &keyVaultProperty + } else { + destination.KeyVaultProperties = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForEncryptionProperties); ok { + err := augmentedProperties.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20220501.EncryptionProperties_STATUS +// The encryption settings for a configuration store. +type EncryptionProperties_STATUS struct { + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_EncryptionProperties_STATUS populates our EncryptionProperties_STATUS from the provided source EncryptionProperties_STATUS +func (properties *EncryptionProperties_STATUS) AssignProperties_From_EncryptionProperties_STATUS(source *storage.EncryptionProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // KeyVaultProperties + if source.KeyVaultProperties != nil { + var keyVaultProperty KeyVaultProperties_STATUS + err := keyVaultProperty.AssignProperties_From_KeyVaultProperties_STATUS(source.KeyVaultProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyVaultProperties_STATUS() to populate field KeyVaultProperties") + } + properties.KeyVaultProperties = &keyVaultProperty + } else { + properties.KeyVaultProperties = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForEncryptionProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperties_STATUS populates the provided destination EncryptionProperties_STATUS from our EncryptionProperties_STATUS +func (properties *EncryptionProperties_STATUS) AssignProperties_To_EncryptionProperties_STATUS(destination *storage.EncryptionProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // KeyVaultProperties + if properties.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties_STATUS + err := properties.KeyVaultProperties.AssignProperties_To_KeyVaultProperties_STATUS(&keyVaultProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyVaultProperties_STATUS() to populate field KeyVaultProperties") + } + destination.KeyVaultProperties = &keyVaultProperty + } else { + destination.KeyVaultProperties = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForEncryptionProperties_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 v1api20220501.PrivateEndpointConnectionReference_STATUS +// A reference to a related private endpoint connection. +type PrivateEndpointConnectionReference_STATUS struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_PrivateEndpointConnectionReference_STATUS populates our PrivateEndpointConnectionReference_STATUS from the provided source PrivateEndpointConnectionReference_STATUS +func (reference *PrivateEndpointConnectionReference_STATUS) AssignProperties_From_PrivateEndpointConnectionReference_STATUS(source *storage.PrivateEndpointConnectionReference_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Id + reference.Id = genruntime.ClonePointerToString(source.Id) + + // Name + if source.Name != nil { + propertyBag.Add("Name", *source.Name) + } else { + propertyBag.Remove("Name") + } + + // PrivateEndpoint + if source.PrivateEndpoint != nil { + propertyBag.Add("PrivateEndpoint", *source.PrivateEndpoint) + } else { + propertyBag.Remove("PrivateEndpoint") + } + + // PrivateLinkServiceConnectionState + if source.PrivateLinkServiceConnectionState != nil { + propertyBag.Add("PrivateLinkServiceConnectionState", *source.PrivateLinkServiceConnectionState) + } else { + propertyBag.Remove("PrivateLinkServiceConnectionState") + } + + // ProvisioningState + if source.ProvisioningState != nil { + propertyBag.Add("ProvisioningState", *source.ProvisioningState) + } else { + propertyBag.Remove("ProvisioningState") + } + + // Type + if source.Type != nil { + propertyBag.Add("Type", *source.Type) + } else { + propertyBag.Remove("Type") + } + + // Update the property bag + if len(propertyBag) > 0 { + reference.PropertyBag = propertyBag + } else { + reference.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnectionReference_STATUS interface (if implemented) to customize the conversion + var referenceAsAny any = reference + if augmentedReference, ok := referenceAsAny.(augmentConversionForPrivateEndpointConnectionReference_STATUS); ok { + err := augmentedReference.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnectionReference_STATUS populates the provided destination PrivateEndpointConnectionReference_STATUS from our PrivateEndpointConnectionReference_STATUS +func (reference *PrivateEndpointConnectionReference_STATUS) AssignProperties_To_PrivateEndpointConnectionReference_STATUS(destination *storage.PrivateEndpointConnectionReference_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(reference.PropertyBag) + + // Id + destination.Id = genruntime.ClonePointerToString(reference.Id) + + // Name + if propertyBag.Contains("Name") { + var name string + err := propertyBag.Pull("Name", &name) + if err != nil { + return eris.Wrap(err, "pulling 'Name' from propertyBag") + } + + destination.Name = &name + } else { + destination.Name = nil + } + + // PrivateEndpoint + if propertyBag.Contains("PrivateEndpoint") { + var privateEndpoint storage.PrivateEndpoint_STATUS + err := propertyBag.Pull("PrivateEndpoint", &privateEndpoint) + if err != nil { + return eris.Wrap(err, "pulling 'PrivateEndpoint' from propertyBag") + } + + destination.PrivateEndpoint = &privateEndpoint + } else { + destination.PrivateEndpoint = nil + } + + // PrivateLinkServiceConnectionState + if propertyBag.Contains("PrivateLinkServiceConnectionState") { + var privateLinkServiceConnectionState storage.PrivateLinkServiceConnectionState_STATUS + err := propertyBag.Pull("PrivateLinkServiceConnectionState", &privateLinkServiceConnectionState) + if err != nil { + return eris.Wrap(err, "pulling 'PrivateLinkServiceConnectionState' from propertyBag") + } + + destination.PrivateLinkServiceConnectionState = &privateLinkServiceConnectionState + } else { + destination.PrivateLinkServiceConnectionState = nil + } + + // ProvisioningState + if propertyBag.Contains("ProvisioningState") { + var provisioningState string + err := propertyBag.Pull("ProvisioningState", &provisioningState) + if err != nil { + return eris.Wrap(err, "pulling 'ProvisioningState' from propertyBag") + } + + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // Type + if propertyBag.Contains("Type") { + var typeVar string + err := propertyBag.Pull("Type", &typeVar) + if err != nil { + return eris.Wrap(err, "pulling 'Type' from propertyBag") + } + + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnectionReference_STATUS interface (if implemented) to customize the conversion + var referenceAsAny any = reference + if augmentedReference, ok := referenceAsAny.(augmentConversionForPrivateEndpointConnectionReference_STATUS); ok { + err := augmentedReference.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} // Storage version of v1api20220501.ResourceIdentity // An identity that can be associated with a resource. @@ -303,6 +1505,94 @@ type ResourceIdentity struct { UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` } +// AssignProperties_From_ResourceIdentity populates our ResourceIdentity from the provided source ResourceIdentity +func (identity *ResourceIdentity) AssignProperties_From_ResourceIdentity(source *storage.ResourceIdentity) 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 { + 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 augmentConversionForResourceIdentity interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForResourceIdentity); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceIdentity populates the provided destination ResourceIdentity from our ResourceIdentity +func (identity *ResourceIdentity) AssignProperties_To_ResourceIdentity(destination *storage.ResourceIdentity) 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 { + 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 augmentConversionForResourceIdentity interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForResourceIdentity); ok { + err := augmentedIdentity.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20220501.ResourceIdentity_STATUS // An identity that can be associated with a resource. type ResourceIdentity_STATUS struct { @@ -313,6 +1603,106 @@ type ResourceIdentity_STATUS struct { UserAssignedIdentities map[string]UserIdentity_STATUS `json:"userAssignedIdentities,omitempty"` } +// AssignProperties_From_ResourceIdentity_STATUS populates our ResourceIdentity_STATUS from the provided source ResourceIdentity_STATUS +func (identity *ResourceIdentity_STATUS) AssignProperties_From_ResourceIdentity_STATUS(source *storage.ResourceIdentity_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]UserIdentity_STATUS, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + var userAssignedIdentity UserIdentity_STATUS + err := userAssignedIdentity.AssignProperties_From_UserIdentity_STATUS(&userAssignedIdentityValue) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserIdentity_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + identity.UserAssignedIdentities = userAssignedIdentityMap + } else { + identity.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + identity.PropertyBag = propertyBag + } else { + identity.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForResourceIdentity_STATUS); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ResourceIdentity_STATUS populates the provided destination ResourceIdentity_STATUS from our ResourceIdentity_STATUS +func (identity *ResourceIdentity_STATUS) AssignProperties_To_ResourceIdentity_STATUS(destination *storage.ResourceIdentity_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(identity.PropertyBag) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(identity.PrincipalId) + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(identity.TenantId) + + // Type + destination.Type = genruntime.ClonePointerToString(identity.Type) + + // UserAssignedIdentities + if identity.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]storage.UserIdentity_STATUS, len(identity.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range identity.UserAssignedIdentities { + var userAssignedIdentity storage.UserIdentity_STATUS + err := userAssignedIdentityValue.AssignProperties_To_UserIdentity_STATUS(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserIdentity_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityMap + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForResourceIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForResourceIdentity_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 v1api20220501.Sku // Describes a configuration store SKU. type Sku struct { @@ -320,6 +1710,62 @@ type Sku struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_Sku populates our Sku from the provided source Sku +func (sku *Sku) AssignProperties_From_Sku(source *storage.Sku) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Name + sku.Name = genruntime.ClonePointerToString(source.Name) + + // Update the property bag + if len(propertyBag) > 0 { + sku.PropertyBag = propertyBag + } else { + sku.PropertyBag = nil + } + + // Invoke the augmentConversionForSku interface (if implemented) to customize the conversion + var skuAsAny any = sku + if augmentedSku, ok := skuAsAny.(augmentConversionForSku); ok { + err := augmentedSku.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Sku populates the provided destination Sku from our Sku +func (sku *Sku) AssignProperties_To_Sku(destination *storage.Sku) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(sku.PropertyBag) + + // Name + destination.Name = genruntime.ClonePointerToString(sku.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSku interface (if implemented) to customize the conversion + var skuAsAny any = sku + if augmentedSku, ok := skuAsAny.(augmentConversionForSku); ok { + err := augmentedSku.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20220501.Sku_STATUS // Describes a configuration store SKU. type Sku_STATUS struct { @@ -327,16 +1773,60 @@ type Sku_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } -// Storage version of v1api20220501.SystemData -// Metadata pertaining to creation and last modification of the resource. -type SystemData 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"` +// AssignProperties_From_Sku_STATUS populates our Sku_STATUS from the provided source Sku_STATUS +func (sku *Sku_STATUS) AssignProperties_From_Sku_STATUS(source *storage.Sku_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Name + sku.Name = genruntime.ClonePointerToString(source.Name) + + // Update the property bag + if len(propertyBag) > 0 { + sku.PropertyBag = propertyBag + } else { + sku.PropertyBag = nil + } + + // Invoke the augmentConversionForSku_STATUS interface (if implemented) to customize the conversion + var skuAsAny any = sku + if augmentedSku, ok := skuAsAny.(augmentConversionForSku_STATUS); ok { + err := augmentedSku.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Sku_STATUS populates the provided destination Sku_STATUS from our Sku_STATUS +func (sku *Sku_STATUS) AssignProperties_To_Sku_STATUS(destination *storage.Sku_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(sku.PropertyBag) + + // Name + destination.Name = genruntime.ClonePointerToString(sku.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForSku_STATUS interface (if implemented) to customize the conversion + var skuAsAny any = sku + if augmentedSku, ok := skuAsAny.(augmentConversionForSku_STATUS); ok { + err := augmentedSku.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20220501.SystemData_STATUS @@ -351,6 +1841,137 @@ 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 augmentConversionForConfigurationStoreOperatorSpec interface { + AssignPropertiesFrom(src *storage.ConfigurationStoreOperatorSpec) error + AssignPropertiesTo(dst *storage.ConfigurationStoreOperatorSpec) error +} + +type augmentConversionForEncryptionProperties interface { + AssignPropertiesFrom(src *storage.EncryptionProperties) error + AssignPropertiesTo(dst *storage.EncryptionProperties) error +} + +type augmentConversionForEncryptionProperties_STATUS interface { + AssignPropertiesFrom(src *storage.EncryptionProperties_STATUS) error + AssignPropertiesTo(dst *storage.EncryptionProperties_STATUS) error +} + +type augmentConversionForPrivateEndpointConnectionReference_STATUS interface { + AssignPropertiesFrom(src *storage.PrivateEndpointConnectionReference_STATUS) error + AssignPropertiesTo(dst *storage.PrivateEndpointConnectionReference_STATUS) error +} + +type augmentConversionForResourceIdentity interface { + AssignPropertiesFrom(src *storage.ResourceIdentity) error + AssignPropertiesTo(dst *storage.ResourceIdentity) error +} + +type augmentConversionForResourceIdentity_STATUS interface { + AssignPropertiesFrom(src *storage.ResourceIdentity_STATUS) error + AssignPropertiesTo(dst *storage.ResourceIdentity_STATUS) error +} + +type augmentConversionForSku interface { + AssignPropertiesFrom(src *storage.Sku) error + AssignPropertiesTo(dst *storage.Sku) error +} + +type augmentConversionForSku_STATUS interface { + AssignPropertiesFrom(src *storage.Sku_STATUS) error + AssignPropertiesTo(dst *storage.Sku_STATUS) error +} + +type augmentConversionForSystemData_STATUS interface { + AssignPropertiesFrom(src *storage.SystemData_STATUS) error + AssignPropertiesTo(dst *storage.SystemData_STATUS) error +} + // Storage version of v1api20220501.ConfigurationStoreOperatorSecrets type ConfigurationStoreOperatorSecrets struct { PrimaryConnectionString *genruntime.SecretDestination `json:"primaryConnectionString,omitempty"` @@ -368,6 +1989,248 @@ type ConfigurationStoreOperatorSecrets struct { SecondaryReadOnlyKeyID *genruntime.SecretDestination `json:"secondaryReadOnlyKeyID,omitempty"` } +// AssignProperties_From_ConfigurationStoreOperatorSecrets populates our ConfigurationStoreOperatorSecrets from the provided source ConfigurationStoreOperatorSecrets +func (secrets *ConfigurationStoreOperatorSecrets) AssignProperties_From_ConfigurationStoreOperatorSecrets(source *storage.ConfigurationStoreOperatorSecrets) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // PrimaryConnectionString + if source.PrimaryConnectionString != nil { + primaryConnectionString := source.PrimaryConnectionString.Copy() + secrets.PrimaryConnectionString = &primaryConnectionString + } else { + secrets.PrimaryConnectionString = nil + } + + // PrimaryKey + if source.PrimaryKey != nil { + primaryKey := source.PrimaryKey.Copy() + secrets.PrimaryKey = &primaryKey + } else { + secrets.PrimaryKey = nil + } + + // PrimaryKeyID + if source.PrimaryKeyID != nil { + primaryKeyID := source.PrimaryKeyID.Copy() + secrets.PrimaryKeyID = &primaryKeyID + } else { + secrets.PrimaryKeyID = nil + } + + // PrimaryReadOnlyConnectionString + if source.PrimaryReadOnlyConnectionString != nil { + primaryReadOnlyConnectionString := source.PrimaryReadOnlyConnectionString.Copy() + secrets.PrimaryReadOnlyConnectionString = &primaryReadOnlyConnectionString + } else { + secrets.PrimaryReadOnlyConnectionString = nil + } + + // PrimaryReadOnlyKey + if source.PrimaryReadOnlyKey != nil { + primaryReadOnlyKey := source.PrimaryReadOnlyKey.Copy() + secrets.PrimaryReadOnlyKey = &primaryReadOnlyKey + } else { + secrets.PrimaryReadOnlyKey = nil + } + + // PrimaryReadOnlyKeyID + if source.PrimaryReadOnlyKeyID != nil { + primaryReadOnlyKeyID := source.PrimaryReadOnlyKeyID.Copy() + secrets.PrimaryReadOnlyKeyID = &primaryReadOnlyKeyID + } else { + secrets.PrimaryReadOnlyKeyID = nil + } + + // SecondaryConnectionString + if source.SecondaryConnectionString != nil { + secondaryConnectionString := source.SecondaryConnectionString.Copy() + secrets.SecondaryConnectionString = &secondaryConnectionString + } else { + secrets.SecondaryConnectionString = nil + } + + // SecondaryKey + if source.SecondaryKey != nil { + secondaryKey := source.SecondaryKey.Copy() + secrets.SecondaryKey = &secondaryKey + } else { + secrets.SecondaryKey = nil + } + + // SecondaryKeyID + if source.SecondaryKeyID != nil { + secondaryKeyID := source.SecondaryKeyID.Copy() + secrets.SecondaryKeyID = &secondaryKeyID + } else { + secrets.SecondaryKeyID = nil + } + + // SecondaryReadOnlyConnectionString + if source.SecondaryReadOnlyConnectionString != nil { + secondaryReadOnlyConnectionString := source.SecondaryReadOnlyConnectionString.Copy() + secrets.SecondaryReadOnlyConnectionString = &secondaryReadOnlyConnectionString + } else { + secrets.SecondaryReadOnlyConnectionString = nil + } + + // SecondaryReadOnlyKey + if source.SecondaryReadOnlyKey != nil { + secondaryReadOnlyKey := source.SecondaryReadOnlyKey.Copy() + secrets.SecondaryReadOnlyKey = &secondaryReadOnlyKey + } else { + secrets.SecondaryReadOnlyKey = nil + } + + // SecondaryReadOnlyKeyID + if source.SecondaryReadOnlyKeyID != nil { + secondaryReadOnlyKeyID := source.SecondaryReadOnlyKeyID.Copy() + secrets.SecondaryReadOnlyKeyID = &secondaryReadOnlyKeyID + } else { + secrets.SecondaryReadOnlyKeyID = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + secrets.PropertyBag = propertyBag + } else { + secrets.PropertyBag = nil + } + + // Invoke the augmentConversionForConfigurationStoreOperatorSecrets interface (if implemented) to customize the conversion + var secretsAsAny any = secrets + if augmentedSecrets, ok := secretsAsAny.(augmentConversionForConfigurationStoreOperatorSecrets); ok { + err := augmentedSecrets.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStoreOperatorSecrets populates the provided destination ConfigurationStoreOperatorSecrets from our ConfigurationStoreOperatorSecrets +func (secrets *ConfigurationStoreOperatorSecrets) AssignProperties_To_ConfigurationStoreOperatorSecrets(destination *storage.ConfigurationStoreOperatorSecrets) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(secrets.PropertyBag) + + // PrimaryConnectionString + if secrets.PrimaryConnectionString != nil { + primaryConnectionString := secrets.PrimaryConnectionString.Copy() + destination.PrimaryConnectionString = &primaryConnectionString + } else { + destination.PrimaryConnectionString = nil + } + + // PrimaryKey + if secrets.PrimaryKey != nil { + primaryKey := secrets.PrimaryKey.Copy() + destination.PrimaryKey = &primaryKey + } else { + destination.PrimaryKey = nil + } + + // PrimaryKeyID + if secrets.PrimaryKeyID != nil { + primaryKeyID := secrets.PrimaryKeyID.Copy() + destination.PrimaryKeyID = &primaryKeyID + } else { + destination.PrimaryKeyID = nil + } + + // PrimaryReadOnlyConnectionString + if secrets.PrimaryReadOnlyConnectionString != nil { + primaryReadOnlyConnectionString := secrets.PrimaryReadOnlyConnectionString.Copy() + destination.PrimaryReadOnlyConnectionString = &primaryReadOnlyConnectionString + } else { + destination.PrimaryReadOnlyConnectionString = nil + } + + // PrimaryReadOnlyKey + if secrets.PrimaryReadOnlyKey != nil { + primaryReadOnlyKey := secrets.PrimaryReadOnlyKey.Copy() + destination.PrimaryReadOnlyKey = &primaryReadOnlyKey + } else { + destination.PrimaryReadOnlyKey = nil + } + + // PrimaryReadOnlyKeyID + if secrets.PrimaryReadOnlyKeyID != nil { + primaryReadOnlyKeyID := secrets.PrimaryReadOnlyKeyID.Copy() + destination.PrimaryReadOnlyKeyID = &primaryReadOnlyKeyID + } else { + destination.PrimaryReadOnlyKeyID = nil + } + + // SecondaryConnectionString + if secrets.SecondaryConnectionString != nil { + secondaryConnectionString := secrets.SecondaryConnectionString.Copy() + destination.SecondaryConnectionString = &secondaryConnectionString + } else { + destination.SecondaryConnectionString = nil + } + + // SecondaryKey + if secrets.SecondaryKey != nil { + secondaryKey := secrets.SecondaryKey.Copy() + destination.SecondaryKey = &secondaryKey + } else { + destination.SecondaryKey = nil + } + + // SecondaryKeyID + if secrets.SecondaryKeyID != nil { + secondaryKeyID := secrets.SecondaryKeyID.Copy() + destination.SecondaryKeyID = &secondaryKeyID + } else { + destination.SecondaryKeyID = nil + } + + // SecondaryReadOnlyConnectionString + if secrets.SecondaryReadOnlyConnectionString != nil { + secondaryReadOnlyConnectionString := secrets.SecondaryReadOnlyConnectionString.Copy() + destination.SecondaryReadOnlyConnectionString = &secondaryReadOnlyConnectionString + } else { + destination.SecondaryReadOnlyConnectionString = nil + } + + // SecondaryReadOnlyKey + if secrets.SecondaryReadOnlyKey != nil { + secondaryReadOnlyKey := secrets.SecondaryReadOnlyKey.Copy() + destination.SecondaryReadOnlyKey = &secondaryReadOnlyKey + } else { + destination.SecondaryReadOnlyKey = nil + } + + // SecondaryReadOnlyKeyID + if secrets.SecondaryReadOnlyKeyID != nil { + secondaryReadOnlyKeyID := secrets.SecondaryReadOnlyKeyID.Copy() + destination.SecondaryReadOnlyKeyID = &secondaryReadOnlyKeyID + } else { + destination.SecondaryReadOnlyKeyID = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForConfigurationStoreOperatorSecrets interface (if implemented) to customize the conversion + var secretsAsAny any = secrets + if augmentedSecrets, ok := secretsAsAny.(augmentConversionForConfigurationStoreOperatorSecrets); ok { + err := augmentedSecrets.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20220501.KeyVaultProperties // Settings concerning key vault encryption for a configuration store. type KeyVaultProperties struct { @@ -376,6 +2239,68 @@ type KeyVaultProperties struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_KeyVaultProperties populates our KeyVaultProperties from the provided source KeyVaultProperties +func (properties *KeyVaultProperties) AssignProperties_From_KeyVaultProperties(source *storage.KeyVaultProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // IdentityClientId + properties.IdentityClientId = genruntime.ClonePointerToString(source.IdentityClientId) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForKeyVaultProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForKeyVaultProperties); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_KeyVaultProperties populates the provided destination KeyVaultProperties from our KeyVaultProperties +func (properties *KeyVaultProperties) AssignProperties_To_KeyVaultProperties(destination *storage.KeyVaultProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // IdentityClientId + destination.IdentityClientId = genruntime.ClonePointerToString(properties.IdentityClientId) + + // KeyIdentifier + destination.KeyIdentifier = genruntime.ClonePointerToString(properties.KeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForKeyVaultProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForKeyVaultProperties); ok { + err := augmentedProperties.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20220501.KeyVaultProperties_STATUS // Settings concerning key vault encryption for a configuration store. type KeyVaultProperties_STATUS struct { @@ -384,6 +2309,68 @@ type KeyVaultProperties_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_KeyVaultProperties_STATUS populates our KeyVaultProperties_STATUS from the provided source KeyVaultProperties_STATUS +func (properties *KeyVaultProperties_STATUS) AssignProperties_From_KeyVaultProperties_STATUS(source *storage.KeyVaultProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // IdentityClientId + properties.IdentityClientId = genruntime.ClonePointerToString(source.IdentityClientId) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForKeyVaultProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForKeyVaultProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_KeyVaultProperties_STATUS populates the provided destination KeyVaultProperties_STATUS from our KeyVaultProperties_STATUS +func (properties *KeyVaultProperties_STATUS) AssignProperties_To_KeyVaultProperties_STATUS(destination *storage.KeyVaultProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // IdentityClientId + destination.IdentityClientId = genruntime.ClonePointerToString(properties.IdentityClientId) + + // KeyIdentifier + destination.KeyIdentifier = genruntime.ClonePointerToString(properties.KeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForKeyVaultProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForKeyVaultProperties_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 v1api20220501.UserAssignedIdentityDetails // Information about the user assigned identity for the resource type UserAssignedIdentityDetails struct { @@ -391,6 +2378,62 @@ type UserAssignedIdentityDetails struct { Reference genruntime.ResourceReference `armReference:"Reference" json:"reference,omitempty"` } +// AssignProperties_From_UserAssignedIdentityDetails populates our UserAssignedIdentityDetails from the provided source UserAssignedIdentityDetails +func (details *UserAssignedIdentityDetails) AssignProperties_From_UserAssignedIdentityDetails(source *storage.UserAssignedIdentityDetails) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Reference + details.Reference = source.Reference.Copy() + + // Update the property bag + if len(propertyBag) > 0 { + details.PropertyBag = propertyBag + } else { + details.PropertyBag = nil + } + + // Invoke the augmentConversionForUserAssignedIdentityDetails interface (if implemented) to customize the conversion + var detailsAsAny any = details + if augmentedDetails, ok := detailsAsAny.(augmentConversionForUserAssignedIdentityDetails); ok { + err := augmentedDetails.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UserAssignedIdentityDetails populates the provided destination UserAssignedIdentityDetails from our UserAssignedIdentityDetails +func (details *UserAssignedIdentityDetails) AssignProperties_To_UserAssignedIdentityDetails(destination *storage.UserAssignedIdentityDetails) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(details.PropertyBag) + + // Reference + destination.Reference = details.Reference.Copy() + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUserAssignedIdentityDetails interface (if implemented) to customize the conversion + var detailsAsAny any = details + if augmentedDetails, ok := detailsAsAny.(augmentConversionForUserAssignedIdentityDetails); ok { + err := augmentedDetails.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20220501.UserIdentity_STATUS // A resource identity that is managed by the user of the service. type UserIdentity_STATUS struct { @@ -399,6 +2442,93 @@ type UserIdentity_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_UserIdentity_STATUS populates our UserIdentity_STATUS from the provided source UserIdentity_STATUS +func (identity *UserIdentity_STATUS) AssignProperties_From_UserIdentity_STATUS(source *storage.UserIdentity_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ClientId + identity.ClientId = genruntime.ClonePointerToString(source.ClientId) + + // PrincipalId + identity.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + identity.PropertyBag = propertyBag + } else { + identity.PropertyBag = nil + } + + // Invoke the augmentConversionForUserIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForUserIdentity_STATUS); ok { + err := augmentedIdentity.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UserIdentity_STATUS populates the provided destination UserIdentity_STATUS from our UserIdentity_STATUS +func (identity *UserIdentity_STATUS) AssignProperties_To_UserIdentity_STATUS(destination *storage.UserIdentity_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(identity.PropertyBag) + + // ClientId + destination.ClientId = genruntime.ClonePointerToString(identity.ClientId) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(identity.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUserIdentity_STATUS interface (if implemented) to customize the conversion + var identityAsAny any = identity + if augmentedIdentity, ok := identityAsAny.(augmentConversionForUserIdentity_STATUS); ok { + err := augmentedIdentity.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForConfigurationStoreOperatorSecrets interface { + AssignPropertiesFrom(src *storage.ConfigurationStoreOperatorSecrets) error + AssignPropertiesTo(dst *storage.ConfigurationStoreOperatorSecrets) error +} + +type augmentConversionForKeyVaultProperties interface { + AssignPropertiesFrom(src *storage.KeyVaultProperties) error + AssignPropertiesTo(dst *storage.KeyVaultProperties) error +} + +type augmentConversionForKeyVaultProperties_STATUS interface { + AssignPropertiesFrom(src *storage.KeyVaultProperties_STATUS) error + AssignPropertiesTo(dst *storage.KeyVaultProperties_STATUS) error +} + +type augmentConversionForUserAssignedIdentityDetails interface { + AssignPropertiesFrom(src *storage.UserAssignedIdentityDetails) error + AssignPropertiesTo(dst *storage.UserAssignedIdentityDetails) error +} + +type augmentConversionForUserIdentity_STATUS interface { + AssignPropertiesFrom(src *storage.UserIdentity_STATUS) error + AssignPropertiesTo(dst *storage.UserIdentity_STATUS) error +} + func init() { SchemeBuilder.Register(&ConfigurationStore{}, &ConfigurationStoreList{}) } diff --git a/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen_test.go b/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen_test.go index 14f77214c6f..f04fef9c71a 100644 --- a/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen_test.go +++ b/v2/api/appconfiguration/v1api20220501/storage/configuration_store_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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_ConfigurationStore_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 ConfigurationStore to hub returns original", + prop.ForAll(RunResourceConversionTestForConfigurationStore, ConfigurationStoreGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForConfigurationStore tests if a specific instance of ConfigurationStore round trips to the hub storage version and back losslessly +func RunResourceConversionTestForConfigurationStore(subject ConfigurationStore) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.ConfigurationStore + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual ConfigurationStore + 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_ConfigurationStore_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStore to ConfigurationStore via AssignProperties_To_ConfigurationStore & AssignProperties_From_ConfigurationStore returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStore, ConfigurationStoreGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStore tests if a specific instance of ConfigurationStore can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStore(subject ConfigurationStore) 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.ConfigurationStore + err := copied.AssignProperties_To_ConfigurationStore(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStore + err = actual.AssignProperties_From_ConfigurationStore(&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_ConfigurationStore_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -78,6 +164,48 @@ func AddRelatedPropertyGeneratorsForConfigurationStore(gens map[string]gopter.Ge gens["Status"] = ConfigurationStore_STATUSGenerator() } +func Test_ConfigurationStoreOperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStoreOperatorSecrets to ConfigurationStoreOperatorSecrets via AssignProperties_To_ConfigurationStoreOperatorSecrets & AssignProperties_From_ConfigurationStoreOperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets, ConfigurationStoreOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets tests if a specific instance of ConfigurationStoreOperatorSecrets can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets(subject ConfigurationStoreOperatorSecrets) 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.ConfigurationStoreOperatorSecrets + err := copied.AssignProperties_To_ConfigurationStoreOperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStoreOperatorSecrets + err = actual.AssignProperties_From_ConfigurationStoreOperatorSecrets(&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_ConfigurationStoreOperatorSecrets_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -133,6 +261,48 @@ func ConfigurationStoreOperatorSecretsGenerator() gopter.Gen { return configurationStoreOperatorSecretsGenerator } +func Test_ConfigurationStoreOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStoreOperatorSpec to ConfigurationStoreOperatorSpec via AssignProperties_To_ConfigurationStoreOperatorSpec & AssignProperties_From_ConfigurationStoreOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStoreOperatorSpec, ConfigurationStoreOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStoreOperatorSpec tests if a specific instance of ConfigurationStoreOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStoreOperatorSpec(subject ConfigurationStoreOperatorSpec) 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.ConfigurationStoreOperatorSpec + err := copied.AssignProperties_To_ConfigurationStoreOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStoreOperatorSpec + err = actual.AssignProperties_From_ConfigurationStoreOperatorSpec(&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_ConfigurationStoreOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -194,6 +364,48 @@ func AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec(gens map[stri gens["Secrets"] = gen.PtrOf(ConfigurationStoreOperatorSecretsGenerator()) } +func Test_ConfigurationStore_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStore_STATUS to ConfigurationStore_STATUS via AssignProperties_To_ConfigurationStore_STATUS & AssignProperties_From_ConfigurationStore_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStore_STATUS, ConfigurationStore_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStore_STATUS tests if a specific instance of ConfigurationStore_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStore_STATUS(subject ConfigurationStore_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.ConfigurationStore_STATUS + err := copied.AssignProperties_To_ConfigurationStore_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStore_STATUS + err = actual.AssignProperties_From_ConfigurationStore_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_ConfigurationStore_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -287,6 +499,48 @@ func AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(gens map[string]go gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_ConfigurationStore_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStore_Spec to ConfigurationStore_Spec via AssignProperties_To_ConfigurationStore_Spec & AssignProperties_From_ConfigurationStore_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStore_Spec, ConfigurationStore_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStore_Spec tests if a specific instance of ConfigurationStore_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStore_Spec(subject ConfigurationStore_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.ConfigurationStore_Spec + err := copied.AssignProperties_To_ConfigurationStore_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStore_Spec + err = actual.AssignProperties_From_ConfigurationStore_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_ConfigurationStore_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -373,7 +627,48 @@ func AddRelatedPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopt gens["Identity"] = gen.PtrOf(ResourceIdentityGenerator()) gens["OperatorSpec"] = gen.PtrOf(ConfigurationStoreOperatorSpecGenerator()) gens["Sku"] = gen.PtrOf(SkuGenerator()) - gens["SystemData"] = gen.PtrOf(SystemDataGenerator()) +} + +func Test_EncryptionProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperties to EncryptionProperties via AssignProperties_To_EncryptionProperties & AssignProperties_From_EncryptionProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperties, EncryptionPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperties tests if a specific instance of EncryptionProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperties(subject EncryptionProperties) 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.EncryptionProperties + err := copied.AssignProperties_To_EncryptionProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperties + err = actual.AssignProperties_From_EncryptionProperties(&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_EncryptionProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { @@ -437,6 +732,48 @@ func AddRelatedPropertyGeneratorsForEncryptionProperties(gens map[string]gopter. gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) } +func Test_EncryptionProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperties_STATUS to EncryptionProperties_STATUS via AssignProperties_To_EncryptionProperties_STATUS & AssignProperties_From_EncryptionProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperties_STATUS, EncryptionProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperties_STATUS tests if a specific instance of EncryptionProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperties_STATUS(subject EncryptionProperties_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.EncryptionProperties_STATUS + err := copied.AssignProperties_To_EncryptionProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperties_STATUS + err = actual.AssignProperties_From_EncryptionProperties_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_EncryptionProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -498,6 +835,48 @@ func AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(gens map[string] gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) } +func Test_KeyVaultProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyVaultProperties to KeyVaultProperties via AssignProperties_To_KeyVaultProperties & AssignProperties_From_KeyVaultProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyVaultProperties, KeyVaultPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyVaultProperties tests if a specific instance of KeyVaultProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyVaultProperties(subject KeyVaultProperties) 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.KeyVaultProperties + err := copied.AssignProperties_To_KeyVaultProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyVaultProperties + err = actual.AssignProperties_From_KeyVaultProperties(&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_KeyVaultProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -559,6 +938,48 @@ func AddIndependentPropertyGeneratorsForKeyVaultProperties(gens map[string]gopte gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) } +func Test_KeyVaultProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyVaultProperties_STATUS to KeyVaultProperties_STATUS via AssignProperties_To_KeyVaultProperties_STATUS & AssignProperties_From_KeyVaultProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyVaultProperties_STATUS, KeyVaultProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyVaultProperties_STATUS tests if a specific instance of KeyVaultProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyVaultProperties_STATUS(subject KeyVaultProperties_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.KeyVaultProperties_STATUS + err := copied.AssignProperties_To_KeyVaultProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyVaultProperties_STATUS + err = actual.AssignProperties_From_KeyVaultProperties_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_KeyVaultProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -621,6 +1042,48 @@ func AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(gens map[strin gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) } +func Test_PrivateEndpointConnectionReference_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnectionReference_STATUS to PrivateEndpointConnectionReference_STATUS via AssignProperties_To_PrivateEndpointConnectionReference_STATUS & AssignProperties_From_PrivateEndpointConnectionReference_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS, PrivateEndpointConnectionReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS tests if a specific instance of PrivateEndpointConnectionReference_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS(subject PrivateEndpointConnectionReference_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.PrivateEndpointConnectionReference_STATUS + err := copied.AssignProperties_To_PrivateEndpointConnectionReference_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnectionReference_STATUS + err = actual.AssignProperties_From_PrivateEndpointConnectionReference_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_PrivateEndpointConnectionReference_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -682,6 +1145,48 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATU gens["Id"] = gen.PtrOf(gen.AlphaString()) } +func Test_ResourceIdentity_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceIdentity to ResourceIdentity via AssignProperties_To_ResourceIdentity & AssignProperties_From_ResourceIdentity returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceIdentity, ResourceIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceIdentity tests if a specific instance of ResourceIdentity can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceIdentity(subject ResourceIdentity) 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.ResourceIdentity + err := copied.AssignProperties_To_ResourceIdentity(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceIdentity + err = actual.AssignProperties_From_ResourceIdentity(&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_ResourceIdentity_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -756,6 +1261,48 @@ func AddRelatedPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) } +func Test_ResourceIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceIdentity_STATUS to ResourceIdentity_STATUS via AssignProperties_To_ResourceIdentity_STATUS & AssignProperties_From_ResourceIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceIdentity_STATUS, ResourceIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceIdentity_STATUS tests if a specific instance of ResourceIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceIdentity_STATUS(subject ResourceIdentity_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.ResourceIdentity_STATUS + err := copied.AssignProperties_To_ResourceIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceIdentity_STATUS + err = actual.AssignProperties_From_ResourceIdentity_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_ResourceIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -835,6 +1382,48 @@ func AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopt UserIdentity_STATUSGenerator()) } +func Test_Sku_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Sku to Sku via AssignProperties_To_Sku & AssignProperties_From_Sku returns original", + prop.ForAll(RunPropertyAssignmentTestForSku, SkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSku tests if a specific instance of Sku can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSku(subject Sku) 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.Sku + err := copied.AssignProperties_To_Sku(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Sku + err = actual.AssignProperties_From_Sku(&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_Sku_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -895,6 +1484,48 @@ func AddIndependentPropertyGeneratorsForSku(gens map[string]gopter.Gen) { gens["Name"] = gen.PtrOf(gen.AlphaString()) } +func Test_Sku_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Sku_STATUS to Sku_STATUS via AssignProperties_To_Sku_STATUS & AssignProperties_From_Sku_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSku_STATUS, Sku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSku_STATUS tests if a specific instance of Sku_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSku_STATUS(subject Sku_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.Sku_STATUS + err := copied.AssignProperties_To_Sku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Sku_STATUS + err = actual.AssignProperties_From_Sku_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_Sku_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -955,34 +1586,37 @@ func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { gens["Name"] = gen.PtrOf(gen.AlphaString()) } -func Test_SystemData_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { +func Test_SystemData_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() - parameters.MinSuccessfulTests = 100 - parameters.MaxSize = 3 + parameters.MaxSize = 10 properties := gopter.NewProperties(parameters) properties.Property( - "Round trip of SystemData via JSON returns original", - prop.ForAll(RunJSONSerializationTestForSystemData, SystemDataGenerator())) - properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) + "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)) } -// RunJSONSerializationTestForSystemData runs a test to see if a specific instance of SystemData round trips to JSON and back losslessly -func RunJSONSerializationTestForSystemData(subject SystemData) string { - // Serialize to JSON - bin, err := json.Marshal(subject) +// 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() } - // Deserialize back into memory - var actual SystemData - err = json.Unmarshal(bin, &actual) + // 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 outcome + // Check for a match match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) if !match { actualFmt := pretty.Sprint(actual) @@ -994,32 +1628,6 @@ func RunJSONSerializationTestForSystemData(subject SystemData) string { return "" } -// Generator of SystemData instances for property testing - lazily instantiated by SystemDataGenerator() -var systemDataGenerator gopter.Gen - -// SystemDataGenerator returns a generator of SystemData instances for property testing. -func SystemDataGenerator() gopter.Gen { - if systemDataGenerator != nil { - return systemDataGenerator - } - - generators := make(map[string]gopter.Gen) - AddIndependentPropertyGeneratorsForSystemData(generators) - systemDataGenerator = gen.Struct(reflect.TypeOf(SystemData{}), generators) - - return systemDataGenerator -} - -// AddIndependentPropertyGeneratorsForSystemData is a factory method for creating gopter generators -func AddIndependentPropertyGeneratorsForSystemData(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_SystemData_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1085,6 +1693,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() @@ -1140,6 +1790,48 @@ func UserAssignedIdentityDetailsGenerator() gopter.Gen { return userAssignedIdentityDetailsGenerator } +func Test_UserIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserIdentity_STATUS to UserIdentity_STATUS via AssignProperties_To_UserIdentity_STATUS & AssignProperties_From_UserIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUserIdentity_STATUS, UserIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserIdentity_STATUS tests if a specific instance of UserIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserIdentity_STATUS(subject UserIdentity_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.UserIdentity_STATUS + err := copied.AssignProperties_To_UserIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserIdentity_STATUS + err = actual.AssignProperties_From_UserIdentity_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_UserIdentity_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/appconfiguration/v1api20220501/storage/structure.txt b/v2/api/appconfiguration/v1api20220501/storage/structure.txt index dee5ded4001..638527b530d 100644 --- a/v2/api/appconfiguration/v1api20220501/storage/structure.txt +++ b/v2/api/appconfiguration/v1api20220501/storage/structure.txt @@ -6,7 +6,7 @@ APIVersion: Enum (1 value) ConfigurationStore: Resource ├── Owner: resources/v1apiv20191001.ResourceGroup -├── Spec: Object (16 properties) +├── Spec: Object (15 properties) │ ├── AzureName: string │ ├── CreateMode: *string │ ├── DisableLocalAuth: *bool @@ -50,14 +50,6 @@ ConfigurationStore: Resource │ │ ├── Name: *string │ │ └── PropertyBag: genruntime.PropertyBag │ ├── SoftDeleteRetentionInDays: *int -│ ├── SystemData: *Object (7 properties) -│ │ ├── CreatedAt: *string -│ │ ├── CreatedBy: *string -│ │ ├── CreatedByType: *string -│ │ ├── LastModifiedAt: *string -│ │ ├── LastModifiedBy: *string -│ │ ├── LastModifiedByType: *string -│ │ └── PropertyBag: genruntime.PropertyBag │ └── Tags: map[string]string └── Status: Object (20 properties) ├── Conditions: conditions.Condition[] @@ -105,3 +97,37 @@ ConfigurationStore: Resource ├── Tags: map[string]string └── Type: *string +augmentConversionForConfigurationStore: Interface + +augmentConversionForConfigurationStoreOperatorSecrets: Interface + +augmentConversionForConfigurationStoreOperatorSpec: Interface + +augmentConversionForConfigurationStore_STATUS: Interface + +augmentConversionForConfigurationStore_Spec: Interface + +augmentConversionForEncryptionProperties: Interface + +augmentConversionForEncryptionProperties_STATUS: Interface + +augmentConversionForKeyVaultProperties: Interface + +augmentConversionForKeyVaultProperties_STATUS: Interface + +augmentConversionForPrivateEndpointConnectionReference_STATUS: Interface + +augmentConversionForResourceIdentity: Interface + +augmentConversionForResourceIdentity_STATUS: Interface + +augmentConversionForSku: Interface + +augmentConversionForSku_STATUS: Interface + +augmentConversionForSystemData_STATUS: Interface + +augmentConversionForUserAssignedIdentityDetails: Interface + +augmentConversionForUserIdentity_STATUS: Interface + diff --git a/v2/api/appconfiguration/v1api20220501/storage/zz_generated.deepcopy.go b/v2/api/appconfiguration/v1api20220501/storage/zz_generated.deepcopy.go index 1f7efdc4d01..841b3083f62 100644 --- a/v2/api/appconfiguration/v1api20220501/storage/zz_generated.deepcopy.go +++ b/v2/api/appconfiguration/v1api20220501/storage/zz_generated.deepcopy.go @@ -394,11 +394,6 @@ func (in *ConfigurationStore_Spec) DeepCopyInto(out *ConfigurationStore_Spec) { *out = new(int) **out = **in } - if in.SystemData != nil { - in, out := &in.SystemData, &out.SystemData - *out = new(SystemData) - (*in).DeepCopyInto(*out) - } if in.Tags != nil { in, out := &in.Tags, &out.Tags *out = make(map[string]string, len(*in)) @@ -695,58 +690,6 @@ func (in *Sku_STATUS) DeepCopy() *Sku_STATUS { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SystemData) DeepCopyInto(out *SystemData) { - *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. -func (in *SystemData) DeepCopy() *SystemData { - if in == nil { - return nil - } - out := new(SystemData) - 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 diff --git a/v2/api/appconfiguration/v1api20220501/structure.txt b/v2/api/appconfiguration/v1api20220501/structure.txt index 189413e83aa..daeb52aea62 100644 --- a/v2/api/appconfiguration/v1api20220501/structure.txt +++ b/v2/api/appconfiguration/v1api20220501/structure.txt @@ -6,7 +6,7 @@ APIVersion: Enum (1 value) ConfigurationStore: Resource ├── Owner: resources/v1apiv20191001.ResourceGroup -├── Spec: Object (14 properties) +├── Spec: Object (13 properties) │ ├── AzureName: Validated (3 rules) │ │ ├── Rule 0: MaxLength: 50 │ │ ├── Rule 1: MinLength: 5 @@ -52,21 +52,6 @@ ConfigurationStore: Resource │ ├── Sku: *Object (1 property) │ │ └── Name: *string │ ├── SoftDeleteRetentionInDays: *int -│ ├── 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 └── Status: Object (19 properties) ├── Conditions: conditions.Condition[] diff --git a/v2/api/appconfiguration/v1api20220501/zz_generated.deepcopy.go b/v2/api/appconfiguration/v1api20220501/zz_generated.deepcopy.go index e56a3aacf0d..ab6173ed1f5 100644 --- a/v2/api/appconfiguration/v1api20220501/zz_generated.deepcopy.go +++ b/v2/api/appconfiguration/v1api20220501/zz_generated.deepcopy.go @@ -366,11 +366,6 @@ func (in *ConfigurationStore_Spec) DeepCopyInto(out *ConfigurationStore_Spec) { *out = new(int) **out = **in } - if in.SystemData != nil { - in, out := &in.SystemData, &out.SystemData - *out = new(SystemData) - (*in).DeepCopyInto(*out) - } if in.Tags != nil { in, out := &in.Tags, &out.Tags *out = make(map[string]string, len(*in)) @@ -602,51 +597,6 @@ func (in *Sku_STATUS) DeepCopy() *Sku_STATUS { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SystemData) DeepCopyInto(out *SystemData) { - *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) - **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) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData. -func (in *SystemData) DeepCopy() *SystemData { - if in == nil { - return nil - } - out := new(SystemData) - 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 diff --git a/v2/api/appconfiguration/v20240601/arm/configuration_store_spec_types_gen.go b/v2/api/appconfiguration/v20240601/arm/configuration_store_spec_types_gen.go new file mode 100644 index 00000000000..e96d09f6728 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/configuration_store_spec_types_gen.go @@ -0,0 +1,189 @@ +// 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 ConfigurationStore_Spec struct { + // Identity: The managed identity information, if configured. + Identity *ResourceIdentity `json:"identity,omitempty"` + + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + + // Properties: The properties of a configuration store. + Properties *ConfigurationStoreProperties `json:"properties,omitempty"` + + // Sku: The sku of the configuration store. + Sku *Sku `json:"sku,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &ConfigurationStore_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (store ConfigurationStore_Spec) GetAPIVersion() string { + return "2024-06-01" +} + +// GetName returns the Name of the resource +func (store *ConfigurationStore_Spec) GetName() string { + return store.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores" +func (store *ConfigurationStore_Spec) GetType() string { + return "Microsoft.AppConfiguration/configurationStores" +} + +// The properties of a configuration store. +type ConfigurationStoreProperties struct { + // CreateMode: Indicates whether the configuration store need to be recovered. + CreateMode *ConfigurationStoreProperties_CreateMode `json:"createMode,omitempty"` + + // DataPlaneProxy: Property specifying the configuration of data plane proxy for Azure Resource Manager (ARM). + DataPlaneProxy *DataPlaneProxyProperties `json:"dataPlaneProxy,omitempty"` + + // DefaultKeyValueRevisionRetentionPeriodInSeconds: The duration in seconds to retain new key value revisions. Defaults to + // 604800 (7 days) for Free SKU stores and 2592000 (30 days) for Standard SKU stores and Premium SKU stores. + DefaultKeyValueRevisionRetentionPeriodInSeconds *int `json:"defaultKeyValueRevisionRetentionPeriodInSeconds,omitempty"` + + // DisableLocalAuth: Disables all authentication methods other than AAD authentication. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // EnablePurgeProtection: Property specifying whether protection against purge is enabled for this configuration store. + EnablePurgeProtection *bool `json:"enablePurgeProtection,omitempty"` + + // Encryption: The encryption settings of the configuration store. + Encryption *EncryptionProperties `json:"encryption,omitempty"` + + // PublicNetworkAccess: Control permission for data plane traffic coming from public networks while private endpoint is + // enabled. + PublicNetworkAccess *ConfigurationStoreProperties_PublicNetworkAccess `json:"publicNetworkAccess,omitempty"` + + // SoftDeleteRetentionInDays: The amount of time in days that the configuration store will be retained when it is soft + // deleted. + SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` +} + +// An identity that can be associated with a resource. +type ResourceIdentity struct { + // Type: The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created + // identity and a set of user-assigned identities. The type 'None' will remove any identities. + Type *ResourceIdentity_Type `json:"type,omitempty"` + UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// Describes a configuration store SKU. +type Sku struct { + // Name: The SKU name of the configuration store. + Name *string `json:"name,omitempty"` +} + +// +kubebuilder:validation:Enum={"Default","Recover"} +type ConfigurationStoreProperties_CreateMode string + +const ( + ConfigurationStoreProperties_CreateMode_Default = ConfigurationStoreProperties_CreateMode("Default") + ConfigurationStoreProperties_CreateMode_Recover = ConfigurationStoreProperties_CreateMode("Recover") +) + +// Mapping from string to ConfigurationStoreProperties_CreateMode +var configurationStoreProperties_CreateMode_Values = map[string]ConfigurationStoreProperties_CreateMode{ + "default": ConfigurationStoreProperties_CreateMode_Default, + "recover": ConfigurationStoreProperties_CreateMode_Recover, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type ConfigurationStoreProperties_PublicNetworkAccess string + +const ( + ConfigurationStoreProperties_PublicNetworkAccess_Disabled = ConfigurationStoreProperties_PublicNetworkAccess("Disabled") + ConfigurationStoreProperties_PublicNetworkAccess_Enabled = ConfigurationStoreProperties_PublicNetworkAccess("Enabled") +) + +// Mapping from string to ConfigurationStoreProperties_PublicNetworkAccess +var configurationStoreProperties_PublicNetworkAccess_Values = map[string]ConfigurationStoreProperties_PublicNetworkAccess{ + "disabled": ConfigurationStoreProperties_PublicNetworkAccess_Disabled, + "enabled": ConfigurationStoreProperties_PublicNetworkAccess_Enabled, +} + +// The data plane proxy settings for a configuration store. +type DataPlaneProxyProperties struct { + // AuthenticationMode: The data plane proxy authentication mode. This property manages the authentication mode of request + // to the data plane resources. + AuthenticationMode *DataPlaneProxyProperties_AuthenticationMode `json:"authenticationMode,omitempty"` + + // PrivateLinkDelegation: The data plane proxy private link delegation. This property manages if a request from delegated + // Azure Resource Manager (ARM) private link is allowed when the data plane resource requires private link. + PrivateLinkDelegation *DataPlaneProxyProperties_PrivateLinkDelegation `json:"privateLinkDelegation,omitempty"` +} + +// The encryption settings for a configuration store. +type EncryptionProperties struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` +} + +// +kubebuilder:validation:Enum={"None","SystemAssigned","SystemAssigned, UserAssigned","UserAssigned"} +type ResourceIdentity_Type string + +const ( + ResourceIdentity_Type_None = ResourceIdentity_Type("None") + ResourceIdentity_Type_SystemAssigned = ResourceIdentity_Type("SystemAssigned") + ResourceIdentity_Type_SystemAssignedUserAssigned = ResourceIdentity_Type("SystemAssigned, UserAssigned") + ResourceIdentity_Type_UserAssigned = ResourceIdentity_Type("UserAssigned") +) + +// Mapping from string to ResourceIdentity_Type +var resourceIdentity_Type_Values = map[string]ResourceIdentity_Type{ + "none": ResourceIdentity_Type_None, + "systemassigned": ResourceIdentity_Type_SystemAssigned, + "systemassigned, userassigned": ResourceIdentity_Type_SystemAssignedUserAssigned, + "userassigned": ResourceIdentity_Type_UserAssigned, +} + +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { +} + +// +kubebuilder:validation:Enum={"Local","Pass-through"} +type DataPlaneProxyProperties_AuthenticationMode string + +const ( + DataPlaneProxyProperties_AuthenticationMode_Local = DataPlaneProxyProperties_AuthenticationMode("Local") + DataPlaneProxyProperties_AuthenticationMode_PassThrough = DataPlaneProxyProperties_AuthenticationMode("Pass-through") +) + +// Mapping from string to DataPlaneProxyProperties_AuthenticationMode +var dataPlaneProxyProperties_AuthenticationMode_Values = map[string]DataPlaneProxyProperties_AuthenticationMode{ + "local": DataPlaneProxyProperties_AuthenticationMode_Local, + "pass-through": DataPlaneProxyProperties_AuthenticationMode_PassThrough, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type DataPlaneProxyProperties_PrivateLinkDelegation string + +const ( + DataPlaneProxyProperties_PrivateLinkDelegation_Disabled = DataPlaneProxyProperties_PrivateLinkDelegation("Disabled") + DataPlaneProxyProperties_PrivateLinkDelegation_Enabled = DataPlaneProxyProperties_PrivateLinkDelegation("Enabled") +) + +// Mapping from string to DataPlaneProxyProperties_PrivateLinkDelegation +var dataPlaneProxyProperties_PrivateLinkDelegation_Values = map[string]DataPlaneProxyProperties_PrivateLinkDelegation{ + "disabled": DataPlaneProxyProperties_PrivateLinkDelegation_Disabled, + "enabled": DataPlaneProxyProperties_PrivateLinkDelegation_Enabled, +} + +// Settings concerning key vault encryption for a configuration store. +type KeyVaultProperties struct { + // IdentityClientId: The client id of the identity which will be used to access key vault. + IdentityClientId *string `json:"identityClientId,omitempty"` + + // KeyIdentifier: The URI of the key vault key used to encrypt data. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` +} diff --git a/v2/api/appconfiguration/v20240601/arm/configuration_store_spec_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/configuration_store_spec_types_gen_test.go new file mode 100644 index 00000000000..78a9520555c --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/configuration_store_spec_types_gen_test.go @@ -0,0 +1,559 @@ +// 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_ConfigurationStoreProperties_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 ConfigurationStoreProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStoreProperties, ConfigurationStorePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStoreProperties runs a test to see if a specific instance of ConfigurationStoreProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStoreProperties(subject ConfigurationStoreProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStoreProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStoreProperties instances for property testing - lazily instantiated by +// ConfigurationStorePropertiesGenerator() +var configurationStorePropertiesGenerator gopter.Gen + +// ConfigurationStorePropertiesGenerator returns a generator of ConfigurationStoreProperties instances for property testing. +// We first initialize configurationStorePropertiesGenerator 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 ConfigurationStorePropertiesGenerator() gopter.Gen { + if configurationStorePropertiesGenerator != nil { + return configurationStorePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStoreProperties(generators) + configurationStorePropertiesGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStoreProperties(generators) + AddRelatedPropertyGeneratorsForConfigurationStoreProperties(generators) + configurationStorePropertiesGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreProperties{}), generators) + + return configurationStorePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStoreProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStoreProperties(gens map[string]gopter.Gen) { + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_CreateMode_Default, ConfigurationStoreProperties_CreateMode_Recover)) + gens["DefaultKeyValueRevisionRetentionPeriodInSeconds"] = gen.PtrOf(gen.Int()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["EnablePurgeProtection"] = gen.PtrOf(gen.Bool()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_PublicNetworkAccess_Disabled, ConfigurationStoreProperties_PublicNetworkAccess_Enabled)) + gens["SoftDeleteRetentionInDays"] = gen.PtrOf(gen.Int()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStoreProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStoreProperties(gens map[string]gopter.Gen) { + gens["DataPlaneProxy"] = gen.PtrOf(DataPlaneProxyPropertiesGenerator()) + gens["Encryption"] = gen.PtrOf(EncryptionPropertiesGenerator()) +} + +func Test_ConfigurationStore_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 ConfigurationStore_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore_Spec, ConfigurationStore_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore_Spec runs a test to see if a specific instance of ConfigurationStore_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore_Spec(subject ConfigurationStore_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore_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 ConfigurationStore_Spec instances for property testing - lazily instantiated by +// ConfigurationStore_SpecGenerator() +var configurationStore_SpecGenerator gopter.Gen + +// ConfigurationStore_SpecGenerator returns a generator of ConfigurationStore_Spec instances for property testing. +// We first initialize configurationStore_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 ConfigurationStore_SpecGenerator() gopter.Gen { + if configurationStore_SpecGenerator != nil { + return configurationStore_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_Spec(generators) + configurationStore_SpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_Spec(generators) + AddRelatedPropertyGeneratorsForConfigurationStore_Spec(generators) + configurationStore_SpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_Spec{}), generators) + + return configurationStore_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStore_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopter.Gen) { + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStore_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(ResourceIdentityGenerator()) + gens["Properties"] = gen.PtrOf(ConfigurationStorePropertiesGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_DataPlaneProxyProperties_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 DataPlaneProxyProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneProxyProperties, DataPlaneProxyPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneProxyProperties runs a test to see if a specific instance of DataPlaneProxyProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneProxyProperties(subject DataPlaneProxyProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneProxyProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneProxyProperties instances for property testing - lazily instantiated by +// DataPlaneProxyPropertiesGenerator() +var dataPlaneProxyPropertiesGenerator gopter.Gen + +// DataPlaneProxyPropertiesGenerator returns a generator of DataPlaneProxyProperties instances for property testing. +func DataPlaneProxyPropertiesGenerator() gopter.Gen { + if dataPlaneProxyPropertiesGenerator != nil { + return dataPlaneProxyPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneProxyProperties(generators) + dataPlaneProxyPropertiesGenerator = gen.Struct(reflect.TypeOf(DataPlaneProxyProperties{}), generators) + + return dataPlaneProxyPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneProxyProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneProxyProperties(gens map[string]gopter.Gen) { + gens["AuthenticationMode"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_AuthenticationMode_Local, DataPlaneProxyProperties_AuthenticationMode_PassThrough)) + gens["PrivateLinkDelegation"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_PrivateLinkDelegation_Disabled, DataPlaneProxyProperties_PrivateLinkDelegation_Enabled)) +} + +func Test_EncryptionProperties_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 EncryptionProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperties, EncryptionPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperties runs a test to see if a specific instance of EncryptionProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperties(subject EncryptionProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of EncryptionProperties instances for property testing - lazily instantiated by +// EncryptionPropertiesGenerator() +var encryptionPropertiesGenerator gopter.Gen + +// EncryptionPropertiesGenerator returns a generator of EncryptionProperties instances for property testing. +func EncryptionPropertiesGenerator() gopter.Gen { + if encryptionPropertiesGenerator != nil { + return encryptionPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForEncryptionProperties(generators) + encryptionPropertiesGenerator = gen.Struct(reflect.TypeOf(EncryptionProperties{}), generators) + + return encryptionPropertiesGenerator +} + +// AddRelatedPropertyGeneratorsForEncryptionProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperties(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) +} + +func Test_KeyVaultProperties_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 KeyVaultProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyVaultProperties, KeyVaultPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyVaultProperties runs a test to see if a specific instance of KeyVaultProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyVaultProperties(subject KeyVaultProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyVaultProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyVaultProperties instances for property testing - lazily instantiated by KeyVaultPropertiesGenerator() +var keyVaultPropertiesGenerator gopter.Gen + +// KeyVaultPropertiesGenerator returns a generator of KeyVaultProperties instances for property testing. +func KeyVaultPropertiesGenerator() gopter.Gen { + if keyVaultPropertiesGenerator != nil { + return keyVaultPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyVaultProperties(generators) + keyVaultPropertiesGenerator = gen.Struct(reflect.TypeOf(KeyVaultProperties{}), generators) + + return keyVaultPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForKeyVaultProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyVaultProperties(gens map[string]gopter.Gen) { + gens["IdentityClientId"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceIdentity_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 ResourceIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceIdentity, ResourceIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceIdentity runs a test to see if a specific instance of ResourceIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceIdentity(subject ResourceIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceIdentity + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceIdentity instances for property testing - lazily instantiated by ResourceIdentityGenerator() +var resourceIdentityGenerator gopter.Gen + +// ResourceIdentityGenerator returns a generator of ResourceIdentity instances for property testing. +// We first initialize resourceIdentityGenerator 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 ResourceIdentityGenerator() gopter.Gen { + if resourceIdentityGenerator != nil { + return resourceIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity(generators) + resourceIdentityGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity(generators) + AddRelatedPropertyGeneratorsForResourceIdentity(generators) + resourceIdentityGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity{}), generators) + + return resourceIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForResourceIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf( + ResourceIdentity_Type_None, + ResourceIdentity_Type_SystemAssigned, + ResourceIdentity_Type_SystemAssignedUserAssigned, + ResourceIdentity_Type_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForResourceIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityDetailsGenerator()) +} + +func Test_Sku_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 Sku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSku, SkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSku runs a test to see if a specific instance of Sku round trips to JSON and back losslessly +func RunJSONSerializationTestForSku(subject Sku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Sku + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Sku instances for property testing - lazily instantiated by SkuGenerator() +var skuGenerator gopter.Gen + +// SkuGenerator returns a generator of Sku instances for property testing. +func SkuGenerator() gopter.Gen { + if skuGenerator != nil { + return skuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSku(generators) + skuGenerator = gen.Struct(reflect.TypeOf(Sku{}), generators) + + return skuGenerator +} + +// AddIndependentPropertyGeneratorsForSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSku(gens map[string]gopter.Gen) { + gens["Name"] = 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/appconfiguration/v20240601/arm/configuration_store_status_types_gen.go b/v2/api/appconfiguration/v20240601/arm/configuration_store_status_types_gen.go new file mode 100644 index 00000000000..0240e92a723 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/configuration_store_status_types_gen.go @@ -0,0 +1,380 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +// The configuration store along with all resource properties. The Configuration Store will have all information to begin +// utilizing it. +type ConfigurationStore_STATUS struct { + // Id: Fully qualified resource ID for the resource. Ex - + // /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} + Id *string `json:"id,omitempty"` + + // Identity: The managed identity information, if configured. + Identity *ResourceIdentity_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: The properties of a configuration store. + Properties *ConfigurationStoreProperties_STATUS `json:"properties,omitempty"` + + // Sku: The sku of the configuration store. + Sku *Sku_STATUS `json:"sku,omitempty"` + + // SystemData: Resource system metadata. + 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"` +} + +// The properties of a configuration store. +type ConfigurationStoreProperties_STATUS struct { + // CreateMode: Indicates whether the configuration store need to be recovered. + CreateMode *ConfigurationStoreProperties_CreateMode_STATUS `json:"createMode,omitempty"` + + // CreationDate: The creation date of configuration store. + CreationDate *string `json:"creationDate,omitempty"` + + // DataPlaneProxy: Property specifying the configuration of data plane proxy for Azure Resource Manager (ARM). + DataPlaneProxy *DataPlaneProxyProperties_STATUS `json:"dataPlaneProxy,omitempty"` + + // DefaultKeyValueRevisionRetentionPeriodInSeconds: The duration in seconds to retain new key value revisions. Defaults to + // 604800 (7 days) for Free SKU stores and 2592000 (30 days) for Standard SKU stores and Premium SKU stores. + DefaultKeyValueRevisionRetentionPeriodInSeconds *int `json:"defaultKeyValueRevisionRetentionPeriodInSeconds,omitempty"` + + // DisableLocalAuth: Disables all authentication methods other than AAD authentication. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // EnablePurgeProtection: Property specifying whether protection against purge is enabled for this configuration store. + EnablePurgeProtection *bool `json:"enablePurgeProtection,omitempty"` + + // Encryption: The encryption settings of the configuration store. + Encryption *EncryptionProperties_STATUS `json:"encryption,omitempty"` + + // Endpoint: The DNS endpoint where the configuration store API will be available. + Endpoint *string `json:"endpoint,omitempty"` + + // PrivateEndpointConnections: The list of private endpoint connections that are set up for this resource. + PrivateEndpointConnections []PrivateEndpointConnectionReference_STATUS `json:"privateEndpointConnections,omitempty"` + + // ProvisioningState: The provisioning state of the configuration store. + ProvisioningState *ConfigurationStoreProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // PublicNetworkAccess: Control permission for data plane traffic coming from public networks while private endpoint is + // enabled. + PublicNetworkAccess *ConfigurationStoreProperties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"` + + // SoftDeleteRetentionInDays: The amount of time in days that the configuration store will be retained when it is soft + // deleted. + SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` +} + +// An identity that can be associated with a resource. +type ResourceIdentity_STATUS struct { + // PrincipalId: The principal id of the identity. This property will only be provided for a system-assigned identity. + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: The tenant id associated with the resource's identity. This property will only be provided for a + // system-assigned identity. + TenantId *string `json:"tenantId,omitempty"` + + // Type: The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created + // identity and a set of user-assigned identities. The type 'None' will remove any identities. + Type *ResourceIdentity_Type_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: The list of user-assigned identities associated with the resource. The user-assigned identity + // dictionary keys will be ARM resource ids in the form: + // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities map[string]UserIdentity_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// Describes a configuration store SKU. +type Sku_STATUS struct { + // Name: The SKU name of the configuration store. + Name *string `json:"name,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"` +} + +type ConfigurationStoreProperties_CreateMode_STATUS string + +const ( + ConfigurationStoreProperties_CreateMode_STATUS_Default = ConfigurationStoreProperties_CreateMode_STATUS("Default") + ConfigurationStoreProperties_CreateMode_STATUS_Recover = ConfigurationStoreProperties_CreateMode_STATUS("Recover") +) + +// Mapping from string to ConfigurationStoreProperties_CreateMode_STATUS +var configurationStoreProperties_CreateMode_STATUS_Values = map[string]ConfigurationStoreProperties_CreateMode_STATUS{ + "default": ConfigurationStoreProperties_CreateMode_STATUS_Default, + "recover": ConfigurationStoreProperties_CreateMode_STATUS_Recover, +} + +type ConfigurationStoreProperties_ProvisioningState_STATUS string + +const ( + ConfigurationStoreProperties_ProvisioningState_STATUS_Canceled = ConfigurationStoreProperties_ProvisioningState_STATUS("Canceled") + ConfigurationStoreProperties_ProvisioningState_STATUS_Creating = ConfigurationStoreProperties_ProvisioningState_STATUS("Creating") + ConfigurationStoreProperties_ProvisioningState_STATUS_Deleting = ConfigurationStoreProperties_ProvisioningState_STATUS("Deleting") + ConfigurationStoreProperties_ProvisioningState_STATUS_Failed = ConfigurationStoreProperties_ProvisioningState_STATUS("Failed") + ConfigurationStoreProperties_ProvisioningState_STATUS_Succeeded = ConfigurationStoreProperties_ProvisioningState_STATUS("Succeeded") + ConfigurationStoreProperties_ProvisioningState_STATUS_Updating = ConfigurationStoreProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to ConfigurationStoreProperties_ProvisioningState_STATUS +var configurationStoreProperties_ProvisioningState_STATUS_Values = map[string]ConfigurationStoreProperties_ProvisioningState_STATUS{ + "canceled": ConfigurationStoreProperties_ProvisioningState_STATUS_Canceled, + "creating": ConfigurationStoreProperties_ProvisioningState_STATUS_Creating, + "deleting": ConfigurationStoreProperties_ProvisioningState_STATUS_Deleting, + "failed": ConfigurationStoreProperties_ProvisioningState_STATUS_Failed, + "succeeded": ConfigurationStoreProperties_ProvisioningState_STATUS_Succeeded, + "updating": ConfigurationStoreProperties_ProvisioningState_STATUS_Updating, +} + +type ConfigurationStoreProperties_PublicNetworkAccess_STATUS string + +const ( + ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Disabled = ConfigurationStoreProperties_PublicNetworkAccess_STATUS("Disabled") + ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Enabled = ConfigurationStoreProperties_PublicNetworkAccess_STATUS("Enabled") +) + +// Mapping from string to ConfigurationStoreProperties_PublicNetworkAccess_STATUS +var configurationStoreProperties_PublicNetworkAccess_STATUS_Values = map[string]ConfigurationStoreProperties_PublicNetworkAccess_STATUS{ + "disabled": ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Disabled, + "enabled": ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Enabled, +} + +// The data plane proxy settings for a configuration store. +type DataPlaneProxyProperties_STATUS struct { + // AuthenticationMode: The data plane proxy authentication mode. This property manages the authentication mode of request + // to the data plane resources. + AuthenticationMode *DataPlaneProxyProperties_AuthenticationMode_STATUS `json:"authenticationMode,omitempty"` + + // PrivateLinkDelegation: The data plane proxy private link delegation. This property manages if a request from delegated + // Azure Resource Manager (ARM) private link is allowed when the data plane resource requires private link. + PrivateLinkDelegation *DataPlaneProxyProperties_PrivateLinkDelegation_STATUS `json:"privateLinkDelegation,omitempty"` +} + +// The encryption settings for a configuration store. +type EncryptionProperties_STATUS struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` +} + +// A reference to a related private endpoint connection. +type PrivateEndpointConnectionReference_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // Properties: The properties of a private endpoint connection. + Properties *PrivateEndpointConnectionProperties_STATUS `json:"properties,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +type ResourceIdentity_Type_STATUS string + +const ( + ResourceIdentity_Type_STATUS_None = ResourceIdentity_Type_STATUS("None") + ResourceIdentity_Type_STATUS_SystemAssigned = ResourceIdentity_Type_STATUS("SystemAssigned") + ResourceIdentity_Type_STATUS_SystemAssignedUserAssigned = ResourceIdentity_Type_STATUS("SystemAssigned, UserAssigned") + ResourceIdentity_Type_STATUS_UserAssigned = ResourceIdentity_Type_STATUS("UserAssigned") +) + +// Mapping from string to ResourceIdentity_Type_STATUS +var resourceIdentity_Type_STATUS_Values = map[string]ResourceIdentity_Type_STATUS{ + "none": ResourceIdentity_Type_STATUS_None, + "systemassigned": ResourceIdentity_Type_STATUS_SystemAssigned, + "systemassigned, userassigned": ResourceIdentity_Type_STATUS_SystemAssignedUserAssigned, + "userassigned": ResourceIdentity_Type_STATUS_UserAssigned, +} + +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, +} + +// A resource identity that is managed by the user of the service. +type UserIdentity_STATUS struct { + // ClientId: The client ID of the user-assigned identity. + ClientId *string `json:"clientId,omitempty"` + + // PrincipalId: The principal ID of the user-assigned identity. + PrincipalId *string `json:"principalId,omitempty"` +} + +type DataPlaneProxyProperties_AuthenticationMode_STATUS string + +const ( + DataPlaneProxyProperties_AuthenticationMode_STATUS_Local = DataPlaneProxyProperties_AuthenticationMode_STATUS("Local") + DataPlaneProxyProperties_AuthenticationMode_STATUS_PassThrough = DataPlaneProxyProperties_AuthenticationMode_STATUS("Pass-through") +) + +// Mapping from string to DataPlaneProxyProperties_AuthenticationMode_STATUS +var dataPlaneProxyProperties_AuthenticationMode_STATUS_Values = map[string]DataPlaneProxyProperties_AuthenticationMode_STATUS{ + "local": DataPlaneProxyProperties_AuthenticationMode_STATUS_Local, + "pass-through": DataPlaneProxyProperties_AuthenticationMode_STATUS_PassThrough, +} + +type DataPlaneProxyProperties_PrivateLinkDelegation_STATUS string + +const ( + DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Disabled = DataPlaneProxyProperties_PrivateLinkDelegation_STATUS("Disabled") + DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Enabled = DataPlaneProxyProperties_PrivateLinkDelegation_STATUS("Enabled") +) + +// Mapping from string to DataPlaneProxyProperties_PrivateLinkDelegation_STATUS +var dataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Values = map[string]DataPlaneProxyProperties_PrivateLinkDelegation_STATUS{ + "disabled": DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Disabled, + "enabled": DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Enabled, +} + +// Settings concerning key vault encryption for a configuration store. +type KeyVaultProperties_STATUS struct { + // IdentityClientId: The client id of the identity which will be used to access key vault. + IdentityClientId *string `json:"identityClientId,omitempty"` + + // KeyIdentifier: The URI of the key vault key used to encrypt data. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` +} + +// Properties of a private endpoint connection. +type PrivateEndpointConnectionProperties_STATUS struct { + // PrivateEndpoint: The resource of private endpoint. + PrivateEndpoint *PrivateEndpoint_STATUS `json:"privateEndpoint,omitempty"` + + // PrivateLinkServiceConnectionState: A collection of information about the state of the connection between service + // consumer and provider. + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState_STATUS `json:"privateLinkServiceConnectionState,omitempty"` + + // ProvisioningState: The provisioning status of the private endpoint connection. + ProvisioningState *PrivateEndpointConnectionProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` +} + +// Private endpoint which a connection belongs to. +type PrivateEndpoint_STATUS struct { + // Id: The resource Id for private endpoint + Id *string `json:"id,omitempty"` +} + +type PrivateEndpointConnectionProperties_ProvisioningState_STATUS string + +const ( + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Canceled = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Canceled") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Creating = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Creating") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Deleting = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Deleting") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Failed = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Failed") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Succeeded = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Succeeded") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Updating = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to PrivateEndpointConnectionProperties_ProvisioningState_STATUS +var privateEndpointConnectionProperties_ProvisioningState_STATUS_Values = map[string]PrivateEndpointConnectionProperties_ProvisioningState_STATUS{ + "canceled": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Canceled, + "creating": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Creating, + "deleting": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Deleting, + "failed": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Failed, + "succeeded": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Succeeded, + "updating": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Updating, +} + +// The state of a private link service connection. +type PrivateLinkServiceConnectionState_STATUS struct { + // ActionsRequired: Any action that is required beyond basic workflow (approve/ reject/ disconnect) + ActionsRequired *PrivateLinkServiceConnectionState_ActionsRequired_STATUS `json:"actionsRequired,omitempty"` + + // Description: The private link service connection description. + Description *string `json:"description,omitempty"` + + // Status: The private link service connection status. + Status *PrivateLinkServiceConnectionState_Status_STATUS `json:"status,omitempty"` +} + +type PrivateLinkServiceConnectionState_ActionsRequired_STATUS string + +const ( + PrivateLinkServiceConnectionState_ActionsRequired_STATUS_None = PrivateLinkServiceConnectionState_ActionsRequired_STATUS("None") + PrivateLinkServiceConnectionState_ActionsRequired_STATUS_Recreate = PrivateLinkServiceConnectionState_ActionsRequired_STATUS("Recreate") +) + +// Mapping from string to PrivateLinkServiceConnectionState_ActionsRequired_STATUS +var privateLinkServiceConnectionState_ActionsRequired_STATUS_Values = map[string]PrivateLinkServiceConnectionState_ActionsRequired_STATUS{ + "none": PrivateLinkServiceConnectionState_ActionsRequired_STATUS_None, + "recreate": PrivateLinkServiceConnectionState_ActionsRequired_STATUS_Recreate, +} + +type PrivateLinkServiceConnectionState_Status_STATUS string + +const ( + PrivateLinkServiceConnectionState_Status_STATUS_Approved = PrivateLinkServiceConnectionState_Status_STATUS("Approved") + PrivateLinkServiceConnectionState_Status_STATUS_Disconnected = PrivateLinkServiceConnectionState_Status_STATUS("Disconnected") + PrivateLinkServiceConnectionState_Status_STATUS_Pending = PrivateLinkServiceConnectionState_Status_STATUS("Pending") + PrivateLinkServiceConnectionState_Status_STATUS_Rejected = PrivateLinkServiceConnectionState_Status_STATUS("Rejected") +) + +// Mapping from string to PrivateLinkServiceConnectionState_Status_STATUS +var privateLinkServiceConnectionState_Status_STATUS_Values = map[string]PrivateLinkServiceConnectionState_Status_STATUS{ + "approved": PrivateLinkServiceConnectionState_Status_STATUS_Approved, + "disconnected": PrivateLinkServiceConnectionState_Status_STATUS_Disconnected, + "pending": PrivateLinkServiceConnectionState_Status_STATUS_Pending, + "rejected": PrivateLinkServiceConnectionState_Status_STATUS_Rejected, +} diff --git a/v2/api/appconfiguration/v20240601/arm/configuration_store_status_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/configuration_store_status_types_gen_test.go new file mode 100644 index 00000000000..0ecba0ffcbb --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/configuration_store_status_types_gen_test.go @@ -0,0 +1,943 @@ +// 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_ConfigurationStoreProperties_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 ConfigurationStoreProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStoreProperties_STATUS, ConfigurationStoreProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStoreProperties_STATUS runs a test to see if a specific instance of ConfigurationStoreProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStoreProperties_STATUS(subject ConfigurationStoreProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStoreProperties_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 ConfigurationStoreProperties_STATUS instances for property testing - lazily instantiated by +// ConfigurationStoreProperties_STATUSGenerator() +var configurationStoreProperties_STATUSGenerator gopter.Gen + +// ConfigurationStoreProperties_STATUSGenerator returns a generator of ConfigurationStoreProperties_STATUS instances for property testing. +// We first initialize configurationStoreProperties_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 ConfigurationStoreProperties_STATUSGenerator() gopter.Gen { + if configurationStoreProperties_STATUSGenerator != nil { + return configurationStoreProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStoreProperties_STATUS(generators) + configurationStoreProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStoreProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForConfigurationStoreProperties_STATUS(generators) + configurationStoreProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreProperties_STATUS{}), generators) + + return configurationStoreProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStoreProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStoreProperties_STATUS(gens map[string]gopter.Gen) { + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_CreateMode_STATUS_Default, ConfigurationStoreProperties_CreateMode_STATUS_Recover)) + gens["CreationDate"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultKeyValueRevisionRetentionPeriodInSeconds"] = gen.PtrOf(gen.Int()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["EnablePurgeProtection"] = gen.PtrOf(gen.Bool()) + gens["Endpoint"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ConfigurationStoreProperties_ProvisioningState_STATUS_Canceled, + ConfigurationStoreProperties_ProvisioningState_STATUS_Creating, + ConfigurationStoreProperties_ProvisioningState_STATUS_Deleting, + ConfigurationStoreProperties_ProvisioningState_STATUS_Failed, + ConfigurationStoreProperties_ProvisioningState_STATUS_Succeeded, + ConfigurationStoreProperties_ProvisioningState_STATUS_Updating)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Disabled, ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Enabled)) + gens["SoftDeleteRetentionInDays"] = gen.PtrOf(gen.Int()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStoreProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStoreProperties_STATUS(gens map[string]gopter.Gen) { + gens["DataPlaneProxy"] = gen.PtrOf(DataPlaneProxyProperties_STATUSGenerator()) + gens["Encryption"] = gen.PtrOf(EncryptionProperties_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnectionReference_STATUSGenerator()) +} + +func Test_ConfigurationStore_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 ConfigurationStore_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore_STATUS, ConfigurationStore_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore_STATUS runs a test to see if a specific instance of ConfigurationStore_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore_STATUS(subject ConfigurationStore_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore_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 ConfigurationStore_STATUS instances for property testing - lazily instantiated by +// ConfigurationStore_STATUSGenerator() +var configurationStore_STATUSGenerator gopter.Gen + +// ConfigurationStore_STATUSGenerator returns a generator of ConfigurationStore_STATUS instances for property testing. +// We first initialize configurationStore_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 ConfigurationStore_STATUSGenerator() gopter.Gen { + if configurationStore_STATUSGenerator != nil { + return configurationStore_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(generators) + configurationStore_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(generators) + AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(generators) + configurationStore_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_STATUS{}), generators) + + return configurationStore_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStore_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStore_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()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStore_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(ResourceIdentity_STATUSGenerator()) + gens["Properties"] = gen.PtrOf(ConfigurationStoreProperties_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_DataPlaneProxyProperties_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 DataPlaneProxyProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneProxyProperties_STATUS, DataPlaneProxyProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneProxyProperties_STATUS runs a test to see if a specific instance of DataPlaneProxyProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneProxyProperties_STATUS(subject DataPlaneProxyProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneProxyProperties_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 DataPlaneProxyProperties_STATUS instances for property testing - lazily instantiated by +// DataPlaneProxyProperties_STATUSGenerator() +var dataPlaneProxyProperties_STATUSGenerator gopter.Gen + +// DataPlaneProxyProperties_STATUSGenerator returns a generator of DataPlaneProxyProperties_STATUS instances for property testing. +func DataPlaneProxyProperties_STATUSGenerator() gopter.Gen { + if dataPlaneProxyProperties_STATUSGenerator != nil { + return dataPlaneProxyProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS(generators) + dataPlaneProxyProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(DataPlaneProxyProperties_STATUS{}), generators) + + return dataPlaneProxyProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS(gens map[string]gopter.Gen) { + gens["AuthenticationMode"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_AuthenticationMode_STATUS_Local, DataPlaneProxyProperties_AuthenticationMode_STATUS_PassThrough)) + gens["PrivateLinkDelegation"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Disabled, DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Enabled)) +} + +func Test_EncryptionProperties_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 EncryptionProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperties_STATUS, EncryptionProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperties_STATUS runs a test to see if a specific instance of EncryptionProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperties_STATUS(subject EncryptionProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperties_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 EncryptionProperties_STATUS instances for property testing - lazily instantiated by +// EncryptionProperties_STATUSGenerator() +var encryptionProperties_STATUSGenerator gopter.Gen + +// EncryptionProperties_STATUSGenerator returns a generator of EncryptionProperties_STATUS instances for property testing. +func EncryptionProperties_STATUSGenerator() gopter.Gen { + if encryptionProperties_STATUSGenerator != nil { + return encryptionProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(generators) + encryptionProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperties_STATUS{}), generators) + + return encryptionProperties_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) +} + +func Test_KeyVaultProperties_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 KeyVaultProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyVaultProperties_STATUS, KeyVaultProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyVaultProperties_STATUS runs a test to see if a specific instance of KeyVaultProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyVaultProperties_STATUS(subject KeyVaultProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyVaultProperties_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 KeyVaultProperties_STATUS instances for property testing - lazily instantiated by +// KeyVaultProperties_STATUSGenerator() +var keyVaultProperties_STATUSGenerator gopter.Gen + +// KeyVaultProperties_STATUSGenerator returns a generator of KeyVaultProperties_STATUS instances for property testing. +func KeyVaultProperties_STATUSGenerator() gopter.Gen { + if keyVaultProperties_STATUSGenerator != nil { + return keyVaultProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(generators) + keyVaultProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyVaultProperties_STATUS{}), generators) + + return keyVaultProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(gens map[string]gopter.Gen) { + gens["IdentityClientId"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnectionProperties_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 PrivateEndpointConnectionProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnectionProperties_STATUS, PrivateEndpointConnectionProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnectionProperties_STATUS runs a test to see if a specific instance of PrivateEndpointConnectionProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnectionProperties_STATUS(subject PrivateEndpointConnectionProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnectionProperties_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 PrivateEndpointConnectionProperties_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnectionProperties_STATUSGenerator() +var privateEndpointConnectionProperties_STATUSGenerator gopter.Gen + +// PrivateEndpointConnectionProperties_STATUSGenerator returns a generator of PrivateEndpointConnectionProperties_STATUS instances for property testing. +// We first initialize privateEndpointConnectionProperties_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 PrivateEndpointConnectionProperties_STATUSGenerator() gopter.Gen { + if privateEndpointConnectionProperties_STATUSGenerator != nil { + return privateEndpointConnectionProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS(generators) + privateEndpointConnectionProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS(generators) + privateEndpointConnectionProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionProperties_STATUS{}), generators) + + return privateEndpointConnectionProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS(gens map[string]gopter.Gen) { + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Canceled, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Creating, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Deleting, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Failed, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Succeeded, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Updating)) +} + +// AddRelatedPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPrivateEndpointConnectionProperties_STATUS(gens map[string]gopter.Gen) { + gens["PrivateEndpoint"] = gen.PtrOf(PrivateEndpoint_STATUSGenerator()) + gens["PrivateLinkServiceConnectionState"] = gen.PtrOf(PrivateLinkServiceConnectionState_STATUSGenerator()) +} + +func Test_PrivateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS, PrivateEndpointConnectionReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS runs a test to see if a specific instance of PrivateEndpointConnectionReference_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS(subject PrivateEndpointConnectionReference_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnectionReference_STATUSGenerator() +var privateEndpointConnectionReference_STATUSGenerator gopter.Gen + +// PrivateEndpointConnectionReference_STATUSGenerator returns a generator of PrivateEndpointConnectionReference_STATUS instances for property testing. +// We first initialize privateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUSGenerator() gopter.Gen { + if privateEndpointConnectionReference_STATUSGenerator != nil { + return privateEndpointConnectionReference_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + privateEndpointConnectionReference_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionReference_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + privateEndpointConnectionReference_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionReference_STATUS{}), generators) + + return privateEndpointConnectionReference_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(PrivateEndpointConnectionProperties_STATUSGenerator()) +} + +func Test_PrivateEndpoint_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 PrivateEndpoint_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpoint_STATUS, PrivateEndpoint_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpoint_STATUS runs a test to see if a specific instance of PrivateEndpoint_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpoint_STATUS(subject PrivateEndpoint_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpoint_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 PrivateEndpoint_STATUS instances for property testing - lazily instantiated by +// PrivateEndpoint_STATUSGenerator() +var privateEndpoint_STATUSGenerator gopter.Gen + +// PrivateEndpoint_STATUSGenerator returns a generator of PrivateEndpoint_STATUS instances for property testing. +func PrivateEndpoint_STATUSGenerator() gopter.Gen { + if privateEndpoint_STATUSGenerator != nil { + return privateEndpoint_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS(generators) + privateEndpoint_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpoint_STATUS{}), generators) + + return privateEndpoint_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateLinkServiceConnectionState_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 PrivateLinkServiceConnectionState_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS, PrivateLinkServiceConnectionState_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS runs a test to see if a specific instance of PrivateLinkServiceConnectionState_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS(subject PrivateLinkServiceConnectionState_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateLinkServiceConnectionState_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 PrivateLinkServiceConnectionState_STATUS instances for property testing - lazily instantiated by +// PrivateLinkServiceConnectionState_STATUSGenerator() +var privateLinkServiceConnectionState_STATUSGenerator gopter.Gen + +// PrivateLinkServiceConnectionState_STATUSGenerator returns a generator of PrivateLinkServiceConnectionState_STATUS instances for property testing. +func PrivateLinkServiceConnectionState_STATUSGenerator() gopter.Gen { + if privateLinkServiceConnectionState_STATUSGenerator != nil { + return privateLinkServiceConnectionState_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS(generators) + privateLinkServiceConnectionState_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateLinkServiceConnectionState_STATUS{}), generators) + + return privateLinkServiceConnectionState_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS(gens map[string]gopter.Gen) { + gens["ActionsRequired"] = gen.PtrOf(gen.OneConstOf(PrivateLinkServiceConnectionState_ActionsRequired_STATUS_None, PrivateLinkServiceConnectionState_ActionsRequired_STATUS_Recreate)) + gens["Description"] = gen.PtrOf(gen.AlphaString()) + gens["Status"] = gen.PtrOf(gen.OneConstOf( + PrivateLinkServiceConnectionState_Status_STATUS_Approved, + PrivateLinkServiceConnectionState_Status_STATUS_Disconnected, + PrivateLinkServiceConnectionState_Status_STATUS_Pending, + PrivateLinkServiceConnectionState_Status_STATUS_Rejected)) +} + +func Test_ResourceIdentity_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 ResourceIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceIdentity_STATUS, ResourceIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceIdentity_STATUS runs a test to see if a specific instance of ResourceIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceIdentity_STATUS(subject ResourceIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceIdentity_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 ResourceIdentity_STATUS instances for property testing - lazily instantiated by +// ResourceIdentity_STATUSGenerator() +var resourceIdentity_STATUSGenerator gopter.Gen + +// ResourceIdentity_STATUSGenerator returns a generator of ResourceIdentity_STATUS instances for property testing. +// We first initialize resourceIdentity_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 ResourceIdentity_STATUSGenerator() gopter.Gen { + if resourceIdentity_STATUSGenerator != nil { + return resourceIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(generators) + resourceIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(generators) + AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(generators) + resourceIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity_STATUS{}), generators) + + return resourceIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf( + ResourceIdentity_Type_STATUS_None, + ResourceIdentity_Type_STATUS_SystemAssigned, + ResourceIdentity_Type_STATUS_SystemAssignedUserAssigned, + ResourceIdentity_Type_STATUS_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForResourceIdentity_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserIdentity_STATUSGenerator()) +} + +func Test_Sku_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 Sku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSku_STATUS, Sku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSku_STATUS runs a test to see if a specific instance of Sku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSku_STATUS(subject Sku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Sku_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 Sku_STATUS instances for property testing - lazily instantiated by Sku_STATUSGenerator() +var sku_STATUSGenerator gopter.Gen + +// Sku_STATUSGenerator returns a generator of Sku_STATUS instances for property testing. +func Sku_STATUSGenerator() gopter.Gen { + if sku_STATUSGenerator != nil { + return sku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSku_STATUS(generators) + sku_STATUSGenerator = gen.Struct(reflect.TypeOf(Sku_STATUS{}), generators) + + return sku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { + gens["Name"] = 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)) +} + +func Test_UserIdentity_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 UserIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserIdentity_STATUS, UserIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserIdentity_STATUS runs a test to see if a specific instance of UserIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserIdentity_STATUS(subject UserIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserIdentity_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 UserIdentity_STATUS instances for property testing - lazily instantiated by +// UserIdentity_STATUSGenerator() +var userIdentity_STATUSGenerator gopter.Gen + +// UserIdentity_STATUSGenerator returns a generator of UserIdentity_STATUS instances for property testing. +func UserIdentity_STATUSGenerator() gopter.Gen { + if userIdentity_STATUSGenerator != nil { + return userIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserIdentity_STATUS(generators) + userIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(UserIdentity_STATUS{}), generators) + + return userIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserIdentity_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/appconfiguration/v20240601/arm/key_value_spec_types_gen.go b/v2/api/appconfiguration/v20240601/arm/key_value_spec_types_gen.go new file mode 100644 index 00000000000..767ba4ec838 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/key_value_spec_types_gen.go @@ -0,0 +1,43 @@ +// 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 KeyValue_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: All key-value properties. + Properties *KeyValueProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &KeyValue_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (value KeyValue_Spec) GetAPIVersion() string { + return "2024-06-01" +} + +// GetName returns the Name of the resource +func (value *KeyValue_Spec) GetName() string { + return value.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/keyValues" +func (value *KeyValue_Spec) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/keyValues" +} + +// All key-value properties. +type KeyValueProperties struct { + // ContentType: The content type of the key-value's value. + // Providing a proper content-type can enable transformations of values when they are retrieved by applications. + ContentType *string `json:"contentType,omitempty"` + + // Tags: A dictionary of tags that can help identify what a key-value may be applicable for. + Tags map[string]string `json:"tags,omitempty"` + + // Value: The value of the key-value. + Value *string `json:"value,omitempty"` +} diff --git a/v2/api/appconfiguration/v20240601/arm/key_value_spec_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/key_value_spec_types_gen_test.go new file mode 100644 index 00000000000..2570c78e7f3 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/key_value_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_KeyValueProperties_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 KeyValueProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueProperties, KeyValuePropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueProperties runs a test to see if a specific instance of KeyValueProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueProperties(subject KeyValueProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValueProperties instances for property testing - lazily instantiated by KeyValuePropertiesGenerator() +var keyValuePropertiesGenerator gopter.Gen + +// KeyValuePropertiesGenerator returns a generator of KeyValueProperties instances for property testing. +func KeyValuePropertiesGenerator() gopter.Gen { + if keyValuePropertiesGenerator != nil { + return keyValuePropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueProperties(generators) + keyValuePropertiesGenerator = gen.Struct(reflect.TypeOf(KeyValueProperties{}), generators) + + return keyValuePropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueProperties(gens map[string]gopter.Gen) { + gens["ContentType"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyValue_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 KeyValue_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue_Spec, KeyValue_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue_Spec runs a test to see if a specific instance of KeyValue_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue_Spec(subject KeyValue_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue_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 KeyValue_Spec instances for property testing - lazily instantiated by KeyValue_SpecGenerator() +var keyValue_SpecGenerator gopter.Gen + +// KeyValue_SpecGenerator returns a generator of KeyValue_Spec instances for property testing. +// We first initialize keyValue_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 KeyValue_SpecGenerator() gopter.Gen { + if keyValue_SpecGenerator != nil { + return keyValue_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_Spec(generators) + keyValue_SpecGenerator = gen.Struct(reflect.TypeOf(KeyValue_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_Spec(generators) + AddRelatedPropertyGeneratorsForKeyValue_Spec(generators) + keyValue_SpecGenerator = gen.Struct(reflect.TypeOf(KeyValue_Spec{}), generators) + + return keyValue_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValue_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValue_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForKeyValue_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForKeyValue_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(KeyValuePropertiesGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/arm/key_value_status_types_gen.go b/v2/api/appconfiguration/v20240601/arm/key_value_status_types_gen.go new file mode 100644 index 00000000000..81ff310fb54 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/key_value_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 KeyValue_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // Properties: All key-value properties. + Properties *KeyValueProperties_STATUS `json:"properties,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +// All key-value properties. +type KeyValueProperties_STATUS struct { + // ContentType: The content type of the key-value's value. + // Providing a proper content-type can enable transformations of values when they are retrieved by applications. + ContentType *string `json:"contentType,omitempty"` + + // ETag: An ETag indicating the state of a key-value within a configuration store. + ETag *string `json:"eTag,omitempty"` + + // Key: The primary identifier of a key-value. + // The key is used in unison with the label to uniquely identify a key-value. + Key *string `json:"key,omitempty"` + + // Label: A value used to group key-values. + // The label is used in unison with the key to uniquely identify a key-value. + Label *string `json:"label,omitempty"` + + // LastModified: The last time a modifying operation was performed on the given key-value. + LastModified *string `json:"lastModified,omitempty"` + + // Locked: A value indicating whether the key-value is locked. + // A locked key-value may not be modified until it is unlocked. + Locked *bool `json:"locked,omitempty"` + + // Tags: A dictionary of tags that can help identify what a key-value may be applicable for. + Tags map[string]string `json:"tags,omitempty"` + + // Value: The value of the key-value. + Value *string `json:"value,omitempty"` +} diff --git a/v2/api/appconfiguration/v20240601/arm/key_value_status_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/key_value_status_types_gen_test.go new file mode 100644 index 00000000000..54fb29da831 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/key_value_status_types_gen_test.go @@ -0,0 +1,164 @@ +// 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_KeyValueProperties_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 KeyValueProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueProperties_STATUS, KeyValueProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueProperties_STATUS runs a test to see if a specific instance of KeyValueProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueProperties_STATUS(subject KeyValueProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueProperties_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 KeyValueProperties_STATUS instances for property testing - lazily instantiated by +// KeyValueProperties_STATUSGenerator() +var keyValueProperties_STATUSGenerator gopter.Gen + +// KeyValueProperties_STATUSGenerator returns a generator of KeyValueProperties_STATUS instances for property testing. +func KeyValueProperties_STATUSGenerator() gopter.Gen { + if keyValueProperties_STATUSGenerator != nil { + return keyValueProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueProperties_STATUS(generators) + keyValueProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValueProperties_STATUS{}), generators) + + return keyValueProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueProperties_STATUS(gens map[string]gopter.Gen) { + gens["ContentType"] = gen.PtrOf(gen.AlphaString()) + gens["ETag"] = gen.PtrOf(gen.AlphaString()) + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) + gens["LastModified"] = gen.PtrOf(gen.AlphaString()) + gens["Locked"] = gen.PtrOf(gen.Bool()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyValue_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 KeyValue_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue_STATUS, KeyValue_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue_STATUS runs a test to see if a specific instance of KeyValue_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue_STATUS(subject KeyValue_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue_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 KeyValue_STATUS instances for property testing - lazily instantiated by KeyValue_STATUSGenerator() +var keyValue_STATUSGenerator gopter.Gen + +// KeyValue_STATUSGenerator returns a generator of KeyValue_STATUS instances for property testing. +// We first initialize keyValue_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 KeyValue_STATUSGenerator() gopter.Gen { + if keyValue_STATUSGenerator != nil { + return keyValue_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_STATUS(generators) + keyValue_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValue_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_STATUS(generators) + AddRelatedPropertyGeneratorsForKeyValue_STATUS(generators) + keyValue_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValue_STATUS{}), generators) + + return keyValue_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValue_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValue_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForKeyValue_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForKeyValue_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(KeyValueProperties_STATUSGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/arm/replica_spec_types_gen.go b/v2/api/appconfiguration/v20240601/arm/replica_spec_types_gen.go new file mode 100644 index 00000000000..5cb3399a099 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/replica_spec_types_gen.go @@ -0,0 +1,29 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + +type Replica_Spec struct { + // Location: The location of the replica. + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &Replica_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (replica Replica_Spec) GetAPIVersion() string { + return "2024-06-01" +} + +// GetName returns the Name of the resource +func (replica *Replica_Spec) GetName() string { + return replica.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/replicas" +func (replica *Replica_Spec) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/replicas" +} diff --git a/v2/api/appconfiguration/v20240601/arm/replica_spec_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/replica_spec_types_gen_test.go new file mode 100644 index 00000000000..6e23534a59a --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/replica_spec_types_gen_test.go @@ -0,0 +1,79 @@ +// 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_Replica_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_Spec runs a test to see if a specific instance of Replica_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_Spec(subject Replica_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_Spec instances for property testing - lazily instantiated by Replica_SpecGenerator() +var replica_SpecGenerator gopter.Gen + +// Replica_SpecGenerator returns a generator of Replica_Spec instances for property testing. +func Replica_SpecGenerator() gopter.Gen { + if replica_SpecGenerator != nil { + return replica_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + return replica_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() +} diff --git a/v2/api/appconfiguration/v20240601/arm/replica_status_types_gen.go b/v2/api/appconfiguration/v20240601/arm/replica_status_types_gen.go new file mode 100644 index 00000000000..2a1a076cd54 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/replica_status_types_gen.go @@ -0,0 +1,52 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type Replica_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Location: The location of the replica. + Location *string `json:"location,omitempty"` + + // Name: The name of the replica. + Name *string `json:"name,omitempty"` + + // Properties: All replica properties. + Properties *ReplicaProperties_STATUS `json:"properties,omitempty"` + + // SystemData: Resource system metadata. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +// All replica properties. +type ReplicaProperties_STATUS struct { + // Endpoint: The URI of the replica where the replica API will be available. + Endpoint *string `json:"endpoint,omitempty"` + + // ProvisioningState: The provisioning state of the replica. + ProvisioningState *ReplicaProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` +} + +type ReplicaProperties_ProvisioningState_STATUS string + +const ( + ReplicaProperties_ProvisioningState_STATUS_Canceled = ReplicaProperties_ProvisioningState_STATUS("Canceled") + ReplicaProperties_ProvisioningState_STATUS_Creating = ReplicaProperties_ProvisioningState_STATUS("Creating") + ReplicaProperties_ProvisioningState_STATUS_Deleting = ReplicaProperties_ProvisioningState_STATUS("Deleting") + ReplicaProperties_ProvisioningState_STATUS_Failed = ReplicaProperties_ProvisioningState_STATUS("Failed") + ReplicaProperties_ProvisioningState_STATUS_Succeeded = ReplicaProperties_ProvisioningState_STATUS("Succeeded") +) + +// Mapping from string to ReplicaProperties_ProvisioningState_STATUS +var replicaProperties_ProvisioningState_STATUS_Values = map[string]ReplicaProperties_ProvisioningState_STATUS{ + "canceled": ReplicaProperties_ProvisioningState_STATUS_Canceled, + "creating": ReplicaProperties_ProvisioningState_STATUS_Creating, + "deleting": ReplicaProperties_ProvisioningState_STATUS_Deleting, + "failed": ReplicaProperties_ProvisioningState_STATUS_Failed, + "succeeded": ReplicaProperties_ProvisioningState_STATUS_Succeeded, +} diff --git a/v2/api/appconfiguration/v20240601/arm/replica_status_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/replica_status_types_gen_test.go new file mode 100644 index 00000000000..a0f95b5bf38 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/replica_status_types_gen_test.go @@ -0,0 +1,163 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_ReplicaProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaProperties_STATUS, ReplicaProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaProperties_STATUS runs a test to see if a specific instance of ReplicaProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaProperties_STATUS(subject ReplicaProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaProperties_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaProperties_STATUS instances for property testing - lazily instantiated by +// ReplicaProperties_STATUSGenerator() +var replicaProperties_STATUSGenerator gopter.Gen + +// ReplicaProperties_STATUSGenerator returns a generator of ReplicaProperties_STATUS instances for property testing. +func ReplicaProperties_STATUSGenerator() gopter.Gen { + if replicaProperties_STATUSGenerator != nil { + return replicaProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplicaProperties_STATUS(generators) + replicaProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ReplicaProperties_STATUS{}), generators) + + return replicaProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplicaProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplicaProperties_STATUS(gens map[string]gopter.Gen) { + gens["Endpoint"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ReplicaProperties_ProvisioningState_STATUS_Canceled, + ReplicaProperties_ProvisioningState_STATUS_Creating, + ReplicaProperties_ProvisioningState_STATUS_Deleting, + ReplicaProperties_ProvisioningState_STATUS_Failed, + ReplicaProperties_ProvisioningState_STATUS_Succeeded)) +} + +func Test_Replica_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_STATUS runs a test to see if a specific instance of Replica_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_STATUS(subject Replica_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_STATUS instances for property testing - lazily instantiated by Replica_STATUSGenerator() +var replica_STATUSGenerator gopter.Gen + +// Replica_STATUSGenerator returns a generator of Replica_STATUS instances for property testing. +// We first initialize replica_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_STATUSGenerator() gopter.Gen { + if replica_STATUSGenerator != nil { + return replica_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + AddRelatedPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + return replica_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ReplicaProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/arm/snapshot_spec_types_gen.go b/v2/api/appconfiguration/v20240601/arm/snapshot_spec_types_gen.go new file mode 100644 index 00000000000..64fb938acbf --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/snapshot_spec_types_gen.go @@ -0,0 +1,72 @@ +// 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 Snapshot_Spec struct { + Name string `json:"name,omitempty"` + + // Properties: All snapshot properties. + Properties *SnapshotProperties `json:"properties,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &Snapshot_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (snapshot Snapshot_Spec) GetAPIVersion() string { + return "2024-06-01" +} + +// GetName returns the Name of the resource +func (snapshot *Snapshot_Spec) GetName() string { + return snapshot.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/snapshots" +func (snapshot *Snapshot_Spec) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/snapshots" +} + +// All snapshot properties. +type SnapshotProperties struct { + // CompositionType: The composition type describes how the key-values within the snapshot are composed. The 'key' + // composition type ensures there are no two key-values containing the same key. The 'key_label' composition type ensures + // there are no two key-values containing the same key and label. + CompositionType *SnapshotProperties_CompositionType `json:"compositionType,omitempty"` + + // Filters: A list of filters used to filter the key-values included in the snapshot. + Filters []KeyValueFilter `json:"filters,omitempty"` + + // RetentionPeriod: The amount of time, in seconds, that a snapshot will remain in the archived state before expiring. This + // property is only writable during the creation of a snapshot. If not specified, the default lifetime of key-value + // revisions will be used. + RetentionPeriod *int `json:"retentionPeriod,omitempty"` + + // Tags: The tags of the snapshot. NOTE: These are data plane tags, not Azure Resource Manager (ARM) tags. + Tags map[string]string `json:"tags,omitempty"` +} + +// Enables filtering of key-values. +type KeyValueFilter struct { + // Key: Filters key-values by their key field. + Key *string `json:"key,omitempty"` + + // Label: Filters key-values by their label field. + Label *string `json:"label,omitempty"` +} + +// +kubebuilder:validation:Enum={"Key","Key_Label"} +type SnapshotProperties_CompositionType string + +const ( + SnapshotProperties_CompositionType_Key = SnapshotProperties_CompositionType("Key") + SnapshotProperties_CompositionType_Key_Label = SnapshotProperties_CompositionType("Key_Label") +) + +// Mapping from string to SnapshotProperties_CompositionType +var snapshotProperties_CompositionType_Values = map[string]SnapshotProperties_CompositionType{ + "key": SnapshotProperties_CompositionType_Key, + "key_label": SnapshotProperties_CompositionType_Key_Label, +} diff --git a/v2/api/appconfiguration/v20240601/arm/snapshot_spec_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/snapshot_spec_types_gen_test.go new file mode 100644 index 00000000000..2fde5dfb56a --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/snapshot_spec_types_gen_test.go @@ -0,0 +1,231 @@ +// 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_KeyValueFilter_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 KeyValueFilter via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueFilter, KeyValueFilterGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueFilter runs a test to see if a specific instance of KeyValueFilter round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueFilter(subject KeyValueFilter) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueFilter + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValueFilter instances for property testing - lazily instantiated by KeyValueFilterGenerator() +var keyValueFilterGenerator gopter.Gen + +// KeyValueFilterGenerator returns a generator of KeyValueFilter instances for property testing. +func KeyValueFilterGenerator() gopter.Gen { + if keyValueFilterGenerator != nil { + return keyValueFilterGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueFilter(generators) + keyValueFilterGenerator = gen.Struct(reflect.TypeOf(KeyValueFilter{}), generators) + + return keyValueFilterGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueFilter is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueFilter(gens map[string]gopter.Gen) { + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SnapshotProperties_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 SnapshotProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshotProperties, SnapshotPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshotProperties runs a test to see if a specific instance of SnapshotProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshotProperties(subject SnapshotProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SnapshotProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SnapshotProperties instances for property testing - lazily instantiated by SnapshotPropertiesGenerator() +var snapshotPropertiesGenerator gopter.Gen + +// SnapshotPropertiesGenerator returns a generator of SnapshotProperties instances for property testing. +// We first initialize snapshotPropertiesGenerator 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 SnapshotPropertiesGenerator() gopter.Gen { + if snapshotPropertiesGenerator != nil { + return snapshotPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshotProperties(generators) + snapshotPropertiesGenerator = gen.Struct(reflect.TypeOf(SnapshotProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshotProperties(generators) + AddRelatedPropertyGeneratorsForSnapshotProperties(generators) + snapshotPropertiesGenerator = gen.Struct(reflect.TypeOf(SnapshotProperties{}), generators) + + return snapshotPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshotProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshotProperties(gens map[string]gopter.Gen) { + gens["CompositionType"] = gen.PtrOf(gen.OneConstOf(SnapshotProperties_CompositionType_Key, SnapshotProperties_CompositionType_Key_Label)) + gens["RetentionPeriod"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshotProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshotProperties(gens map[string]gopter.Gen) { + gens["Filters"] = gen.SliceOf(KeyValueFilterGenerator()) +} + +func Test_Snapshot_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 Snapshot_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot_Spec, Snapshot_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot_Spec runs a test to see if a specific instance of Snapshot_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot_Spec(subject Snapshot_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot_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 Snapshot_Spec instances for property testing - lazily instantiated by Snapshot_SpecGenerator() +var snapshot_SpecGenerator gopter.Gen + +// Snapshot_SpecGenerator returns a generator of Snapshot_Spec instances for property testing. +// We first initialize snapshot_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 Snapshot_SpecGenerator() gopter.Gen { + if snapshot_SpecGenerator != nil { + return snapshot_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_Spec(generators) + snapshot_SpecGenerator = gen.Struct(reflect.TypeOf(Snapshot_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_Spec(generators) + AddRelatedPropertyGeneratorsForSnapshot_Spec(generators) + snapshot_SpecGenerator = gen.Struct(reflect.TypeOf(Snapshot_Spec{}), generators) + + return snapshot_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshot_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshot_Spec(gens map[string]gopter.Gen) { + gens["Name"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForSnapshot_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(SnapshotPropertiesGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/arm/snapshot_status_types_gen.go b/v2/api/appconfiguration/v20240601/arm/snapshot_status_types_gen.go new file mode 100644 index 00000000000..95a1a319806 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/snapshot_status_types_gen.go @@ -0,0 +1,118 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type Snapshot_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Name: The name of the snapshot. + Name *string `json:"name,omitempty"` + + // Properties: All snapshot properties. + Properties *SnapshotProperties_STATUS `json:"properties,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +// All snapshot properties. +type SnapshotProperties_STATUS struct { + // CompositionType: The composition type describes how the key-values within the snapshot are composed. The 'key' + // composition type ensures there are no two key-values containing the same key. The 'key_label' composition type ensures + // there are no two key-values containing the same key and label. + CompositionType *SnapshotProperties_CompositionType_STATUS `json:"compositionType,omitempty"` + + // Created: The time that the snapshot was created. + Created *string `json:"created,omitempty"` + + // Etag: A value representing the current state of the snapshot. + Etag *string `json:"etag,omitempty"` + + // Expires: The time that the snapshot will expire. + Expires *string `json:"expires,omitempty"` + + // Filters: A list of filters used to filter the key-values included in the snapshot. + Filters []KeyValueFilter_STATUS `json:"filters,omitempty"` + + // ItemsCount: The amount of key-values in the snapshot. + ItemsCount *int `json:"itemsCount,omitempty"` + + // ProvisioningState: The provisioning state of the snapshot. + ProvisioningState *SnapshotProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // RetentionPeriod: The amount of time, in seconds, that a snapshot will remain in the archived state before expiring. This + // property is only writable during the creation of a snapshot. If not specified, the default lifetime of key-value + // revisions will be used. + RetentionPeriod *int `json:"retentionPeriod,omitempty"` + + // Size: The size in bytes of the snapshot. + Size *int `json:"size,omitempty"` + + // Status: The current status of the snapshot. + Status *SnapshotProperties_Status_STATUS `json:"status,omitempty"` + + // Tags: The tags of the snapshot. NOTE: These are data plane tags, not Azure Resource Manager (ARM) tags. + Tags map[string]string `json:"tags,omitempty"` +} + +// Enables filtering of key-values. +type KeyValueFilter_STATUS struct { + // Key: Filters key-values by their key field. + Key *string `json:"key,omitempty"` + + // Label: Filters key-values by their label field. + Label *string `json:"label,omitempty"` +} + +type SnapshotProperties_CompositionType_STATUS string + +const ( + SnapshotProperties_CompositionType_STATUS_Key = SnapshotProperties_CompositionType_STATUS("Key") + SnapshotProperties_CompositionType_STATUS_Key_Label = SnapshotProperties_CompositionType_STATUS("Key_Label") +) + +// Mapping from string to SnapshotProperties_CompositionType_STATUS +var snapshotProperties_CompositionType_STATUS_Values = map[string]SnapshotProperties_CompositionType_STATUS{ + "key": SnapshotProperties_CompositionType_STATUS_Key, + "key_label": SnapshotProperties_CompositionType_STATUS_Key_Label, +} + +type SnapshotProperties_ProvisioningState_STATUS string + +const ( + SnapshotProperties_ProvisioningState_STATUS_Canceled = SnapshotProperties_ProvisioningState_STATUS("Canceled") + SnapshotProperties_ProvisioningState_STATUS_Creating = SnapshotProperties_ProvisioningState_STATUS("Creating") + SnapshotProperties_ProvisioningState_STATUS_Deleting = SnapshotProperties_ProvisioningState_STATUS("Deleting") + SnapshotProperties_ProvisioningState_STATUS_Failed = SnapshotProperties_ProvisioningState_STATUS("Failed") + SnapshotProperties_ProvisioningState_STATUS_Succeeded = SnapshotProperties_ProvisioningState_STATUS("Succeeded") + SnapshotProperties_ProvisioningState_STATUS_Updating = SnapshotProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to SnapshotProperties_ProvisioningState_STATUS +var snapshotProperties_ProvisioningState_STATUS_Values = map[string]SnapshotProperties_ProvisioningState_STATUS{ + "canceled": SnapshotProperties_ProvisioningState_STATUS_Canceled, + "creating": SnapshotProperties_ProvisioningState_STATUS_Creating, + "deleting": SnapshotProperties_ProvisioningState_STATUS_Deleting, + "failed": SnapshotProperties_ProvisioningState_STATUS_Failed, + "succeeded": SnapshotProperties_ProvisioningState_STATUS_Succeeded, + "updating": SnapshotProperties_ProvisioningState_STATUS_Updating, +} + +type SnapshotProperties_Status_STATUS string + +const ( + SnapshotProperties_Status_STATUS_Archived = SnapshotProperties_Status_STATUS("Archived") + SnapshotProperties_Status_STATUS_Failed = SnapshotProperties_Status_STATUS("Failed") + SnapshotProperties_Status_STATUS_Provisioning = SnapshotProperties_Status_STATUS("Provisioning") + SnapshotProperties_Status_STATUS_Ready = SnapshotProperties_Status_STATUS("Ready") +) + +// Mapping from string to SnapshotProperties_Status_STATUS +var snapshotProperties_Status_STATUS_Values = map[string]SnapshotProperties_Status_STATUS{ + "archived": SnapshotProperties_Status_STATUS_Archived, + "failed": SnapshotProperties_Status_STATUS_Failed, + "provisioning": SnapshotProperties_Status_STATUS_Provisioning, + "ready": SnapshotProperties_Status_STATUS_Ready, +} diff --git a/v2/api/appconfiguration/v20240601/arm/snapshot_status_types_gen_test.go b/v2/api/appconfiguration/v20240601/arm/snapshot_status_types_gen_test.go new file mode 100644 index 00000000000..64f502849e3 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/snapshot_status_types_gen_test.go @@ -0,0 +1,252 @@ +// 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_KeyValueFilter_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 KeyValueFilter_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueFilter_STATUS, KeyValueFilter_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueFilter_STATUS runs a test to see if a specific instance of KeyValueFilter_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueFilter_STATUS(subject KeyValueFilter_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueFilter_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 KeyValueFilter_STATUS instances for property testing - lazily instantiated by +// KeyValueFilter_STATUSGenerator() +var keyValueFilter_STATUSGenerator gopter.Gen + +// KeyValueFilter_STATUSGenerator returns a generator of KeyValueFilter_STATUS instances for property testing. +func KeyValueFilter_STATUSGenerator() gopter.Gen { + if keyValueFilter_STATUSGenerator != nil { + return keyValueFilter_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS(generators) + keyValueFilter_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValueFilter_STATUS{}), generators) + + return keyValueFilter_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS(gens map[string]gopter.Gen) { + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SnapshotProperties_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 SnapshotProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshotProperties_STATUS, SnapshotProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshotProperties_STATUS runs a test to see if a specific instance of SnapshotProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshotProperties_STATUS(subject SnapshotProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SnapshotProperties_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 SnapshotProperties_STATUS instances for property testing - lazily instantiated by +// SnapshotProperties_STATUSGenerator() +var snapshotProperties_STATUSGenerator gopter.Gen + +// SnapshotProperties_STATUSGenerator returns a generator of SnapshotProperties_STATUS instances for property testing. +// We first initialize snapshotProperties_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 SnapshotProperties_STATUSGenerator() gopter.Gen { + if snapshotProperties_STATUSGenerator != nil { + return snapshotProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshotProperties_STATUS(generators) + snapshotProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(SnapshotProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshotProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForSnapshotProperties_STATUS(generators) + snapshotProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(SnapshotProperties_STATUS{}), generators) + + return snapshotProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshotProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshotProperties_STATUS(gens map[string]gopter.Gen) { + gens["CompositionType"] = gen.PtrOf(gen.OneConstOf(SnapshotProperties_CompositionType_STATUS_Key, SnapshotProperties_CompositionType_STATUS_Key_Label)) + gens["Created"] = gen.PtrOf(gen.AlphaString()) + gens["Etag"] = gen.PtrOf(gen.AlphaString()) + gens["Expires"] = gen.PtrOf(gen.AlphaString()) + gens["ItemsCount"] = gen.PtrOf(gen.Int()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + SnapshotProperties_ProvisioningState_STATUS_Canceled, + SnapshotProperties_ProvisioningState_STATUS_Creating, + SnapshotProperties_ProvisioningState_STATUS_Deleting, + SnapshotProperties_ProvisioningState_STATUS_Failed, + SnapshotProperties_ProvisioningState_STATUS_Succeeded, + SnapshotProperties_ProvisioningState_STATUS_Updating)) + gens["RetentionPeriod"] = gen.PtrOf(gen.Int()) + gens["Size"] = gen.PtrOf(gen.Int()) + gens["Status"] = gen.PtrOf(gen.OneConstOf( + SnapshotProperties_Status_STATUS_Archived, + SnapshotProperties_Status_STATUS_Failed, + SnapshotProperties_Status_STATUS_Provisioning, + SnapshotProperties_Status_STATUS_Ready)) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshotProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshotProperties_STATUS(gens map[string]gopter.Gen) { + gens["Filters"] = gen.SliceOf(KeyValueFilter_STATUSGenerator()) +} + +func Test_Snapshot_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 Snapshot_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot_STATUS, Snapshot_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot_STATUS runs a test to see if a specific instance of Snapshot_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot_STATUS(subject Snapshot_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot_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 Snapshot_STATUS instances for property testing - lazily instantiated by Snapshot_STATUSGenerator() +var snapshot_STATUSGenerator gopter.Gen + +// Snapshot_STATUSGenerator returns a generator of Snapshot_STATUS instances for property testing. +// We first initialize snapshot_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 Snapshot_STATUSGenerator() gopter.Gen { + if snapshot_STATUSGenerator != nil { + return snapshot_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_STATUS(generators) + snapshot_STATUSGenerator = gen.Struct(reflect.TypeOf(Snapshot_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_STATUS(generators) + AddRelatedPropertyGeneratorsForSnapshot_STATUS(generators) + snapshot_STATUSGenerator = gen.Struct(reflect.TypeOf(Snapshot_STATUS{}), generators) + + return snapshot_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshot_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshot_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshot_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(SnapshotProperties_STATUSGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/arm/structure.txt b/v2/api/appconfiguration/v20240601/arm/structure.txt new file mode 100644 index 00000000000..8e156df00f9 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/arm/structure.txt @@ -0,0 +1,226 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/arm +----------------------------------------------------------------------------- +ConfigurationStore_STATUS: Object (9 properties) +├── Id: *string +├── Identity: *Object (4 properties) +│ ├── PrincipalId: *string +│ ├── TenantId: *string +│ ├── Type: *Enum (4 values) +│ │ ├── "None" +│ │ ├── "SystemAssigned" +│ │ ├── "SystemAssigned, UserAssigned" +│ │ └── "UserAssigned" +│ └── UserAssignedIdentities: map[string]Object (2 properties) +│ ├── ClientId: *string +│ └── PrincipalId: *string +├── Location: *string +├── Name: *string +├── Properties: *Object (12 properties) +│ ├── CreateMode: *Enum (2 values) +│ │ ├── "Default" +│ │ └── "Recover" +│ ├── CreationDate: *string +│ ├── DataPlaneProxy: *Object (2 properties) +│ │ ├── AuthenticationMode: *Enum (2 values) +│ │ │ ├── "Local" +│ │ │ └── "Pass-through" +│ │ └── PrivateLinkDelegation: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── DefaultKeyValueRevisionRetentionPeriodInSeconds: *int +│ ├── DisableLocalAuth: *bool +│ ├── EnablePurgeProtection: *bool +│ ├── Encryption: *Object (1 property) +│ │ └── KeyVaultProperties: *Object (2 properties) +│ │ ├── IdentityClientId: *string +│ │ └── KeyIdentifier: *string +│ ├── Endpoint: *string +│ ├── PrivateEndpointConnections: Object (4 properties)[] +│ │ ├── Id: *string +│ │ ├── Name: *string +│ │ ├── Properties: *Object (3 properties) +│ │ │ ├── PrivateEndpoint: *Object (1 property) +│ │ │ │ └── Id: *string +│ │ │ ├── PrivateLinkServiceConnectionState: *Object (3 properties) +│ │ │ │ ├── ActionsRequired: *Enum (2 values) +│ │ │ │ │ ├── "None" +│ │ │ │ │ └── "Recreate" +│ │ │ │ ├── Description: *string +│ │ │ │ └── Status: *Enum (4 values) +│ │ │ │ ├── "Approved" +│ │ │ │ ├── "Disconnected" +│ │ │ │ ├── "Pending" +│ │ │ │ └── "Rejected" +│ │ │ └── ProvisioningState: *Enum (6 values) +│ │ │ ├── "Canceled" +│ │ │ ├── "Creating" +│ │ │ ├── "Deleting" +│ │ │ ├── "Failed" +│ │ │ ├── "Succeeded" +│ │ │ └── "Updating" +│ │ └── Type: *string +│ ├── ProvisioningState: *Enum (6 values) +│ │ ├── "Canceled" +│ │ ├── "Creating" +│ │ ├── "Deleting" +│ │ ├── "Failed" +│ │ ├── "Succeeded" +│ │ └── "Updating" +│ ├── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ └── SoftDeleteRetentionInDays: *int +├── Sku: *Object (1 property) +│ └── 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" +├── Tags: map[string]string +└── Type: *string + +ConfigurationStore_Spec: Object (6 properties) +├── Identity: *Object (2 properties) +│ ├── Type: *Enum (4 values) +│ │ ├── "None" +│ │ ├── "SystemAssigned" +│ │ ├── "SystemAssigned, UserAssigned" +│ │ └── "UserAssigned" +│ └── UserAssignedIdentities: map[string]Object (0 properties) +├── Location: *string +├── Name: string +├── Properties: *Object (8 properties) +│ ├── CreateMode: *Enum (2 values) +│ │ ├── "Default" +│ │ └── "Recover" +│ ├── DataPlaneProxy: *Object (2 properties) +│ │ ├── AuthenticationMode: *Enum (2 values) +│ │ │ ├── "Local" +│ │ │ └── "Pass-through" +│ │ └── PrivateLinkDelegation: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── DefaultKeyValueRevisionRetentionPeriodInSeconds: *int +│ ├── DisableLocalAuth: *bool +│ ├── EnablePurgeProtection: *bool +│ ├── Encryption: *Object (1 property) +│ │ └── KeyVaultProperties: *Object (2 properties) +│ │ ├── IdentityClientId: *string +│ │ └── KeyIdentifier: *string +│ ├── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ └── SoftDeleteRetentionInDays: *int +├── Sku: *Object (1 property) +│ └── Name: *string +└── Tags: map[string]string + +KeyValue_STATUS: Object (4 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (8 properties) +│ ├── ContentType: *string +│ ├── ETag: *string +│ ├── Key: *string +│ ├── Label: *string +│ ├── LastModified: *string +│ ├── Locked: *bool +│ ├── Tags: map[string]string +│ └── Value: *string +└── Type: *string + +KeyValue_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (3 properties) + ├── ContentType: *string + ├── Tags: map[string]string + └── Value: *string + +Replica_STATUS: Object (6 properties) +├── Id: *string +├── Location: *string +├── Name: *string +├── Properties: *Object (2 properties) +│ ├── Endpoint: *string +│ └── ProvisioningState: *Enum (5 values) +│ ├── "Canceled" +│ ├── "Creating" +│ ├── "Deleting" +│ ├── "Failed" +│ └── "Succeeded" +├── SystemData: *Object (6 properties) +│ ├── CreatedAt: *string +│ ├── CreatedBy: *string +│ ├── CreatedByType: *Enum (4 values) +│ │ ├── "Application" +│ │ ├── "Key" +│ │ ├── "ManagedIdentity" +│ │ └── "User" +│ ├── LastModifiedAt: *string +│ ├── LastModifiedBy: *string +│ └── LastModifiedByType: *Enum (4 values) +│ ├── "Application" +│ ├── "Key" +│ ├── "ManagedIdentity" +│ └── "User" +└── Type: *string + +Replica_Spec: Object (2 properties) +├── Location: *string +└── Name: string + +Snapshot_STATUS: Object (4 properties) +├── Id: *string +├── Name: *string +├── Properties: *Object (11 properties) +│ ├── CompositionType: *Enum (2 values) +│ │ ├── "Key" +│ │ └── "Key_Label" +│ ├── Created: *string +│ ├── Etag: *string +│ ├── Expires: *string +│ ├── Filters: Object (2 properties)[] +│ │ ├── Key: *string +│ │ └── Label: *string +│ ├── ItemsCount: *int +│ ├── ProvisioningState: *Enum (6 values) +│ │ ├── "Canceled" +│ │ ├── "Creating" +│ │ ├── "Deleting" +│ │ ├── "Failed" +│ │ ├── "Succeeded" +│ │ └── "Updating" +│ ├── RetentionPeriod: *int +│ ├── Size: *int +│ ├── Status: *Enum (4 values) +│ │ ├── "Archived" +│ │ ├── "Failed" +│ │ ├── "Provisioning" +│ │ └── "Ready" +│ └── Tags: map[string]string +└── Type: *string + +Snapshot_Spec: Object (2 properties) +├── Name: string +└── Properties: *Object (4 properties) + ├── CompositionType: *Enum (2 values) + │ ├── "Key" + │ └── "Key_Label" + ├── Filters: Object (2 properties)[] + │ ├── Key: *string + │ └── Label: *string + ├── RetentionPeriod: *int + └── Tags: map[string]string + diff --git a/v2/api/appconfiguration/v20240601/configuration_store_types_gen.go b/v2/api/appconfiguration/v20240601/configuration_store_types_gen.go new file mode 100644 index 00000000000..891c37df23d --- /dev/null +++ b/v2/api/appconfiguration/v20240601/configuration_store_types_gen.go @@ -0,0 +1,4019 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/arm" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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" + "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" + "sigs.k8s.io/controller-runtime/pkg/conversion" +) + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName} +type ConfigurationStore struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ConfigurationStore_Spec `json:"spec,omitempty"` + Status ConfigurationStore_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &ConfigurationStore{} + +// GetConditions returns the conditions of the resource +func (store *ConfigurationStore) GetConditions() conditions.Conditions { + return store.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (store *ConfigurationStore) SetConditions(conditions conditions.Conditions) { + store.Status.Conditions = conditions +} + +var _ conversion.Convertible = &ConfigurationStore{} + +// ConvertFrom populates our ConfigurationStore from the provided hub ConfigurationStore +func (store *ConfigurationStore) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.ConfigurationStore) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/ConfigurationStore but received %T instead", hub) + } + + return store.AssignProperties_From_ConfigurationStore(source) +} + +// ConvertTo populates the provided hub ConfigurationStore from our ConfigurationStore +func (store *ConfigurationStore) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.ConfigurationStore) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/ConfigurationStore but received %T instead", hub) + } + + return store.AssignProperties_To_ConfigurationStore(destination) +} + +var _ configmaps.Exporter = &ConfigurationStore{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (store *ConfigurationStore) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if store.Spec.OperatorSpec == nil { + return nil + } + return store.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &ConfigurationStore{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (store *ConfigurationStore) SecretDestinationExpressions() []*core.DestinationExpression { + if store.Spec.OperatorSpec == nil { + return nil + } + return store.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &ConfigurationStore{} + +// InitializeSpec initializes the spec for this resource from the given status +func (store *ConfigurationStore) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*ConfigurationStore_STATUS); ok { + return store.Spec.Initialize_From_ConfigurationStore_STATUS(s) + } + + return fmt.Errorf("expected Status of type ConfigurationStore_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &ConfigurationStore{} + +// AzureName returns the Azure name of the resource +func (store *ConfigurationStore) AzureName() string { + return store.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (store ConfigurationStore) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (store *ConfigurationStore) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (store *ConfigurationStore) GetSpec() genruntime.ConvertibleSpec { + return &store.Spec +} + +// GetStatus returns the status of this resource +func (store *ConfigurationStore) GetStatus() genruntime.ConvertibleStatus { + return &store.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (store *ConfigurationStore) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores" +func (store *ConfigurationStore) GetType() string { + return "Microsoft.AppConfiguration/configurationStores" +} + +// NewEmptyStatus returns a new empty (blank) status +func (store *ConfigurationStore) NewEmptyStatus() genruntime.ConvertibleStatus { + return &ConfigurationStore_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (store *ConfigurationStore) Owner() *genruntime.ResourceReference { + if store.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(store.Spec) + return store.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (store *ConfigurationStore) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*ConfigurationStore_STATUS); ok { + store.Status = *st + return nil + } + + // Convert status to required version + var st ConfigurationStore_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + store.Status = st + return nil +} + +// AssignProperties_From_ConfigurationStore populates our ConfigurationStore from the provided source ConfigurationStore +func (store *ConfigurationStore) AssignProperties_From_ConfigurationStore(source *storage.ConfigurationStore) error { + + // ObjectMeta + store.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec ConfigurationStore_Spec + err := spec.AssignProperties_From_ConfigurationStore_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStore_Spec() to populate field Spec") + } + store.Spec = spec + + // Status + var status ConfigurationStore_STATUS + err = status.AssignProperties_From_ConfigurationStore_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStore_STATUS() to populate field Status") + } + store.Status = status + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStore populates the provided destination ConfigurationStore from our ConfigurationStore +func (store *ConfigurationStore) AssignProperties_To_ConfigurationStore(destination *storage.ConfigurationStore) error { + + // ObjectMeta + destination.ObjectMeta = *store.ObjectMeta.DeepCopy() + + // Spec + var spec storage.ConfigurationStore_Spec + err := store.Spec.AssignProperties_To_ConfigurationStore_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStore_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.ConfigurationStore_STATUS + err = store.Status.AssignProperties_To_ConfigurationStore_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStore_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 (store *ConfigurationStore) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: store.Spec.OriginalVersion(), + Kind: "ConfigurationStore", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName} +type ConfigurationStoreList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ConfigurationStore `json:"items"` +} + +// +kubebuilder:validation:Enum={"2024-06-01"} +type APIVersion string + +const APIVersion_Value = APIVersion("2024-06-01") + +type ConfigurationStore_Spec struct { + // +kubebuilder:validation:MaxLength=50 + // +kubebuilder:validation:MinLength=5 + // +kubebuilder:validation:Pattern="^[a-zA-Z0-9_-]*$" + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + + // CreateMode: Indicates whether the configuration store need to be recovered. + CreateMode *ConfigurationStoreProperties_CreateMode `json:"createMode,omitempty"` + + // DataPlaneProxy: Property specifying the configuration of data plane proxy for Azure Resource Manager (ARM). + DataPlaneProxy *DataPlaneProxyProperties `json:"dataPlaneProxy,omitempty"` + + // DefaultKeyValueRevisionRetentionPeriodInSeconds: The duration in seconds to retain new key value revisions. Defaults to + // 604800 (7 days) for Free SKU stores and 2592000 (30 days) for Standard SKU stores and Premium SKU stores. + DefaultKeyValueRevisionRetentionPeriodInSeconds *int `json:"defaultKeyValueRevisionRetentionPeriodInSeconds,omitempty"` + + // DisableLocalAuth: Disables all authentication methods other than AAD authentication. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // EnablePurgeProtection: Property specifying whether protection against purge is enabled for this configuration store. + EnablePurgeProtection *bool `json:"enablePurgeProtection,omitempty"` + + // Encryption: The encryption settings of the configuration store. + Encryption *EncryptionProperties `json:"encryption,omitempty"` + + // Identity: The managed identity information, if configured. + Identity *ResourceIdentity `json:"identity,omitempty"` + + // +kubebuilder:validation:Required + // Location: The geo-location where the resource lives + Location *string `json:"location,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *ConfigurationStoreOperatorSpec `json:"operatorSpec,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a resources.azure.com/ResourceGroup resource + Owner *genruntime.KnownResourceReference `group:"resources.azure.com" json:"owner,omitempty" kind:"ResourceGroup"` + + // PublicNetworkAccess: Control permission for data plane traffic coming from public networks while private endpoint is + // enabled. + PublicNetworkAccess *ConfigurationStoreProperties_PublicNetworkAccess `json:"publicNetworkAccess,omitempty"` + + // +kubebuilder:validation:Required + // Sku: The sku of the configuration store. + Sku *Sku `json:"sku,omitempty"` + + // SoftDeleteRetentionInDays: The amount of time in days that the configuration store will be retained when it is soft + // deleted. + SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMTransformer = &ConfigurationStore_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (store *ConfigurationStore_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if store == nil { + return nil, nil + } + result := &arm.ConfigurationStore_Spec{} + + // Set property "Identity": + if store.Identity != nil { + identity_ARM, err := store.Identity.ConvertToARM(resolved) + if err != nil { + return nil, err + } + identity := *identity_ARM.(*arm.ResourceIdentity) + result.Identity = &identity + } + + // Set property "Location": + if store.Location != nil { + location := *store.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if store.CreateMode != nil || + store.DataPlaneProxy != nil || + store.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil || + store.DisableLocalAuth != nil || + store.EnablePurgeProtection != nil || + store.Encryption != nil || + store.PublicNetworkAccess != nil || + store.SoftDeleteRetentionInDays != nil { + result.Properties = &arm.ConfigurationStoreProperties{} + } + if store.CreateMode != nil { + var temp string + temp = string(*store.CreateMode) + createMode := arm.ConfigurationStoreProperties_CreateMode(temp) + result.Properties.CreateMode = &createMode + } + if store.DataPlaneProxy != nil { + dataPlaneProxy_ARM, err := store.DataPlaneProxy.ConvertToARM(resolved) + if err != nil { + return nil, err + } + dataPlaneProxy := *dataPlaneProxy_ARM.(*arm.DataPlaneProxyProperties) + result.Properties.DataPlaneProxy = &dataPlaneProxy + } + if store.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + defaultKeyValueRevisionRetentionPeriodInSeconds := *store.DefaultKeyValueRevisionRetentionPeriodInSeconds + result.Properties.DefaultKeyValueRevisionRetentionPeriodInSeconds = &defaultKeyValueRevisionRetentionPeriodInSeconds + } + if store.DisableLocalAuth != nil { + disableLocalAuth := *store.DisableLocalAuth + result.Properties.DisableLocalAuth = &disableLocalAuth + } + if store.EnablePurgeProtection != nil { + enablePurgeProtection := *store.EnablePurgeProtection + result.Properties.EnablePurgeProtection = &enablePurgeProtection + } + if store.Encryption != nil { + encryption_ARM, err := store.Encryption.ConvertToARM(resolved) + if err != nil { + return nil, err + } + encryption := *encryption_ARM.(*arm.EncryptionProperties) + result.Properties.Encryption = &encryption + } + if store.PublicNetworkAccess != nil { + var temp string + temp = string(*store.PublicNetworkAccess) + publicNetworkAccess := arm.ConfigurationStoreProperties_PublicNetworkAccess(temp) + result.Properties.PublicNetworkAccess = &publicNetworkAccess + } + if store.SoftDeleteRetentionInDays != nil { + softDeleteRetentionInDays := *store.SoftDeleteRetentionInDays + result.Properties.SoftDeleteRetentionInDays = &softDeleteRetentionInDays + } + + // Set property "Sku": + if store.Sku != nil { + sku_ARM, err := store.Sku.ConvertToARM(resolved) + if err != nil { + return nil, err + } + sku := *sku_ARM.(*arm.Sku) + result.Sku = &sku + } + + // Set property "Tags": + if store.Tags != nil { + result.Tags = make(map[string]string, len(store.Tags)) + for key, value := range store.Tags { + result.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (store *ConfigurationStore_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ConfigurationStore_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (store *ConfigurationStore_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ConfigurationStore_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ConfigurationStore_Spec, got %T", armInput) + } + + // Set property "AzureName": + store.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "CreateMode": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CreateMode != nil { + var temp string + temp = string(*typedInput.Properties.CreateMode) + createMode := ConfigurationStoreProperties_CreateMode(temp) + store.CreateMode = &createMode + } + } + + // Set property "DataPlaneProxy": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataPlaneProxy != nil { + var dataPlaneProxy1 DataPlaneProxyProperties + err := dataPlaneProxy1.PopulateFromARM(owner, *typedInput.Properties.DataPlaneProxy) + if err != nil { + return err + } + dataPlaneProxy := dataPlaneProxy1 + store.DataPlaneProxy = &dataPlaneProxy + } + } + + // Set property "DefaultKeyValueRevisionRetentionPeriodInSeconds": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + defaultKeyValueRevisionRetentionPeriodInSeconds := *typedInput.Properties.DefaultKeyValueRevisionRetentionPeriodInSeconds + store.DefaultKeyValueRevisionRetentionPeriodInSeconds = &defaultKeyValueRevisionRetentionPeriodInSeconds + } + } + + // Set property "DisableLocalAuth": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DisableLocalAuth != nil { + disableLocalAuth := *typedInput.Properties.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } + } + + // Set property "EnablePurgeProtection": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.EnablePurgeProtection != nil { + enablePurgeProtection := *typedInput.Properties.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } + } + + // Set property "Encryption": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Encryption != nil { + var encryption1 EncryptionProperties + err := encryption1.PopulateFromARM(owner, *typedInput.Properties.Encryption) + if err != nil { + return err + } + encryption := encryption1 + store.Encryption = &encryption + } + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 ResourceIdentity + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + store.Identity = &identity + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + store.Location = &location + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + store.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "PublicNetworkAccess": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PublicNetworkAccess != nil { + var temp string + temp = string(*typedInput.Properties.PublicNetworkAccess) + publicNetworkAccess := ConfigurationStoreProperties_PublicNetworkAccess(temp) + store.PublicNetworkAccess = &publicNetworkAccess + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 Sku + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + store.Sku = &sku + } + + // Set property "SoftDeleteRetentionInDays": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.SoftDeleteRetentionInDays != nil { + softDeleteRetentionInDays := *typedInput.Properties.SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = &softDeleteRetentionInDays + } + } + + // Set property "Tags": + if typedInput.Tags != nil { + store.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + store.Tags[key] = value + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &ConfigurationStore_Spec{} + +// ConvertSpecFrom populates our ConfigurationStore_Spec from the provided source +func (store *ConfigurationStore_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.ConfigurationStore_Spec) + if ok { + // Populate our instance from source + return store.AssignProperties_From_ConfigurationStore_Spec(src) + } + + // Convert to an intermediate form + src = &storage.ConfigurationStore_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = store.AssignProperties_From_ConfigurationStore_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our ConfigurationStore_Spec +func (store *ConfigurationStore_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.ConfigurationStore_Spec) + if ok { + // Populate destination from our instance + return store.AssignProperties_To_ConfigurationStore_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.ConfigurationStore_Spec{} + err := store.AssignProperties_To_ConfigurationStore_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_ConfigurationStore_Spec populates our ConfigurationStore_Spec from the provided source ConfigurationStore_Spec +func (store *ConfigurationStore_Spec) AssignProperties_From_ConfigurationStore_Spec(source *storage.ConfigurationStore_Spec) error { + + // AzureName + store.AzureName = source.AzureName + + // CreateMode + if source.CreateMode != nil { + createMode := *source.CreateMode + createModeTemp := genruntime.ToEnum(createMode, configurationStoreProperties_CreateMode_Values) + store.CreateMode = &createModeTemp + } else { + store.CreateMode = nil + } + + // DataPlaneProxy + if source.DataPlaneProxy != nil { + var dataPlaneProxy DataPlaneProxyProperties + err := dataPlaneProxy.AssignProperties_From_DataPlaneProxyProperties(source.DataPlaneProxy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_DataPlaneProxyProperties() to populate field DataPlaneProxy") + } + store.DataPlaneProxy = &dataPlaneProxy + } else { + store.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + store.DefaultKeyValueRevisionRetentionPeriodInSeconds = genruntime.ClonePointerToInt(source.DefaultKeyValueRevisionRetentionPeriodInSeconds) + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } else { + store.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if source.EnablePurgeProtection != nil { + enablePurgeProtection := *source.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } else { + store.EnablePurgeProtection = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperties + err := encryption.AssignProperties_From_EncryptionProperties(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperties() to populate field Encryption") + } + store.Encryption = &encryption + } else { + store.Encryption = nil + } + + // Identity + if source.Identity != nil { + var identity ResourceIdentity + err := identity.AssignProperties_From_ResourceIdentity(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceIdentity() to populate field Identity") + } + store.Identity = &identity + } else { + store.Identity = nil + } + + // Location + store.Location = genruntime.ClonePointerToString(source.Location) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec ConfigurationStoreOperatorSpec + err := operatorSpec.AssignProperties_From_ConfigurationStoreOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStoreOperatorSpec() to populate field OperatorSpec") + } + store.OperatorSpec = &operatorSpec + } else { + store.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + store.Owner = &owner + } else { + store.Owner = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := *source.PublicNetworkAccess + publicNetworkAccessTemp := genruntime.ToEnum(publicNetworkAccess, configurationStoreProperties_PublicNetworkAccess_Values) + store.PublicNetworkAccess = &publicNetworkAccessTemp + } else { + store.PublicNetworkAccess = nil + } + + // Sku + if source.Sku != nil { + var sku Sku + err := sku.AssignProperties_From_Sku(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Sku() to populate field Sku") + } + store.Sku = &sku + } else { + store.Sku = nil + } + + // SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) + + // Tags + store.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStore_Spec populates the provided destination ConfigurationStore_Spec from our ConfigurationStore_Spec +func (store *ConfigurationStore_Spec) AssignProperties_To_ConfigurationStore_Spec(destination *storage.ConfigurationStore_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = store.AzureName + + // CreateMode + if store.CreateMode != nil { + createMode := string(*store.CreateMode) + destination.CreateMode = &createMode + } else { + destination.CreateMode = nil + } + + // DataPlaneProxy + if store.DataPlaneProxy != nil { + var dataPlaneProxy storage.DataPlaneProxyProperties + err := store.DataPlaneProxy.AssignProperties_To_DataPlaneProxyProperties(&dataPlaneProxy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_DataPlaneProxyProperties() to populate field DataPlaneProxy") + } + destination.DataPlaneProxy = &dataPlaneProxy + } else { + destination.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + destination.DefaultKeyValueRevisionRetentionPeriodInSeconds = genruntime.ClonePointerToInt(store.DefaultKeyValueRevisionRetentionPeriodInSeconds) + + // DisableLocalAuth + if store.DisableLocalAuth != nil { + disableLocalAuth := *store.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if store.EnablePurgeProtection != nil { + enablePurgeProtection := *store.EnablePurgeProtection + destination.EnablePurgeProtection = &enablePurgeProtection + } else { + destination.EnablePurgeProtection = nil + } + + // Encryption + if store.Encryption != nil { + var encryption storage.EncryptionProperties + err := store.Encryption.AssignProperties_To_EncryptionProperties(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperties() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Identity + if store.Identity != nil { + var identity storage.ResourceIdentity + err := store.Identity.AssignProperties_To_ResourceIdentity(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceIdentity() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(store.Location) + + // OperatorSpec + if store.OperatorSpec != nil { + var operatorSpec storage.ConfigurationStoreOperatorSpec + err := store.OperatorSpec.AssignProperties_To_ConfigurationStoreOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStoreOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = store.OriginalVersion() + + // Owner + if store.Owner != nil { + owner := store.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // PublicNetworkAccess + if store.PublicNetworkAccess != nil { + publicNetworkAccess := string(*store.PublicNetworkAccess) + destination.PublicNetworkAccess = &publicNetworkAccess + } else { + destination.PublicNetworkAccess = nil + } + + // Sku + if store.Sku != nil { + var sku storage.Sku + err := store.Sku.AssignProperties_To_Sku(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Sku() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SoftDeleteRetentionInDays + destination.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(store.SoftDeleteRetentionInDays) + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(store.Tags) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_ConfigurationStore_STATUS populates our ConfigurationStore_Spec from the provided source ConfigurationStore_STATUS +func (store *ConfigurationStore_Spec) Initialize_From_ConfigurationStore_STATUS(source *ConfigurationStore_STATUS) error { + + // CreateMode + if source.CreateMode != nil { + createMode := genruntime.ToEnum(string(*source.CreateMode), configurationStoreProperties_CreateMode_Values) + store.CreateMode = &createMode + } else { + store.CreateMode = nil + } + + // DataPlaneProxy + if source.DataPlaneProxy != nil { + var dataPlaneProxy DataPlaneProxyProperties + err := dataPlaneProxy.Initialize_From_DataPlaneProxyProperties_STATUS(source.DataPlaneProxy) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_DataPlaneProxyProperties_STATUS() to populate field DataPlaneProxy") + } + store.DataPlaneProxy = &dataPlaneProxy + } else { + store.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + store.DefaultKeyValueRevisionRetentionPeriodInSeconds = genruntime.ClonePointerToInt(source.DefaultKeyValueRevisionRetentionPeriodInSeconds) + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } else { + store.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if source.EnablePurgeProtection != nil { + enablePurgeProtection := *source.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } else { + store.EnablePurgeProtection = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperties + err := encryption.Initialize_From_EncryptionProperties_STATUS(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_EncryptionProperties_STATUS() to populate field Encryption") + } + store.Encryption = &encryption + } else { + store.Encryption = nil + } + + // Identity + if source.Identity != nil { + var identity ResourceIdentity + err := identity.Initialize_From_ResourceIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ResourceIdentity_STATUS() to populate field Identity") + } + store.Identity = &identity + } else { + store.Identity = nil + } + + // Location + store.Location = genruntime.ClonePointerToString(source.Location) + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := genruntime.ToEnum(string(*source.PublicNetworkAccess), configurationStoreProperties_PublicNetworkAccess_Values) + store.PublicNetworkAccess = &publicNetworkAccess + } else { + store.PublicNetworkAccess = nil + } + + // Sku + if source.Sku != nil { + var sku Sku + err := sku.Initialize_From_Sku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_Sku_STATUS() to populate field Sku") + } + store.Sku = &sku + } else { + store.Sku = nil + } + + // SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) + + // Tags + store.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (store *ConfigurationStore_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (store *ConfigurationStore_Spec) SetAzureName(azureName string) { store.AzureName = azureName } + +// The configuration store along with all resource properties. The Configuration Store will have all information to begin +// utilizing it. +type ConfigurationStore_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // CreateMode: Indicates whether the configuration store need to be recovered. + CreateMode *ConfigurationStoreProperties_CreateMode_STATUS `json:"createMode,omitempty"` + + // CreationDate: The creation date of configuration store. + CreationDate *string `json:"creationDate,omitempty"` + + // DataPlaneProxy: Property specifying the configuration of data plane proxy for Azure Resource Manager (ARM). + DataPlaneProxy *DataPlaneProxyProperties_STATUS `json:"dataPlaneProxy,omitempty"` + + // DefaultKeyValueRevisionRetentionPeriodInSeconds: The duration in seconds to retain new key value revisions. Defaults to + // 604800 (7 days) for Free SKU stores and 2592000 (30 days) for Standard SKU stores and Premium SKU stores. + DefaultKeyValueRevisionRetentionPeriodInSeconds *int `json:"defaultKeyValueRevisionRetentionPeriodInSeconds,omitempty"` + + // DisableLocalAuth: Disables all authentication methods other than AAD authentication. + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + + // EnablePurgeProtection: Property specifying whether protection against purge is enabled for this configuration store. + EnablePurgeProtection *bool `json:"enablePurgeProtection,omitempty"` + + // Encryption: The encryption settings of the configuration store. + Encryption *EncryptionProperties_STATUS `json:"encryption,omitempty"` + + // Endpoint: The DNS endpoint where the configuration store API will be available. + Endpoint *string `json:"endpoint,omitempty"` + + // Id: Fully qualified resource ID for the resource. Ex - + // /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} + Id *string `json:"id,omitempty"` + + // Identity: The managed identity information, if configured. + Identity *ResourceIdentity_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"` + + // PrivateEndpointConnections: The list of private endpoint connections that are set up for this resource. + PrivateEndpointConnections []PrivateEndpointConnectionReference_STATUS `json:"privateEndpointConnections,omitempty"` + + // ProvisioningState: The provisioning state of the configuration store. + ProvisioningState *ConfigurationStoreProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // PublicNetworkAccess: Control permission for data plane traffic coming from public networks while private endpoint is + // enabled. + PublicNetworkAccess *ConfigurationStoreProperties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"` + + // Sku: The sku of the configuration store. + Sku *Sku_STATUS `json:"sku,omitempty"` + + // SoftDeleteRetentionInDays: The amount of time in days that the configuration store will be retained when it is soft + // deleted. + SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` + + // SystemData: Resource system metadata. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: Resource tags. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &ConfigurationStore_STATUS{} + +// ConvertStatusFrom populates our ConfigurationStore_STATUS from the provided source +func (store *ConfigurationStore_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.ConfigurationStore_STATUS) + if ok { + // Populate our instance from source + return store.AssignProperties_From_ConfigurationStore_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.ConfigurationStore_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = store.AssignProperties_From_ConfigurationStore_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our ConfigurationStore_STATUS +func (store *ConfigurationStore_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.ConfigurationStore_STATUS) + if ok { + // Populate destination from our instance + return store.AssignProperties_To_ConfigurationStore_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.ConfigurationStore_STATUS{} + err := store.AssignProperties_To_ConfigurationStore_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 = &ConfigurationStore_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (store *ConfigurationStore_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ConfigurationStore_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (store *ConfigurationStore_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ConfigurationStore_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ConfigurationStore_STATUS, got %T", armInput) + } + + // 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 := ConfigurationStoreProperties_CreateMode_STATUS(temp) + store.CreateMode = &createMode + } + } + + // Set property "CreationDate": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CreationDate != nil { + creationDate := *typedInput.Properties.CreationDate + store.CreationDate = &creationDate + } + } + + // Set property "DataPlaneProxy": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataPlaneProxy != nil { + var dataPlaneProxy1 DataPlaneProxyProperties_STATUS + err := dataPlaneProxy1.PopulateFromARM(owner, *typedInput.Properties.DataPlaneProxy) + if err != nil { + return err + } + dataPlaneProxy := dataPlaneProxy1 + store.DataPlaneProxy = &dataPlaneProxy + } + } + + // Set property "DefaultKeyValueRevisionRetentionPeriodInSeconds": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + defaultKeyValueRevisionRetentionPeriodInSeconds := *typedInput.Properties.DefaultKeyValueRevisionRetentionPeriodInSeconds + store.DefaultKeyValueRevisionRetentionPeriodInSeconds = &defaultKeyValueRevisionRetentionPeriodInSeconds + } + } + + // Set property "DisableLocalAuth": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DisableLocalAuth != nil { + disableLocalAuth := *typedInput.Properties.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } + } + + // Set property "EnablePurgeProtection": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.EnablePurgeProtection != nil { + enablePurgeProtection := *typedInput.Properties.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } + } + + // Set property "Encryption": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Encryption != nil { + var encryption1 EncryptionProperties_STATUS + err := encryption1.PopulateFromARM(owner, *typedInput.Properties.Encryption) + if err != nil { + return err + } + encryption := encryption1 + store.Encryption = &encryption + } + } + + // Set property "Endpoint": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Endpoint != nil { + endpoint := *typedInput.Properties.Endpoint + store.Endpoint = &endpoint + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + store.Id = &id + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 ResourceIdentity_STATUS + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + store.Identity = &identity + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + store.Location = &location + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + store.Name = &name + } + + // Set property "PrivateEndpointConnections": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.PrivateEndpointConnections { + var item1 PrivateEndpointConnectionReference_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + store.PrivateEndpointConnections = append(store.PrivateEndpointConnections, item1) + } + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := ConfigurationStoreProperties_ProvisioningState_STATUS(temp) + store.ProvisioningState = &provisioningState + } + } + + // Set property "PublicNetworkAccess": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PublicNetworkAccess != nil { + var temp string + temp = string(*typedInput.Properties.PublicNetworkAccess) + publicNetworkAccess := ConfigurationStoreProperties_PublicNetworkAccess_STATUS(temp) + store.PublicNetworkAccess = &publicNetworkAccess + } + } + + // Set property "Sku": + if typedInput.Sku != nil { + var sku1 Sku_STATUS + err := sku1.PopulateFromARM(owner, *typedInput.Sku) + if err != nil { + return err + } + sku := sku1 + store.Sku = &sku + } + + // Set property "SoftDeleteRetentionInDays": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.SoftDeleteRetentionInDays != nil { + softDeleteRetentionInDays := *typedInput.Properties.SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = &softDeleteRetentionInDays + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + store.SystemData = &systemData + } + + // Set property "Tags": + if typedInput.Tags != nil { + store.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + store.Tags[key] = value + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + store.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_ConfigurationStore_STATUS populates our ConfigurationStore_STATUS from the provided source ConfigurationStore_STATUS +func (store *ConfigurationStore_STATUS) AssignProperties_From_ConfigurationStore_STATUS(source *storage.ConfigurationStore_STATUS) error { + + // Conditions + store.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CreateMode + if source.CreateMode != nil { + createMode := *source.CreateMode + createModeTemp := genruntime.ToEnum(createMode, configurationStoreProperties_CreateMode_STATUS_Values) + store.CreateMode = &createModeTemp + } else { + store.CreateMode = nil + } + + // CreationDate + store.CreationDate = genruntime.ClonePointerToString(source.CreationDate) + + // DataPlaneProxy + if source.DataPlaneProxy != nil { + var dataPlaneProxy DataPlaneProxyProperties_STATUS + err := dataPlaneProxy.AssignProperties_From_DataPlaneProxyProperties_STATUS(source.DataPlaneProxy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_DataPlaneProxyProperties_STATUS() to populate field DataPlaneProxy") + } + store.DataPlaneProxy = &dataPlaneProxy + } else { + store.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + store.DefaultKeyValueRevisionRetentionPeriodInSeconds = genruntime.ClonePointerToInt(source.DefaultKeyValueRevisionRetentionPeriodInSeconds) + + // DisableLocalAuth + if source.DisableLocalAuth != nil { + disableLocalAuth := *source.DisableLocalAuth + store.DisableLocalAuth = &disableLocalAuth + } else { + store.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if source.EnablePurgeProtection != nil { + enablePurgeProtection := *source.EnablePurgeProtection + store.EnablePurgeProtection = &enablePurgeProtection + } else { + store.EnablePurgeProtection = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperties_STATUS + err := encryption.AssignProperties_From_EncryptionProperties_STATUS(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperties_STATUS() to populate field Encryption") + } + store.Encryption = &encryption + } else { + store.Encryption = nil + } + + // Endpoint + store.Endpoint = genruntime.ClonePointerToString(source.Endpoint) + + // Id + store.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity ResourceIdentity_STATUS + err := identity.AssignProperties_From_ResourceIdentity_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ResourceIdentity_STATUS() to populate field Identity") + } + store.Identity = &identity + } else { + store.Identity = nil + } + + // Location + store.Location = genruntime.ClonePointerToString(source.Location) + + // Name + store.Name = genruntime.ClonePointerToString(source.Name) + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnectionReference_STATUS, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + var privateEndpointConnection PrivateEndpointConnectionReference_STATUS + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnectionReference_STATUS(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnectionReference_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + store.PrivateEndpointConnections = privateEndpointConnectionList + } else { + store.PrivateEndpointConnections = nil + } + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, configurationStoreProperties_ProvisioningState_STATUS_Values) + store.ProvisioningState = &provisioningStateTemp + } else { + store.ProvisioningState = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := *source.PublicNetworkAccess + publicNetworkAccessTemp := genruntime.ToEnum(publicNetworkAccess, configurationStoreProperties_PublicNetworkAccess_STATUS_Values) + store.PublicNetworkAccess = &publicNetworkAccessTemp + } else { + store.PublicNetworkAccess = nil + } + + // Sku + if source.Sku != nil { + var sku Sku_STATUS + err := sku.AssignProperties_From_Sku_STATUS(source.Sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Sku_STATUS() to populate field Sku") + } + store.Sku = &sku + } else { + store.Sku = nil + } + + // SoftDeleteRetentionInDays + store.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(source.SoftDeleteRetentionInDays) + + // 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") + } + store.SystemData = &systemDatum + } else { + store.SystemData = nil + } + + // Tags + store.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + store.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStore_STATUS populates the provided destination ConfigurationStore_STATUS from our ConfigurationStore_STATUS +func (store *ConfigurationStore_STATUS) AssignProperties_To_ConfigurationStore_STATUS(destination *storage.ConfigurationStore_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(store.Conditions) + + // CreateMode + if store.CreateMode != nil { + createMode := string(*store.CreateMode) + destination.CreateMode = &createMode + } else { + destination.CreateMode = nil + } + + // CreationDate + destination.CreationDate = genruntime.ClonePointerToString(store.CreationDate) + + // DataPlaneProxy + if store.DataPlaneProxy != nil { + var dataPlaneProxy storage.DataPlaneProxyProperties_STATUS + err := store.DataPlaneProxy.AssignProperties_To_DataPlaneProxyProperties_STATUS(&dataPlaneProxy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_DataPlaneProxyProperties_STATUS() to populate field DataPlaneProxy") + } + destination.DataPlaneProxy = &dataPlaneProxy + } else { + destination.DataPlaneProxy = nil + } + + // DefaultKeyValueRevisionRetentionPeriodInSeconds + destination.DefaultKeyValueRevisionRetentionPeriodInSeconds = genruntime.ClonePointerToInt(store.DefaultKeyValueRevisionRetentionPeriodInSeconds) + + // DisableLocalAuth + if store.DisableLocalAuth != nil { + disableLocalAuth := *store.DisableLocalAuth + destination.DisableLocalAuth = &disableLocalAuth + } else { + destination.DisableLocalAuth = nil + } + + // EnablePurgeProtection + if store.EnablePurgeProtection != nil { + enablePurgeProtection := *store.EnablePurgeProtection + destination.EnablePurgeProtection = &enablePurgeProtection + } else { + destination.EnablePurgeProtection = nil + } + + // Encryption + if store.Encryption != nil { + var encryption storage.EncryptionProperties_STATUS + err := store.Encryption.AssignProperties_To_EncryptionProperties_STATUS(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperties_STATUS() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Endpoint + destination.Endpoint = genruntime.ClonePointerToString(store.Endpoint) + + // Id + destination.Id = genruntime.ClonePointerToString(store.Id) + + // Identity + if store.Identity != nil { + var identity storage.ResourceIdentity_STATUS + err := store.Identity.AssignProperties_To_ResourceIdentity_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ResourceIdentity_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(store.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(store.Name) + + // PrivateEndpointConnections + if store.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnectionReference_STATUS, len(store.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range store.PrivateEndpointConnections { + var privateEndpointConnection storage.PrivateEndpointConnectionReference_STATUS + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnectionReference_STATUS(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnectionReference_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ProvisioningState + if store.ProvisioningState != nil { + provisioningState := string(*store.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // PublicNetworkAccess + if store.PublicNetworkAccess != nil { + publicNetworkAccess := string(*store.PublicNetworkAccess) + destination.PublicNetworkAccess = &publicNetworkAccess + } else { + destination.PublicNetworkAccess = nil + } + + // Sku + if store.Sku != nil { + var sku storage.Sku_STATUS + err := store.Sku.AssignProperties_To_Sku_STATUS(&sku) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Sku_STATUS() to populate field Sku") + } + destination.Sku = &sku + } else { + destination.Sku = nil + } + + // SoftDeleteRetentionInDays + destination.SoftDeleteRetentionInDays = genruntime.ClonePointerToInt(store.SoftDeleteRetentionInDays) + + // SystemData + if store.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := store.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(store.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(store.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 ConfigurationStoreOperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions). + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` + + // Secrets: configures where to place Azure generated secrets. + Secrets *ConfigurationStoreOperatorSecrets `json:"secrets,omitempty"` +} + +// AssignProperties_From_ConfigurationStoreOperatorSpec populates our ConfigurationStoreOperatorSpec from the provided source ConfigurationStoreOperatorSpec +func (operator *ConfigurationStoreOperatorSpec) AssignProperties_From_ConfigurationStoreOperatorSpec(source *storage.ConfigurationStoreOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + 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 { + 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 ConfigurationStoreOperatorSecrets + err := secret.AssignProperties_From_ConfigurationStoreOperatorSecrets(source.Secrets) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ConfigurationStoreOperatorSecrets() to populate field Secrets") + } + operator.Secrets = &secret + } else { + operator.Secrets = nil + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStoreOperatorSpec populates the provided destination ConfigurationStoreOperatorSpec from our ConfigurationStoreOperatorSpec +func (operator *ConfigurationStoreOperatorSpec) AssignProperties_To_ConfigurationStoreOperatorSpec(destination *storage.ConfigurationStoreOperatorSpec) 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 { + 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 { + 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.ConfigurationStoreOperatorSecrets + err := operator.Secrets.AssignProperties_To_ConfigurationStoreOperatorSecrets(&secret) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ConfigurationStoreOperatorSecrets() 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 +} + +// +kubebuilder:validation:Enum={"Default","Recover"} +type ConfigurationStoreProperties_CreateMode string + +const ( + ConfigurationStoreProperties_CreateMode_Default = ConfigurationStoreProperties_CreateMode("Default") + ConfigurationStoreProperties_CreateMode_Recover = ConfigurationStoreProperties_CreateMode("Recover") +) + +// Mapping from string to ConfigurationStoreProperties_CreateMode +var configurationStoreProperties_CreateMode_Values = map[string]ConfigurationStoreProperties_CreateMode{ + "default": ConfigurationStoreProperties_CreateMode_Default, + "recover": ConfigurationStoreProperties_CreateMode_Recover, +} + +type ConfigurationStoreProperties_CreateMode_STATUS string + +const ( + ConfigurationStoreProperties_CreateMode_STATUS_Default = ConfigurationStoreProperties_CreateMode_STATUS("Default") + ConfigurationStoreProperties_CreateMode_STATUS_Recover = ConfigurationStoreProperties_CreateMode_STATUS("Recover") +) + +// Mapping from string to ConfigurationStoreProperties_CreateMode_STATUS +var configurationStoreProperties_CreateMode_STATUS_Values = map[string]ConfigurationStoreProperties_CreateMode_STATUS{ + "default": ConfigurationStoreProperties_CreateMode_STATUS_Default, + "recover": ConfigurationStoreProperties_CreateMode_STATUS_Recover, +} + +type ConfigurationStoreProperties_ProvisioningState_STATUS string + +const ( + ConfigurationStoreProperties_ProvisioningState_STATUS_Canceled = ConfigurationStoreProperties_ProvisioningState_STATUS("Canceled") + ConfigurationStoreProperties_ProvisioningState_STATUS_Creating = ConfigurationStoreProperties_ProvisioningState_STATUS("Creating") + ConfigurationStoreProperties_ProvisioningState_STATUS_Deleting = ConfigurationStoreProperties_ProvisioningState_STATUS("Deleting") + ConfigurationStoreProperties_ProvisioningState_STATUS_Failed = ConfigurationStoreProperties_ProvisioningState_STATUS("Failed") + ConfigurationStoreProperties_ProvisioningState_STATUS_Succeeded = ConfigurationStoreProperties_ProvisioningState_STATUS("Succeeded") + ConfigurationStoreProperties_ProvisioningState_STATUS_Updating = ConfigurationStoreProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to ConfigurationStoreProperties_ProvisioningState_STATUS +var configurationStoreProperties_ProvisioningState_STATUS_Values = map[string]ConfigurationStoreProperties_ProvisioningState_STATUS{ + "canceled": ConfigurationStoreProperties_ProvisioningState_STATUS_Canceled, + "creating": ConfigurationStoreProperties_ProvisioningState_STATUS_Creating, + "deleting": ConfigurationStoreProperties_ProvisioningState_STATUS_Deleting, + "failed": ConfigurationStoreProperties_ProvisioningState_STATUS_Failed, + "succeeded": ConfigurationStoreProperties_ProvisioningState_STATUS_Succeeded, + "updating": ConfigurationStoreProperties_ProvisioningState_STATUS_Updating, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type ConfigurationStoreProperties_PublicNetworkAccess string + +const ( + ConfigurationStoreProperties_PublicNetworkAccess_Disabled = ConfigurationStoreProperties_PublicNetworkAccess("Disabled") + ConfigurationStoreProperties_PublicNetworkAccess_Enabled = ConfigurationStoreProperties_PublicNetworkAccess("Enabled") +) + +// Mapping from string to ConfigurationStoreProperties_PublicNetworkAccess +var configurationStoreProperties_PublicNetworkAccess_Values = map[string]ConfigurationStoreProperties_PublicNetworkAccess{ + "disabled": ConfigurationStoreProperties_PublicNetworkAccess_Disabled, + "enabled": ConfigurationStoreProperties_PublicNetworkAccess_Enabled, +} + +type ConfigurationStoreProperties_PublicNetworkAccess_STATUS string + +const ( + ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Disabled = ConfigurationStoreProperties_PublicNetworkAccess_STATUS("Disabled") + ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Enabled = ConfigurationStoreProperties_PublicNetworkAccess_STATUS("Enabled") +) + +// Mapping from string to ConfigurationStoreProperties_PublicNetworkAccess_STATUS +var configurationStoreProperties_PublicNetworkAccess_STATUS_Values = map[string]ConfigurationStoreProperties_PublicNetworkAccess_STATUS{ + "disabled": ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Disabled, + "enabled": ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Enabled, +} + +// The data plane proxy settings for a configuration store. +type DataPlaneProxyProperties struct { + // AuthenticationMode: The data plane proxy authentication mode. This property manages the authentication mode of request + // to the data plane resources. + AuthenticationMode *DataPlaneProxyProperties_AuthenticationMode `json:"authenticationMode,omitempty"` + + // PrivateLinkDelegation: The data plane proxy private link delegation. This property manages if a request from delegated + // Azure Resource Manager (ARM) private link is allowed when the data plane resource requires private link. + PrivateLinkDelegation *DataPlaneProxyProperties_PrivateLinkDelegation `json:"privateLinkDelegation,omitempty"` +} + +var _ genruntime.ARMTransformer = &DataPlaneProxyProperties{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (properties *DataPlaneProxyProperties) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if properties == nil { + return nil, nil + } + result := &arm.DataPlaneProxyProperties{} + + // Set property "AuthenticationMode": + if properties.AuthenticationMode != nil { + var temp string + temp = string(*properties.AuthenticationMode) + authenticationMode := arm.DataPlaneProxyProperties_AuthenticationMode(temp) + result.AuthenticationMode = &authenticationMode + } + + // Set property "PrivateLinkDelegation": + if properties.PrivateLinkDelegation != nil { + var temp string + temp = string(*properties.PrivateLinkDelegation) + privateLinkDelegation := arm.DataPlaneProxyProperties_PrivateLinkDelegation(temp) + result.PrivateLinkDelegation = &privateLinkDelegation + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *DataPlaneProxyProperties) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.DataPlaneProxyProperties{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *DataPlaneProxyProperties) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.DataPlaneProxyProperties) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.DataPlaneProxyProperties, got %T", armInput) + } + + // Set property "AuthenticationMode": + if typedInput.AuthenticationMode != nil { + var temp string + temp = string(*typedInput.AuthenticationMode) + authenticationMode := DataPlaneProxyProperties_AuthenticationMode(temp) + properties.AuthenticationMode = &authenticationMode + } + + // Set property "PrivateLinkDelegation": + if typedInput.PrivateLinkDelegation != nil { + var temp string + temp = string(*typedInput.PrivateLinkDelegation) + privateLinkDelegation := DataPlaneProxyProperties_PrivateLinkDelegation(temp) + properties.PrivateLinkDelegation = &privateLinkDelegation + } + + // No error + return nil +} + +// AssignProperties_From_DataPlaneProxyProperties populates our DataPlaneProxyProperties from the provided source DataPlaneProxyProperties +func (properties *DataPlaneProxyProperties) AssignProperties_From_DataPlaneProxyProperties(source *storage.DataPlaneProxyProperties) error { + + // AuthenticationMode + if source.AuthenticationMode != nil { + authenticationMode := *source.AuthenticationMode + authenticationModeTemp := genruntime.ToEnum(authenticationMode, dataPlaneProxyProperties_AuthenticationMode_Values) + properties.AuthenticationMode = &authenticationModeTemp + } else { + properties.AuthenticationMode = nil + } + + // PrivateLinkDelegation + if source.PrivateLinkDelegation != nil { + privateLinkDelegation := *source.PrivateLinkDelegation + privateLinkDelegationTemp := genruntime.ToEnum(privateLinkDelegation, dataPlaneProxyProperties_PrivateLinkDelegation_Values) + properties.PrivateLinkDelegation = &privateLinkDelegationTemp + } else { + properties.PrivateLinkDelegation = nil + } + + // No error + return nil +} + +// AssignProperties_To_DataPlaneProxyProperties populates the provided destination DataPlaneProxyProperties from our DataPlaneProxyProperties +func (properties *DataPlaneProxyProperties) AssignProperties_To_DataPlaneProxyProperties(destination *storage.DataPlaneProxyProperties) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AuthenticationMode + if properties.AuthenticationMode != nil { + authenticationMode := string(*properties.AuthenticationMode) + destination.AuthenticationMode = &authenticationMode + } else { + destination.AuthenticationMode = nil + } + + // PrivateLinkDelegation + if properties.PrivateLinkDelegation != nil { + privateLinkDelegation := string(*properties.PrivateLinkDelegation) + destination.PrivateLinkDelegation = &privateLinkDelegation + } else { + destination.PrivateLinkDelegation = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_DataPlaneProxyProperties_STATUS populates our DataPlaneProxyProperties from the provided source DataPlaneProxyProperties_STATUS +func (properties *DataPlaneProxyProperties) Initialize_From_DataPlaneProxyProperties_STATUS(source *DataPlaneProxyProperties_STATUS) error { + + // AuthenticationMode + if source.AuthenticationMode != nil { + authenticationMode := genruntime.ToEnum(string(*source.AuthenticationMode), dataPlaneProxyProperties_AuthenticationMode_Values) + properties.AuthenticationMode = &authenticationMode + } else { + properties.AuthenticationMode = nil + } + + // PrivateLinkDelegation + if source.PrivateLinkDelegation != nil { + privateLinkDelegation := genruntime.ToEnum(string(*source.PrivateLinkDelegation), dataPlaneProxyProperties_PrivateLinkDelegation_Values) + properties.PrivateLinkDelegation = &privateLinkDelegation + } else { + properties.PrivateLinkDelegation = nil + } + + // No error + return nil +} + +// The data plane proxy settings for a configuration store. +type DataPlaneProxyProperties_STATUS struct { + // AuthenticationMode: The data plane proxy authentication mode. This property manages the authentication mode of request + // to the data plane resources. + AuthenticationMode *DataPlaneProxyProperties_AuthenticationMode_STATUS `json:"authenticationMode,omitempty"` + + // PrivateLinkDelegation: The data plane proxy private link delegation. This property manages if a request from delegated + // Azure Resource Manager (ARM) private link is allowed when the data plane resource requires private link. + PrivateLinkDelegation *DataPlaneProxyProperties_PrivateLinkDelegation_STATUS `json:"privateLinkDelegation,omitempty"` +} + +var _ genruntime.FromARMConverter = &DataPlaneProxyProperties_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *DataPlaneProxyProperties_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.DataPlaneProxyProperties_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *DataPlaneProxyProperties_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.DataPlaneProxyProperties_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.DataPlaneProxyProperties_STATUS, got %T", armInput) + } + + // Set property "AuthenticationMode": + if typedInput.AuthenticationMode != nil { + var temp string + temp = string(*typedInput.AuthenticationMode) + authenticationMode := DataPlaneProxyProperties_AuthenticationMode_STATUS(temp) + properties.AuthenticationMode = &authenticationMode + } + + // Set property "PrivateLinkDelegation": + if typedInput.PrivateLinkDelegation != nil { + var temp string + temp = string(*typedInput.PrivateLinkDelegation) + privateLinkDelegation := DataPlaneProxyProperties_PrivateLinkDelegation_STATUS(temp) + properties.PrivateLinkDelegation = &privateLinkDelegation + } + + // No error + return nil +} + +// AssignProperties_From_DataPlaneProxyProperties_STATUS populates our DataPlaneProxyProperties_STATUS from the provided source DataPlaneProxyProperties_STATUS +func (properties *DataPlaneProxyProperties_STATUS) AssignProperties_From_DataPlaneProxyProperties_STATUS(source *storage.DataPlaneProxyProperties_STATUS) error { + + // AuthenticationMode + if source.AuthenticationMode != nil { + authenticationMode := *source.AuthenticationMode + authenticationModeTemp := genruntime.ToEnum(authenticationMode, dataPlaneProxyProperties_AuthenticationMode_STATUS_Values) + properties.AuthenticationMode = &authenticationModeTemp + } else { + properties.AuthenticationMode = nil + } + + // PrivateLinkDelegation + if source.PrivateLinkDelegation != nil { + privateLinkDelegation := *source.PrivateLinkDelegation + privateLinkDelegationTemp := genruntime.ToEnum(privateLinkDelegation, dataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Values) + properties.PrivateLinkDelegation = &privateLinkDelegationTemp + } else { + properties.PrivateLinkDelegation = nil + } + + // No error + return nil +} + +// AssignProperties_To_DataPlaneProxyProperties_STATUS populates the provided destination DataPlaneProxyProperties_STATUS from our DataPlaneProxyProperties_STATUS +func (properties *DataPlaneProxyProperties_STATUS) AssignProperties_To_DataPlaneProxyProperties_STATUS(destination *storage.DataPlaneProxyProperties_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AuthenticationMode + if properties.AuthenticationMode != nil { + authenticationMode := string(*properties.AuthenticationMode) + destination.AuthenticationMode = &authenticationMode + } else { + destination.AuthenticationMode = nil + } + + // PrivateLinkDelegation + if properties.PrivateLinkDelegation != nil { + privateLinkDelegation := string(*properties.PrivateLinkDelegation) + destination.PrivateLinkDelegation = &privateLinkDelegation + } else { + destination.PrivateLinkDelegation = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The encryption settings for a configuration store. +type EncryptionProperties struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` +} + +var _ genruntime.ARMTransformer = &EncryptionProperties{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (properties *EncryptionProperties) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if properties == nil { + return nil, nil + } + result := &arm.EncryptionProperties{} + + // Set property "KeyVaultProperties": + if properties.KeyVaultProperties != nil { + keyVaultProperties_ARM, err := properties.KeyVaultProperties.ConvertToARM(resolved) + if err != nil { + return nil, err + } + keyVaultProperties := *keyVaultProperties_ARM.(*arm.KeyVaultProperties) + result.KeyVaultProperties = &keyVaultProperties + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *EncryptionProperties) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.EncryptionProperties{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *EncryptionProperties) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.EncryptionProperties) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.EncryptionProperties, got %T", armInput) + } + + // Set property "KeyVaultProperties": + if typedInput.KeyVaultProperties != nil { + var keyVaultProperties1 KeyVaultProperties + err := keyVaultProperties1.PopulateFromARM(owner, *typedInput.KeyVaultProperties) + if err != nil { + return err + } + keyVaultProperties := keyVaultProperties1 + properties.KeyVaultProperties = &keyVaultProperties + } + + // No error + return nil +} + +// AssignProperties_From_EncryptionProperties populates our EncryptionProperties from the provided source EncryptionProperties +func (properties *EncryptionProperties) AssignProperties_From_EncryptionProperties(source *storage.EncryptionProperties) error { + + // KeyVaultProperties + if source.KeyVaultProperties != nil { + var keyVaultProperty KeyVaultProperties + err := keyVaultProperty.AssignProperties_From_KeyVaultProperties(source.KeyVaultProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyVaultProperties() to populate field KeyVaultProperties") + } + properties.KeyVaultProperties = &keyVaultProperty + } else { + properties.KeyVaultProperties = nil + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperties populates the provided destination EncryptionProperties from our EncryptionProperties +func (properties *EncryptionProperties) AssignProperties_To_EncryptionProperties(destination *storage.EncryptionProperties) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // KeyVaultProperties + if properties.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties + err := properties.KeyVaultProperties.AssignProperties_To_KeyVaultProperties(&keyVaultProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyVaultProperties() to populate field KeyVaultProperties") + } + destination.KeyVaultProperties = &keyVaultProperty + } else { + destination.KeyVaultProperties = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_EncryptionProperties_STATUS populates our EncryptionProperties from the provided source EncryptionProperties_STATUS +func (properties *EncryptionProperties) Initialize_From_EncryptionProperties_STATUS(source *EncryptionProperties_STATUS) error { + + // KeyVaultProperties + if source.KeyVaultProperties != nil { + var keyVaultProperty KeyVaultProperties + err := keyVaultProperty.Initialize_From_KeyVaultProperties_STATUS(source.KeyVaultProperties) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_KeyVaultProperties_STATUS() to populate field KeyVaultProperties") + } + properties.KeyVaultProperties = &keyVaultProperty + } else { + properties.KeyVaultProperties = nil + } + + // No error + return nil +} + +// The encryption settings for a configuration store. +type EncryptionProperties_STATUS struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` +} + +var _ genruntime.FromARMConverter = &EncryptionProperties_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *EncryptionProperties_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.EncryptionProperties_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *EncryptionProperties_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.EncryptionProperties_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.EncryptionProperties_STATUS, got %T", armInput) + } + + // Set property "KeyVaultProperties": + if typedInput.KeyVaultProperties != nil { + var keyVaultProperties1 KeyVaultProperties_STATUS + err := keyVaultProperties1.PopulateFromARM(owner, *typedInput.KeyVaultProperties) + if err != nil { + return err + } + keyVaultProperties := keyVaultProperties1 + properties.KeyVaultProperties = &keyVaultProperties + } + + // No error + return nil +} + +// AssignProperties_From_EncryptionProperties_STATUS populates our EncryptionProperties_STATUS from the provided source EncryptionProperties_STATUS +func (properties *EncryptionProperties_STATUS) AssignProperties_From_EncryptionProperties_STATUS(source *storage.EncryptionProperties_STATUS) error { + + // KeyVaultProperties + if source.KeyVaultProperties != nil { + var keyVaultProperty KeyVaultProperties_STATUS + err := keyVaultProperty.AssignProperties_From_KeyVaultProperties_STATUS(source.KeyVaultProperties) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyVaultProperties_STATUS() to populate field KeyVaultProperties") + } + properties.KeyVaultProperties = &keyVaultProperty + } else { + properties.KeyVaultProperties = nil + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperties_STATUS populates the provided destination EncryptionProperties_STATUS from our EncryptionProperties_STATUS +func (properties *EncryptionProperties_STATUS) AssignProperties_To_EncryptionProperties_STATUS(destination *storage.EncryptionProperties_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // KeyVaultProperties + if properties.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties_STATUS + err := properties.KeyVaultProperties.AssignProperties_To_KeyVaultProperties_STATUS(&keyVaultProperty) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyVaultProperties_STATUS() to populate field KeyVaultProperties") + } + destination.KeyVaultProperties = &keyVaultProperty + } else { + destination.KeyVaultProperties = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// A reference to a related private endpoint connection. +type PrivateEndpointConnectionReference_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // PrivateEndpoint: The resource of private endpoint. + PrivateEndpoint *PrivateEndpoint_STATUS `json:"privateEndpoint,omitempty"` + + // PrivateLinkServiceConnectionState: A collection of information about the state of the connection between service + // consumer and provider. + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState_STATUS `json:"privateLinkServiceConnectionState,omitempty"` + + // ProvisioningState: The provisioning status of the private endpoint connection. + ProvisioningState *PrivateEndpointConnectionProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +var _ genruntime.FromARMConverter = &PrivateEndpointConnectionReference_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (reference *PrivateEndpointConnectionReference_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpointConnectionReference_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (reference *PrivateEndpointConnectionReference_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpointConnectionReference_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpointConnectionReference_STATUS, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + reference.Id = &id + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + reference.Name = &name + } + + // Set property "PrivateEndpoint": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PrivateEndpoint != nil { + var privateEndpoint1 PrivateEndpoint_STATUS + err := privateEndpoint1.PopulateFromARM(owner, *typedInput.Properties.PrivateEndpoint) + if err != nil { + return err + } + privateEndpoint := privateEndpoint1 + reference.PrivateEndpoint = &privateEndpoint + } + } + + // Set property "PrivateLinkServiceConnectionState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PrivateLinkServiceConnectionState != nil { + var privateLinkServiceConnectionState1 PrivateLinkServiceConnectionState_STATUS + err := privateLinkServiceConnectionState1.PopulateFromARM(owner, *typedInput.Properties.PrivateLinkServiceConnectionState) + if err != nil { + return err + } + privateLinkServiceConnectionState := privateLinkServiceConnectionState1 + reference.PrivateLinkServiceConnectionState = &privateLinkServiceConnectionState + } + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := PrivateEndpointConnectionProperties_ProvisioningState_STATUS(temp) + reference.ProvisioningState = &provisioningState + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + reference.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpointConnectionReference_STATUS populates our PrivateEndpointConnectionReference_STATUS from the provided source PrivateEndpointConnectionReference_STATUS +func (reference *PrivateEndpointConnectionReference_STATUS) AssignProperties_From_PrivateEndpointConnectionReference_STATUS(source *storage.PrivateEndpointConnectionReference_STATUS) error { + + // Id + reference.Id = genruntime.ClonePointerToString(source.Id) + + // Name + reference.Name = genruntime.ClonePointerToString(source.Name) + + // PrivateEndpoint + if source.PrivateEndpoint != nil { + var privateEndpoint PrivateEndpoint_STATUS + err := privateEndpoint.AssignProperties_From_PrivateEndpoint_STATUS(source.PrivateEndpoint) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpoint_STATUS() to populate field PrivateEndpoint") + } + reference.PrivateEndpoint = &privateEndpoint + } else { + reference.PrivateEndpoint = nil + } + + // PrivateLinkServiceConnectionState + if source.PrivateLinkServiceConnectionState != nil { + var privateLinkServiceConnectionState PrivateLinkServiceConnectionState_STATUS + err := privateLinkServiceConnectionState.AssignProperties_From_PrivateLinkServiceConnectionState_STATUS(source.PrivateLinkServiceConnectionState) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateLinkServiceConnectionState_STATUS() to populate field PrivateLinkServiceConnectionState") + } + reference.PrivateLinkServiceConnectionState = &privateLinkServiceConnectionState + } else { + reference.PrivateLinkServiceConnectionState = nil + } + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, privateEndpointConnectionProperties_ProvisioningState_STATUS_Values) + reference.ProvisioningState = &provisioningStateTemp + } else { + reference.ProvisioningState = nil + } + + // Type + reference.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnectionReference_STATUS populates the provided destination PrivateEndpointConnectionReference_STATUS from our PrivateEndpointConnectionReference_STATUS +func (reference *PrivateEndpointConnectionReference_STATUS) AssignProperties_To_PrivateEndpointConnectionReference_STATUS(destination *storage.PrivateEndpointConnectionReference_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(reference.Id) + + // Name + destination.Name = genruntime.ClonePointerToString(reference.Name) + + // PrivateEndpoint + if reference.PrivateEndpoint != nil { + var privateEndpoint storage.PrivateEndpoint_STATUS + err := reference.PrivateEndpoint.AssignProperties_To_PrivateEndpoint_STATUS(&privateEndpoint) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpoint_STATUS() to populate field PrivateEndpoint") + } + destination.PrivateEndpoint = &privateEndpoint + } else { + destination.PrivateEndpoint = nil + } + + // PrivateLinkServiceConnectionState + if reference.PrivateLinkServiceConnectionState != nil { + var privateLinkServiceConnectionState storage.PrivateLinkServiceConnectionState_STATUS + err := reference.PrivateLinkServiceConnectionState.AssignProperties_To_PrivateLinkServiceConnectionState_STATUS(&privateLinkServiceConnectionState) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateLinkServiceConnectionState_STATUS() to populate field PrivateLinkServiceConnectionState") + } + destination.PrivateLinkServiceConnectionState = &privateLinkServiceConnectionState + } else { + destination.PrivateLinkServiceConnectionState = nil + } + + // ProvisioningState + if reference.ProvisioningState != nil { + provisioningState := string(*reference.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(reference.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// An identity that can be associated with a resource. +type ResourceIdentity struct { + // Type: The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created + // identity and a set of user-assigned identities. The type 'None' will remove any identities. + Type *ResourceIdentity_Type `json:"type,omitempty"` + + // UserAssignedIdentities: The list of user-assigned identities associated with the resource. The user-assigned identity + // dictionary keys will be ARM resource ids in the form: + // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.ARMTransformer = &ResourceIdentity{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (identity *ResourceIdentity) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if identity == nil { + return nil, nil + } + result := &arm.ResourceIdentity{} + + // Set property "Type": + if identity.Type != nil { + var temp string + temp = string(*identity.Type) + typeVar := arm.ResourceIdentity_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 *ResourceIdentity) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceIdentity{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *ResourceIdentity) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceIdentity) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceIdentity, got %T", armInput) + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := ResourceIdentity_Type(temp) + identity.Type = &typeVar + } + + // no assignment for property "UserAssignedIdentities" + + // No error + return nil +} + +// AssignProperties_From_ResourceIdentity populates our ResourceIdentity from the provided source ResourceIdentity +func (identity *ResourceIdentity) AssignProperties_From_ResourceIdentity(source *storage.ResourceIdentity) error { + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, resourceIdentity_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 { + 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_ResourceIdentity populates the provided destination ResourceIdentity from our ResourceIdentity +func (identity *ResourceIdentity) AssignProperties_To_ResourceIdentity(destination *storage.ResourceIdentity) 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 { + 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_ResourceIdentity_STATUS populates our ResourceIdentity from the provided source ResourceIdentity_STATUS +func (identity *ResourceIdentity) Initialize_From_ResourceIdentity_STATUS(source *ResourceIdentity_STATUS) error { + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), resourceIdentity_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 +} + +// An identity that can be associated with a resource. +type ResourceIdentity_STATUS struct { + // PrincipalId: The principal id of the identity. This property will only be provided for a system-assigned identity. + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: The tenant id associated with the resource's identity. This property will only be provided for a + // system-assigned identity. + TenantId *string `json:"tenantId,omitempty"` + + // Type: The type of managed identity used. The type 'SystemAssigned, UserAssigned' includes both an implicitly created + // identity and a set of user-assigned identities. The type 'None' will remove any identities. + Type *ResourceIdentity_Type_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: The list of user-assigned identities associated with the resource. The user-assigned identity + // dictionary keys will be ARM resource ids in the form: + // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities map[string]UserIdentity_STATUS `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.FromARMConverter = &ResourceIdentity_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (identity *ResourceIdentity_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ResourceIdentity_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *ResourceIdentity_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ResourceIdentity_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ResourceIdentity_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 := ResourceIdentity_Type_STATUS(temp) + identity.Type = &typeVar + } + + // Set property "UserAssignedIdentities": + if typedInput.UserAssignedIdentities != nil { + identity.UserAssignedIdentities = make(map[string]UserIdentity_STATUS, len(typedInput.UserAssignedIdentities)) + for key, value := range typedInput.UserAssignedIdentities { + var value1 UserIdentity_STATUS + err := value1.PopulateFromARM(owner, value) + if err != nil { + return err + } + identity.UserAssignedIdentities[key] = value1 + } + } + + // No error + return nil +} + +// AssignProperties_From_ResourceIdentity_STATUS populates our ResourceIdentity_STATUS from the provided source ResourceIdentity_STATUS +func (identity *ResourceIdentity_STATUS) AssignProperties_From_ResourceIdentity_STATUS(source *storage.ResourceIdentity_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, resourceIdentity_Type_STATUS_Values) + identity.Type = &typeTemp + } else { + identity.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]UserIdentity_STATUS, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + var userAssignedIdentity UserIdentity_STATUS + err := userAssignedIdentity.AssignProperties_From_UserIdentity_STATUS(&userAssignedIdentityValue) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserIdentity_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + identity.UserAssignedIdentities = userAssignedIdentityMap + } else { + identity.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// AssignProperties_To_ResourceIdentity_STATUS populates the provided destination ResourceIdentity_STATUS from our ResourceIdentity_STATUS +func (identity *ResourceIdentity_STATUS) AssignProperties_To_ResourceIdentity_STATUS(destination *storage.ResourceIdentity_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(identity.PrincipalId) + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(identity.TenantId) + + // Type + if identity.Type != nil { + typeVar := string(*identity.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // UserAssignedIdentities + if identity.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]storage.UserIdentity_STATUS, len(identity.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range identity.UserAssignedIdentities { + var userAssignedIdentity storage.UserIdentity_STATUS + err := userAssignedIdentityValue.AssignProperties_To_UserIdentity_STATUS(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserIdentity_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityMap + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Describes a configuration store SKU. +type Sku struct { + // +kubebuilder:validation:Required + // Name: The SKU name of the configuration store. + Name *string `json:"name,omitempty"` +} + +var _ genruntime.ARMTransformer = &Sku{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (sku *Sku) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if sku == nil { + return nil, nil + } + result := &arm.Sku{} + + // Set property "Name": + if sku.Name != nil { + name := *sku.Name + result.Name = &name + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (sku *Sku) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Sku{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (sku *Sku) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Sku) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Sku, got %T", armInput) + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + sku.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_Sku populates our Sku from the provided source Sku +func (sku *Sku) AssignProperties_From_Sku(source *storage.Sku) error { + + // Name + sku.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_Sku populates the provided destination Sku from our Sku +func (sku *Sku) AssignProperties_To_Sku(destination *storage.Sku) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Name + destination.Name = genruntime.ClonePointerToString(sku.Name) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Sku_STATUS populates our Sku from the provided source Sku_STATUS +func (sku *Sku) Initialize_From_Sku_STATUS(source *Sku_STATUS) error { + + // Name + sku.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// Describes a configuration store SKU. +type Sku_STATUS struct { + // Name: The SKU name of the configuration store. + Name *string `json:"name,omitempty"` +} + +var _ genruntime.FromARMConverter = &Sku_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (sku *Sku_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Sku_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (sku *Sku_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Sku_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Sku_STATUS, got %T", armInput) + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + sku.Name = &name + } + + // No error + return nil +} + +// AssignProperties_From_Sku_STATUS populates our Sku_STATUS from the provided source Sku_STATUS +func (sku *Sku_STATUS) AssignProperties_From_Sku_STATUS(source *storage.Sku_STATUS) error { + + // Name + sku.Name = genruntime.ClonePointerToString(source.Name) + + // No error + return nil +} + +// AssignProperties_To_Sku_STATUS populates the provided destination Sku_STATUS from our Sku_STATUS +func (sku *Sku_STATUS) AssignProperties_To_Sku_STATUS(destination *storage.Sku_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Name + destination.Name = genruntime.ClonePointerToString(sku.Name) + + // 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 +} + +type ConfigurationStoreOperatorSecrets struct { + // PrimaryConnectionString: indicates where the PrimaryConnectionString secret should be placed. If omitted, the secret + // will not be retrieved from Azure. + PrimaryConnectionString *genruntime.SecretDestination `json:"primaryConnectionString,omitempty"` + + // PrimaryKey: indicates where the PrimaryKey secret should be placed. If omitted, the secret will not be retrieved from + // Azure. + PrimaryKey *genruntime.SecretDestination `json:"primaryKey,omitempty"` + + // PrimaryKeyID: indicates where the PrimaryKeyID secret should be placed. If omitted, the secret will not be retrieved + // from Azure. + PrimaryKeyID *genruntime.SecretDestination `json:"primaryKeyID,omitempty"` + + // PrimaryReadOnlyConnectionString: indicates where the PrimaryReadOnlyConnectionString secret should be placed. If + // omitted, the secret will not be retrieved from Azure. + PrimaryReadOnlyConnectionString *genruntime.SecretDestination `json:"primaryReadOnlyConnectionString,omitempty"` + + // PrimaryReadOnlyKey: indicates where the PrimaryReadOnlyKey secret should be placed. If omitted, the secret will not be + // retrieved from Azure. + PrimaryReadOnlyKey *genruntime.SecretDestination `json:"primaryReadOnlyKey,omitempty"` + + // PrimaryReadOnlyKeyID: indicates where the PrimaryReadOnlyKeyID secret should be placed. If omitted, the secret will not + // be retrieved from Azure. + PrimaryReadOnlyKeyID *genruntime.SecretDestination `json:"primaryReadOnlyKeyID,omitempty"` + + // SecondaryConnectionString: indicates where the SecondaryConnectionString secret should be placed. If omitted, the secret + // will not be retrieved from Azure. + SecondaryConnectionString *genruntime.SecretDestination `json:"secondaryConnectionString,omitempty"` + + // SecondaryKey: indicates where the SecondaryKey secret should be placed. If omitted, the secret will not be retrieved + // from Azure. + SecondaryKey *genruntime.SecretDestination `json:"secondaryKey,omitempty"` + + // SecondaryKeyID: indicates where the SecondaryKeyID secret should be placed. If omitted, the secret will not be retrieved + // from Azure. + SecondaryKeyID *genruntime.SecretDestination `json:"secondaryKeyID,omitempty"` + + // SecondaryReadOnlyConnectionString: indicates where the SecondaryReadOnlyConnectionString secret should be placed. If + // omitted, the secret will not be retrieved from Azure. + SecondaryReadOnlyConnectionString *genruntime.SecretDestination `json:"secondaryReadOnlyConnectionString,omitempty"` + + // SecondaryReadOnlyKey: indicates where the SecondaryReadOnlyKey secret should be placed. If omitted, the secret will not + // be retrieved from Azure. + SecondaryReadOnlyKey *genruntime.SecretDestination `json:"secondaryReadOnlyKey,omitempty"` + + // SecondaryReadOnlyKeyID: indicates where the SecondaryReadOnlyKeyID secret should be placed. If omitted, the secret will + // not be retrieved from Azure. + SecondaryReadOnlyKeyID *genruntime.SecretDestination `json:"secondaryReadOnlyKeyID,omitempty"` +} + +// AssignProperties_From_ConfigurationStoreOperatorSecrets populates our ConfigurationStoreOperatorSecrets from the provided source ConfigurationStoreOperatorSecrets +func (secrets *ConfigurationStoreOperatorSecrets) AssignProperties_From_ConfigurationStoreOperatorSecrets(source *storage.ConfigurationStoreOperatorSecrets) error { + + // PrimaryConnectionString + if source.PrimaryConnectionString != nil { + primaryConnectionString := source.PrimaryConnectionString.Copy() + secrets.PrimaryConnectionString = &primaryConnectionString + } else { + secrets.PrimaryConnectionString = nil + } + + // PrimaryKey + if source.PrimaryKey != nil { + primaryKey := source.PrimaryKey.Copy() + secrets.PrimaryKey = &primaryKey + } else { + secrets.PrimaryKey = nil + } + + // PrimaryKeyID + if source.PrimaryKeyID != nil { + primaryKeyID := source.PrimaryKeyID.Copy() + secrets.PrimaryKeyID = &primaryKeyID + } else { + secrets.PrimaryKeyID = nil + } + + // PrimaryReadOnlyConnectionString + if source.PrimaryReadOnlyConnectionString != nil { + primaryReadOnlyConnectionString := source.PrimaryReadOnlyConnectionString.Copy() + secrets.PrimaryReadOnlyConnectionString = &primaryReadOnlyConnectionString + } else { + secrets.PrimaryReadOnlyConnectionString = nil + } + + // PrimaryReadOnlyKey + if source.PrimaryReadOnlyKey != nil { + primaryReadOnlyKey := source.PrimaryReadOnlyKey.Copy() + secrets.PrimaryReadOnlyKey = &primaryReadOnlyKey + } else { + secrets.PrimaryReadOnlyKey = nil + } + + // PrimaryReadOnlyKeyID + if source.PrimaryReadOnlyKeyID != nil { + primaryReadOnlyKeyID := source.PrimaryReadOnlyKeyID.Copy() + secrets.PrimaryReadOnlyKeyID = &primaryReadOnlyKeyID + } else { + secrets.PrimaryReadOnlyKeyID = nil + } + + // SecondaryConnectionString + if source.SecondaryConnectionString != nil { + secondaryConnectionString := source.SecondaryConnectionString.Copy() + secrets.SecondaryConnectionString = &secondaryConnectionString + } else { + secrets.SecondaryConnectionString = nil + } + + // SecondaryKey + if source.SecondaryKey != nil { + secondaryKey := source.SecondaryKey.Copy() + secrets.SecondaryKey = &secondaryKey + } else { + secrets.SecondaryKey = nil + } + + // SecondaryKeyID + if source.SecondaryKeyID != nil { + secondaryKeyID := source.SecondaryKeyID.Copy() + secrets.SecondaryKeyID = &secondaryKeyID + } else { + secrets.SecondaryKeyID = nil + } + + // SecondaryReadOnlyConnectionString + if source.SecondaryReadOnlyConnectionString != nil { + secondaryReadOnlyConnectionString := source.SecondaryReadOnlyConnectionString.Copy() + secrets.SecondaryReadOnlyConnectionString = &secondaryReadOnlyConnectionString + } else { + secrets.SecondaryReadOnlyConnectionString = nil + } + + // SecondaryReadOnlyKey + if source.SecondaryReadOnlyKey != nil { + secondaryReadOnlyKey := source.SecondaryReadOnlyKey.Copy() + secrets.SecondaryReadOnlyKey = &secondaryReadOnlyKey + } else { + secrets.SecondaryReadOnlyKey = nil + } + + // SecondaryReadOnlyKeyID + if source.SecondaryReadOnlyKeyID != nil { + secondaryReadOnlyKeyID := source.SecondaryReadOnlyKeyID.Copy() + secrets.SecondaryReadOnlyKeyID = &secondaryReadOnlyKeyID + } else { + secrets.SecondaryReadOnlyKeyID = nil + } + + // No error + return nil +} + +// AssignProperties_To_ConfigurationStoreOperatorSecrets populates the provided destination ConfigurationStoreOperatorSecrets from our ConfigurationStoreOperatorSecrets +func (secrets *ConfigurationStoreOperatorSecrets) AssignProperties_To_ConfigurationStoreOperatorSecrets(destination *storage.ConfigurationStoreOperatorSecrets) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // PrimaryConnectionString + if secrets.PrimaryConnectionString != nil { + primaryConnectionString := secrets.PrimaryConnectionString.Copy() + destination.PrimaryConnectionString = &primaryConnectionString + } else { + destination.PrimaryConnectionString = nil + } + + // PrimaryKey + if secrets.PrimaryKey != nil { + primaryKey := secrets.PrimaryKey.Copy() + destination.PrimaryKey = &primaryKey + } else { + destination.PrimaryKey = nil + } + + // PrimaryKeyID + if secrets.PrimaryKeyID != nil { + primaryKeyID := secrets.PrimaryKeyID.Copy() + destination.PrimaryKeyID = &primaryKeyID + } else { + destination.PrimaryKeyID = nil + } + + // PrimaryReadOnlyConnectionString + if secrets.PrimaryReadOnlyConnectionString != nil { + primaryReadOnlyConnectionString := secrets.PrimaryReadOnlyConnectionString.Copy() + destination.PrimaryReadOnlyConnectionString = &primaryReadOnlyConnectionString + } else { + destination.PrimaryReadOnlyConnectionString = nil + } + + // PrimaryReadOnlyKey + if secrets.PrimaryReadOnlyKey != nil { + primaryReadOnlyKey := secrets.PrimaryReadOnlyKey.Copy() + destination.PrimaryReadOnlyKey = &primaryReadOnlyKey + } else { + destination.PrimaryReadOnlyKey = nil + } + + // PrimaryReadOnlyKeyID + if secrets.PrimaryReadOnlyKeyID != nil { + primaryReadOnlyKeyID := secrets.PrimaryReadOnlyKeyID.Copy() + destination.PrimaryReadOnlyKeyID = &primaryReadOnlyKeyID + } else { + destination.PrimaryReadOnlyKeyID = nil + } + + // SecondaryConnectionString + if secrets.SecondaryConnectionString != nil { + secondaryConnectionString := secrets.SecondaryConnectionString.Copy() + destination.SecondaryConnectionString = &secondaryConnectionString + } else { + destination.SecondaryConnectionString = nil + } + + // SecondaryKey + if secrets.SecondaryKey != nil { + secondaryKey := secrets.SecondaryKey.Copy() + destination.SecondaryKey = &secondaryKey + } else { + destination.SecondaryKey = nil + } + + // SecondaryKeyID + if secrets.SecondaryKeyID != nil { + secondaryKeyID := secrets.SecondaryKeyID.Copy() + destination.SecondaryKeyID = &secondaryKeyID + } else { + destination.SecondaryKeyID = nil + } + + // SecondaryReadOnlyConnectionString + if secrets.SecondaryReadOnlyConnectionString != nil { + secondaryReadOnlyConnectionString := secrets.SecondaryReadOnlyConnectionString.Copy() + destination.SecondaryReadOnlyConnectionString = &secondaryReadOnlyConnectionString + } else { + destination.SecondaryReadOnlyConnectionString = nil + } + + // SecondaryReadOnlyKey + if secrets.SecondaryReadOnlyKey != nil { + secondaryReadOnlyKey := secrets.SecondaryReadOnlyKey.Copy() + destination.SecondaryReadOnlyKey = &secondaryReadOnlyKey + } else { + destination.SecondaryReadOnlyKey = nil + } + + // SecondaryReadOnlyKeyID + if secrets.SecondaryReadOnlyKeyID != nil { + secondaryReadOnlyKeyID := secrets.SecondaryReadOnlyKeyID.Copy() + destination.SecondaryReadOnlyKeyID = &secondaryReadOnlyKeyID + } else { + destination.SecondaryReadOnlyKeyID = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"Local","Pass-through"} +type DataPlaneProxyProperties_AuthenticationMode string + +const ( + DataPlaneProxyProperties_AuthenticationMode_Local = DataPlaneProxyProperties_AuthenticationMode("Local") + DataPlaneProxyProperties_AuthenticationMode_PassThrough = DataPlaneProxyProperties_AuthenticationMode("Pass-through") +) + +// Mapping from string to DataPlaneProxyProperties_AuthenticationMode +var dataPlaneProxyProperties_AuthenticationMode_Values = map[string]DataPlaneProxyProperties_AuthenticationMode{ + "local": DataPlaneProxyProperties_AuthenticationMode_Local, + "pass-through": DataPlaneProxyProperties_AuthenticationMode_PassThrough, +} + +type DataPlaneProxyProperties_AuthenticationMode_STATUS string + +const ( + DataPlaneProxyProperties_AuthenticationMode_STATUS_Local = DataPlaneProxyProperties_AuthenticationMode_STATUS("Local") + DataPlaneProxyProperties_AuthenticationMode_STATUS_PassThrough = DataPlaneProxyProperties_AuthenticationMode_STATUS("Pass-through") +) + +// Mapping from string to DataPlaneProxyProperties_AuthenticationMode_STATUS +var dataPlaneProxyProperties_AuthenticationMode_STATUS_Values = map[string]DataPlaneProxyProperties_AuthenticationMode_STATUS{ + "local": DataPlaneProxyProperties_AuthenticationMode_STATUS_Local, + "pass-through": DataPlaneProxyProperties_AuthenticationMode_STATUS_PassThrough, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type DataPlaneProxyProperties_PrivateLinkDelegation string + +const ( + DataPlaneProxyProperties_PrivateLinkDelegation_Disabled = DataPlaneProxyProperties_PrivateLinkDelegation("Disabled") + DataPlaneProxyProperties_PrivateLinkDelegation_Enabled = DataPlaneProxyProperties_PrivateLinkDelegation("Enabled") +) + +// Mapping from string to DataPlaneProxyProperties_PrivateLinkDelegation +var dataPlaneProxyProperties_PrivateLinkDelegation_Values = map[string]DataPlaneProxyProperties_PrivateLinkDelegation{ + "disabled": DataPlaneProxyProperties_PrivateLinkDelegation_Disabled, + "enabled": DataPlaneProxyProperties_PrivateLinkDelegation_Enabled, +} + +type DataPlaneProxyProperties_PrivateLinkDelegation_STATUS string + +const ( + DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Disabled = DataPlaneProxyProperties_PrivateLinkDelegation_STATUS("Disabled") + DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Enabled = DataPlaneProxyProperties_PrivateLinkDelegation_STATUS("Enabled") +) + +// Mapping from string to DataPlaneProxyProperties_PrivateLinkDelegation_STATUS +var dataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Values = map[string]DataPlaneProxyProperties_PrivateLinkDelegation_STATUS{ + "disabled": DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Disabled, + "enabled": DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Enabled, +} + +// Settings concerning key vault encryption for a configuration store. +type KeyVaultProperties struct { + // IdentityClientId: The client id of the identity which will be used to access key vault. + IdentityClientId *string `json:"identityClientId,omitempty"` + + // KeyIdentifier: The URI of the key vault key used to encrypt data. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` +} + +var _ genruntime.ARMTransformer = &KeyVaultProperties{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (properties *KeyVaultProperties) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if properties == nil { + return nil, nil + } + result := &arm.KeyVaultProperties{} + + // Set property "IdentityClientId": + if properties.IdentityClientId != nil { + identityClientId := *properties.IdentityClientId + result.IdentityClientId = &identityClientId + } + + // Set property "KeyIdentifier": + if properties.KeyIdentifier != nil { + keyIdentifier := *properties.KeyIdentifier + result.KeyIdentifier = &keyIdentifier + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *KeyVaultProperties) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.KeyVaultProperties{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *KeyVaultProperties) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.KeyVaultProperties) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.KeyVaultProperties, got %T", armInput) + } + + // Set property "IdentityClientId": + if typedInput.IdentityClientId != nil { + identityClientId := *typedInput.IdentityClientId + properties.IdentityClientId = &identityClientId + } + + // Set property "KeyIdentifier": + if typedInput.KeyIdentifier != nil { + keyIdentifier := *typedInput.KeyIdentifier + properties.KeyIdentifier = &keyIdentifier + } + + // No error + return nil +} + +// AssignProperties_From_KeyVaultProperties populates our KeyVaultProperties from the provided source KeyVaultProperties +func (properties *KeyVaultProperties) AssignProperties_From_KeyVaultProperties(source *storage.KeyVaultProperties) error { + + // IdentityClientId + properties.IdentityClientId = genruntime.ClonePointerToString(source.IdentityClientId) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // No error + return nil +} + +// AssignProperties_To_KeyVaultProperties populates the provided destination KeyVaultProperties from our KeyVaultProperties +func (properties *KeyVaultProperties) AssignProperties_To_KeyVaultProperties(destination *storage.KeyVaultProperties) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // IdentityClientId + destination.IdentityClientId = genruntime.ClonePointerToString(properties.IdentityClientId) + + // KeyIdentifier + destination.KeyIdentifier = genruntime.ClonePointerToString(properties.KeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_KeyVaultProperties_STATUS populates our KeyVaultProperties from the provided source KeyVaultProperties_STATUS +func (properties *KeyVaultProperties) Initialize_From_KeyVaultProperties_STATUS(source *KeyVaultProperties_STATUS) error { + + // IdentityClientId + properties.IdentityClientId = genruntime.ClonePointerToString(source.IdentityClientId) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // No error + return nil +} + +// Settings concerning key vault encryption for a configuration store. +type KeyVaultProperties_STATUS struct { + // IdentityClientId: The client id of the identity which will be used to access key vault. + IdentityClientId *string `json:"identityClientId,omitempty"` + + // KeyIdentifier: The URI of the key vault key used to encrypt data. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` +} + +var _ genruntime.FromARMConverter = &KeyVaultProperties_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *KeyVaultProperties_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.KeyVaultProperties_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *KeyVaultProperties_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.KeyVaultProperties_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.KeyVaultProperties_STATUS, got %T", armInput) + } + + // Set property "IdentityClientId": + if typedInput.IdentityClientId != nil { + identityClientId := *typedInput.IdentityClientId + properties.IdentityClientId = &identityClientId + } + + // Set property "KeyIdentifier": + if typedInput.KeyIdentifier != nil { + keyIdentifier := *typedInput.KeyIdentifier + properties.KeyIdentifier = &keyIdentifier + } + + // No error + return nil +} + +// AssignProperties_From_KeyVaultProperties_STATUS populates our KeyVaultProperties_STATUS from the provided source KeyVaultProperties_STATUS +func (properties *KeyVaultProperties_STATUS) AssignProperties_From_KeyVaultProperties_STATUS(source *storage.KeyVaultProperties_STATUS) error { + + // IdentityClientId + properties.IdentityClientId = genruntime.ClonePointerToString(source.IdentityClientId) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // No error + return nil +} + +// AssignProperties_To_KeyVaultProperties_STATUS populates the provided destination KeyVaultProperties_STATUS from our KeyVaultProperties_STATUS +func (properties *KeyVaultProperties_STATUS) AssignProperties_To_KeyVaultProperties_STATUS(destination *storage.KeyVaultProperties_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // IdentityClientId + destination.IdentityClientId = genruntime.ClonePointerToString(properties.IdentityClientId) + + // KeyIdentifier + destination.KeyIdentifier = genruntime.ClonePointerToString(properties.KeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Private endpoint which a connection belongs to. +type PrivateEndpoint_STATUS struct { + // Id: The resource Id for private endpoint + Id *string `json:"id,omitempty"` +} + +var _ genruntime.FromARMConverter = &PrivateEndpoint_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (endpoint *PrivateEndpoint_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpoint_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (endpoint *PrivateEndpoint_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpoint_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpoint_STATUS, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + endpoint.Id = &id + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpoint_STATUS populates our PrivateEndpoint_STATUS from the provided source PrivateEndpoint_STATUS +func (endpoint *PrivateEndpoint_STATUS) AssignProperties_From_PrivateEndpoint_STATUS(source *storage.PrivateEndpoint_STATUS) error { + + // Id + endpoint.Id = genruntime.ClonePointerToString(source.Id) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpoint_STATUS populates the provided destination PrivateEndpoint_STATUS from our PrivateEndpoint_STATUS +func (endpoint *PrivateEndpoint_STATUS) AssignProperties_To_PrivateEndpoint_STATUS(destination *storage.PrivateEndpoint_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(endpoint.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type PrivateEndpointConnectionProperties_ProvisioningState_STATUS string + +const ( + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Canceled = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Canceled") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Creating = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Creating") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Deleting = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Deleting") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Failed = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Failed") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Succeeded = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Succeeded") + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Updating = PrivateEndpointConnectionProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to PrivateEndpointConnectionProperties_ProvisioningState_STATUS +var privateEndpointConnectionProperties_ProvisioningState_STATUS_Values = map[string]PrivateEndpointConnectionProperties_ProvisioningState_STATUS{ + "canceled": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Canceled, + "creating": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Creating, + "deleting": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Deleting, + "failed": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Failed, + "succeeded": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Succeeded, + "updating": PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Updating, +} + +// The state of a private link service connection. +type PrivateLinkServiceConnectionState_STATUS struct { + // ActionsRequired: Any action that is required beyond basic workflow (approve/ reject/ disconnect) + ActionsRequired *PrivateLinkServiceConnectionState_ActionsRequired_STATUS `json:"actionsRequired,omitempty"` + + // Description: The private link service connection description. + Description *string `json:"description,omitempty"` + + // Status: The private link service connection status. + Status *PrivateLinkServiceConnectionState_Status_STATUS `json:"status,omitempty"` +} + +var _ genruntime.FromARMConverter = &PrivateLinkServiceConnectionState_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (state *PrivateLinkServiceConnectionState_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateLinkServiceConnectionState_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (state *PrivateLinkServiceConnectionState_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateLinkServiceConnectionState_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateLinkServiceConnectionState_STATUS, got %T", armInput) + } + + // Set property "ActionsRequired": + if typedInput.ActionsRequired != nil { + var temp string + temp = string(*typedInput.ActionsRequired) + actionsRequired := PrivateLinkServiceConnectionState_ActionsRequired_STATUS(temp) + state.ActionsRequired = &actionsRequired + } + + // Set property "Description": + if typedInput.Description != nil { + description := *typedInput.Description + state.Description = &description + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := PrivateLinkServiceConnectionState_Status_STATUS(temp) + state.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_PrivateLinkServiceConnectionState_STATUS populates our PrivateLinkServiceConnectionState_STATUS from the provided source PrivateLinkServiceConnectionState_STATUS +func (state *PrivateLinkServiceConnectionState_STATUS) AssignProperties_From_PrivateLinkServiceConnectionState_STATUS(source *storage.PrivateLinkServiceConnectionState_STATUS) error { + + // ActionsRequired + if source.ActionsRequired != nil { + actionsRequired := *source.ActionsRequired + actionsRequiredTemp := genruntime.ToEnum(actionsRequired, privateLinkServiceConnectionState_ActionsRequired_STATUS_Values) + state.ActionsRequired = &actionsRequiredTemp + } else { + state.ActionsRequired = nil + } + + // Description + state.Description = genruntime.ClonePointerToString(source.Description) + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, privateLinkServiceConnectionState_Status_STATUS_Values) + state.Status = &statusTemp + } else { + state.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_PrivateLinkServiceConnectionState_STATUS populates the provided destination PrivateLinkServiceConnectionState_STATUS from our PrivateLinkServiceConnectionState_STATUS +func (state *PrivateLinkServiceConnectionState_STATUS) AssignProperties_To_PrivateLinkServiceConnectionState_STATUS(destination *storage.PrivateLinkServiceConnectionState_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ActionsRequired + if state.ActionsRequired != nil { + actionsRequired := string(*state.ActionsRequired) + destination.ActionsRequired = &actionsRequired + } else { + destination.ActionsRequired = nil + } + + // Description + destination.Description = genruntime.ClonePointerToString(state.Description) + + // Status + if state.Status != nil { + status := string(*state.Status) + destination.Status = &status + } else { + destination.Status = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"None","SystemAssigned","SystemAssigned, UserAssigned","UserAssigned"} +type ResourceIdentity_Type string + +const ( + ResourceIdentity_Type_None = ResourceIdentity_Type("None") + ResourceIdentity_Type_SystemAssigned = ResourceIdentity_Type("SystemAssigned") + ResourceIdentity_Type_SystemAssignedUserAssigned = ResourceIdentity_Type("SystemAssigned, UserAssigned") + ResourceIdentity_Type_UserAssigned = ResourceIdentity_Type("UserAssigned") +) + +// Mapping from string to ResourceIdentity_Type +var resourceIdentity_Type_Values = map[string]ResourceIdentity_Type{ + "none": ResourceIdentity_Type_None, + "systemassigned": ResourceIdentity_Type_SystemAssigned, + "systemassigned, userassigned": ResourceIdentity_Type_SystemAssignedUserAssigned, + "userassigned": ResourceIdentity_Type_UserAssigned, +} + +type ResourceIdentity_Type_STATUS string + +const ( + ResourceIdentity_Type_STATUS_None = ResourceIdentity_Type_STATUS("None") + ResourceIdentity_Type_STATUS_SystemAssigned = ResourceIdentity_Type_STATUS("SystemAssigned") + ResourceIdentity_Type_STATUS_SystemAssignedUserAssigned = ResourceIdentity_Type_STATUS("SystemAssigned, UserAssigned") + ResourceIdentity_Type_STATUS_UserAssigned = ResourceIdentity_Type_STATUS("UserAssigned") +) + +// Mapping from string to ResourceIdentity_Type_STATUS +var resourceIdentity_Type_STATUS_Values = map[string]ResourceIdentity_Type_STATUS{ + "none": ResourceIdentity_Type_STATUS_None, + "systemassigned": ResourceIdentity_Type_STATUS_SystemAssigned, + "systemassigned, userassigned": ResourceIdentity_Type_STATUS_SystemAssignedUserAssigned, + "userassigned": ResourceIdentity_Type_STATUS_UserAssigned, +} + +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 +} + +// A resource identity that is managed by the user of the service. +type UserIdentity_STATUS struct { + // ClientId: The client ID of the user-assigned identity. + ClientId *string `json:"clientId,omitempty"` + + // PrincipalId: The principal ID of the user-assigned identity. + PrincipalId *string `json:"principalId,omitempty"` +} + +var _ genruntime.FromARMConverter = &UserIdentity_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (identity *UserIdentity_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UserIdentity_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (identity *UserIdentity_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UserIdentity_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UserIdentity_STATUS, got %T", armInput) + } + + // Set property "ClientId": + if typedInput.ClientId != nil { + clientId := *typedInput.ClientId + identity.ClientId = &clientId + } + + // Set property "PrincipalId": + if typedInput.PrincipalId != nil { + principalId := *typedInput.PrincipalId + identity.PrincipalId = &principalId + } + + // No error + return nil +} + +// AssignProperties_From_UserIdentity_STATUS populates our UserIdentity_STATUS from the provided source UserIdentity_STATUS +func (identity *UserIdentity_STATUS) AssignProperties_From_UserIdentity_STATUS(source *storage.UserIdentity_STATUS) error { + + // ClientId + identity.ClientId = genruntime.ClonePointerToString(source.ClientId) + + // PrincipalId + identity.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // No error + return nil +} + +// AssignProperties_To_UserIdentity_STATUS populates the provided destination UserIdentity_STATUS from our UserIdentity_STATUS +func (identity *UserIdentity_STATUS) AssignProperties_To_UserIdentity_STATUS(destination *storage.UserIdentity_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ClientId + destination.ClientId = genruntime.ClonePointerToString(identity.ClientId) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(identity.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type PrivateLinkServiceConnectionState_ActionsRequired_STATUS string + +const ( + PrivateLinkServiceConnectionState_ActionsRequired_STATUS_None = PrivateLinkServiceConnectionState_ActionsRequired_STATUS("None") + PrivateLinkServiceConnectionState_ActionsRequired_STATUS_Recreate = PrivateLinkServiceConnectionState_ActionsRequired_STATUS("Recreate") +) + +// Mapping from string to PrivateLinkServiceConnectionState_ActionsRequired_STATUS +var privateLinkServiceConnectionState_ActionsRequired_STATUS_Values = map[string]PrivateLinkServiceConnectionState_ActionsRequired_STATUS{ + "none": PrivateLinkServiceConnectionState_ActionsRequired_STATUS_None, + "recreate": PrivateLinkServiceConnectionState_ActionsRequired_STATUS_Recreate, +} + +type PrivateLinkServiceConnectionState_Status_STATUS string + +const ( + PrivateLinkServiceConnectionState_Status_STATUS_Approved = PrivateLinkServiceConnectionState_Status_STATUS("Approved") + PrivateLinkServiceConnectionState_Status_STATUS_Disconnected = PrivateLinkServiceConnectionState_Status_STATUS("Disconnected") + PrivateLinkServiceConnectionState_Status_STATUS_Pending = PrivateLinkServiceConnectionState_Status_STATUS("Pending") + PrivateLinkServiceConnectionState_Status_STATUS_Rejected = PrivateLinkServiceConnectionState_Status_STATUS("Rejected") +) + +// Mapping from string to PrivateLinkServiceConnectionState_Status_STATUS +var privateLinkServiceConnectionState_Status_STATUS_Values = map[string]PrivateLinkServiceConnectionState_Status_STATUS{ + "approved": PrivateLinkServiceConnectionState_Status_STATUS_Approved, + "disconnected": PrivateLinkServiceConnectionState_Status_STATUS_Disconnected, + "pending": PrivateLinkServiceConnectionState_Status_STATUS_Pending, + "rejected": PrivateLinkServiceConnectionState_Status_STATUS_Rejected, +} + +func init() { + SchemeBuilder.Register(&ConfigurationStore{}, &ConfigurationStoreList{}) +} diff --git a/v2/api/appconfiguration/v20240601/configuration_store_types_gen_test.go b/v2/api/appconfiguration/v20240601/configuration_store_types_gen_test.go new file mode 100644 index 00000000000..e23c01ec03e --- /dev/null +++ b/v2/api/appconfiguration/v20240601/configuration_store_types_gen_test.go @@ -0,0 +1,2364 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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_ConfigurationStore_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 ConfigurationStore to hub returns original", + prop.ForAll(RunResourceConversionTestForConfigurationStore, ConfigurationStoreGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForConfigurationStore tests if a specific instance of ConfigurationStore round trips to the hub storage version and back losslessly +func RunResourceConversionTestForConfigurationStore(subject ConfigurationStore) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.ConfigurationStore + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual ConfigurationStore + 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_ConfigurationStore_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStore to ConfigurationStore via AssignProperties_To_ConfigurationStore & AssignProperties_From_ConfigurationStore returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStore, ConfigurationStoreGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStore tests if a specific instance of ConfigurationStore can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStore(subject ConfigurationStore) 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.ConfigurationStore + err := copied.AssignProperties_To_ConfigurationStore(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStore + err = actual.AssignProperties_From_ConfigurationStore(&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_ConfigurationStore_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 ConfigurationStore via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore, ConfigurationStoreGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore runs a test to see if a specific instance of ConfigurationStore round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore(subject ConfigurationStore) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStore instances for property testing - lazily instantiated by ConfigurationStoreGenerator() +var configurationStoreGenerator gopter.Gen + +// ConfigurationStoreGenerator returns a generator of ConfigurationStore instances for property testing. +func ConfigurationStoreGenerator() gopter.Gen { + if configurationStoreGenerator != nil { + return configurationStoreGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForConfigurationStore(generators) + configurationStoreGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore{}), generators) + + return configurationStoreGenerator +} + +// AddRelatedPropertyGeneratorsForConfigurationStore is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore(gens map[string]gopter.Gen) { + gens["Spec"] = ConfigurationStore_SpecGenerator() + gens["Status"] = ConfigurationStore_STATUSGenerator() +} + +func Test_ConfigurationStoreOperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStoreOperatorSecrets to ConfigurationStoreOperatorSecrets via AssignProperties_To_ConfigurationStoreOperatorSecrets & AssignProperties_From_ConfigurationStoreOperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets, ConfigurationStoreOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets tests if a specific instance of ConfigurationStoreOperatorSecrets can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStoreOperatorSecrets(subject ConfigurationStoreOperatorSecrets) 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.ConfigurationStoreOperatorSecrets + err := copied.AssignProperties_To_ConfigurationStoreOperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStoreOperatorSecrets + err = actual.AssignProperties_From_ConfigurationStoreOperatorSecrets(&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_ConfigurationStoreOperatorSecrets_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 ConfigurationStoreOperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStoreOperatorSecrets, ConfigurationStoreOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStoreOperatorSecrets runs a test to see if a specific instance of ConfigurationStoreOperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStoreOperatorSecrets(subject ConfigurationStoreOperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStoreOperatorSecrets + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStoreOperatorSecrets instances for property testing - lazily instantiated by +// ConfigurationStoreOperatorSecretsGenerator() +var configurationStoreOperatorSecretsGenerator gopter.Gen + +// ConfigurationStoreOperatorSecretsGenerator returns a generator of ConfigurationStoreOperatorSecrets instances for property testing. +func ConfigurationStoreOperatorSecretsGenerator() gopter.Gen { + if configurationStoreOperatorSecretsGenerator != nil { + return configurationStoreOperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + configurationStoreOperatorSecretsGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreOperatorSecrets{}), generators) + + return configurationStoreOperatorSecretsGenerator +} + +func Test_ConfigurationStoreOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStoreOperatorSpec to ConfigurationStoreOperatorSpec via AssignProperties_To_ConfigurationStoreOperatorSpec & AssignProperties_From_ConfigurationStoreOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStoreOperatorSpec, ConfigurationStoreOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStoreOperatorSpec tests if a specific instance of ConfigurationStoreOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStoreOperatorSpec(subject ConfigurationStoreOperatorSpec) 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.ConfigurationStoreOperatorSpec + err := copied.AssignProperties_To_ConfigurationStoreOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStoreOperatorSpec + err = actual.AssignProperties_From_ConfigurationStoreOperatorSpec(&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_ConfigurationStoreOperatorSpec_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 ConfigurationStoreOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStoreOperatorSpec, ConfigurationStoreOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStoreOperatorSpec runs a test to see if a specific instance of ConfigurationStoreOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStoreOperatorSpec(subject ConfigurationStoreOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStoreOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStoreOperatorSpec instances for property testing - lazily instantiated by +// ConfigurationStoreOperatorSpecGenerator() +var configurationStoreOperatorSpecGenerator gopter.Gen + +// ConfigurationStoreOperatorSpecGenerator returns a generator of ConfigurationStoreOperatorSpec instances for property testing. +func ConfigurationStoreOperatorSpecGenerator() gopter.Gen { + if configurationStoreOperatorSpecGenerator != nil { + return configurationStoreOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec(generators) + configurationStoreOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreOperatorSpec{}), generators) + + return configurationStoreOperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec(gens map[string]gopter.Gen) { + gens["Secrets"] = gen.PtrOf(ConfigurationStoreOperatorSecretsGenerator()) +} + +func Test_ConfigurationStore_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStore_STATUS to ConfigurationStore_STATUS via AssignProperties_To_ConfigurationStore_STATUS & AssignProperties_From_ConfigurationStore_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStore_STATUS, ConfigurationStore_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStore_STATUS tests if a specific instance of ConfigurationStore_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStore_STATUS(subject ConfigurationStore_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.ConfigurationStore_STATUS + err := copied.AssignProperties_To_ConfigurationStore_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStore_STATUS + err = actual.AssignProperties_From_ConfigurationStore_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_ConfigurationStore_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 ConfigurationStore_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore_STATUS, ConfigurationStore_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore_STATUS runs a test to see if a specific instance of ConfigurationStore_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore_STATUS(subject ConfigurationStore_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore_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 ConfigurationStore_STATUS instances for property testing - lazily instantiated by +// ConfigurationStore_STATUSGenerator() +var configurationStore_STATUSGenerator gopter.Gen + +// ConfigurationStore_STATUSGenerator returns a generator of ConfigurationStore_STATUS instances for property testing. +// We first initialize configurationStore_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 ConfigurationStore_STATUSGenerator() gopter.Gen { + if configurationStore_STATUSGenerator != nil { + return configurationStore_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(generators) + configurationStore_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(generators) + AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(generators) + configurationStore_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_STATUS{}), generators) + + return configurationStore_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStore_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(gens map[string]gopter.Gen) { + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_CreateMode_STATUS_Default, ConfigurationStoreProperties_CreateMode_STATUS_Recover)) + gens["CreationDate"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultKeyValueRevisionRetentionPeriodInSeconds"] = gen.PtrOf(gen.Int()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["EnablePurgeProtection"] = gen.PtrOf(gen.Bool()) + gens["Endpoint"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ConfigurationStoreProperties_ProvisioningState_STATUS_Canceled, + ConfigurationStoreProperties_ProvisioningState_STATUS_Creating, + ConfigurationStoreProperties_ProvisioningState_STATUS_Deleting, + ConfigurationStoreProperties_ProvisioningState_STATUS_Failed, + ConfigurationStoreProperties_ProvisioningState_STATUS_Succeeded, + ConfigurationStoreProperties_ProvisioningState_STATUS_Updating)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Disabled, ConfigurationStoreProperties_PublicNetworkAccess_STATUS_Enabled)) + gens["SoftDeleteRetentionInDays"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStore_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(gens map[string]gopter.Gen) { + gens["DataPlaneProxy"] = gen.PtrOf(DataPlaneProxyProperties_STATUSGenerator()) + gens["Encryption"] = gen.PtrOf(EncryptionProperties_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(ResourceIdentity_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnectionReference_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_ConfigurationStore_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ConfigurationStore_Spec to ConfigurationStore_Spec via AssignProperties_To_ConfigurationStore_Spec & AssignProperties_From_ConfigurationStore_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForConfigurationStore_Spec, ConfigurationStore_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForConfigurationStore_Spec tests if a specific instance of ConfigurationStore_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForConfigurationStore_Spec(subject ConfigurationStore_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.ConfigurationStore_Spec + err := copied.AssignProperties_To_ConfigurationStore_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ConfigurationStore_Spec + err = actual.AssignProperties_From_ConfigurationStore_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_ConfigurationStore_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 ConfigurationStore_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore_Spec, ConfigurationStore_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore_Spec runs a test to see if a specific instance of ConfigurationStore_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore_Spec(subject ConfigurationStore_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore_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 ConfigurationStore_Spec instances for property testing - lazily instantiated by +// ConfigurationStore_SpecGenerator() +var configurationStore_SpecGenerator gopter.Gen + +// ConfigurationStore_SpecGenerator returns a generator of ConfigurationStore_Spec instances for property testing. +// We first initialize configurationStore_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 ConfigurationStore_SpecGenerator() gopter.Gen { + if configurationStore_SpecGenerator != nil { + return configurationStore_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_Spec(generators) + configurationStore_SpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_Spec(generators) + AddRelatedPropertyGeneratorsForConfigurationStore_Spec(generators) + configurationStore_SpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_Spec{}), generators) + + return configurationStore_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStore_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["CreateMode"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_CreateMode_Default, ConfigurationStoreProperties_CreateMode_Recover)) + gens["DefaultKeyValueRevisionRetentionPeriodInSeconds"] = gen.PtrOf(gen.Int()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["EnablePurgeProtection"] = gen.PtrOf(gen.Bool()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(ConfigurationStoreProperties_PublicNetworkAccess_Disabled, ConfigurationStoreProperties_PublicNetworkAccess_Enabled)) + gens["SoftDeleteRetentionInDays"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStore_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopter.Gen) { + gens["DataPlaneProxy"] = gen.PtrOf(DataPlaneProxyPropertiesGenerator()) + gens["Encryption"] = gen.PtrOf(EncryptionPropertiesGenerator()) + gens["Identity"] = gen.PtrOf(ResourceIdentityGenerator()) + gens["OperatorSpec"] = gen.PtrOf(ConfigurationStoreOperatorSpecGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_DataPlaneProxyProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataPlaneProxyProperties to DataPlaneProxyProperties via AssignProperties_To_DataPlaneProxyProperties & AssignProperties_From_DataPlaneProxyProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForDataPlaneProxyProperties, DataPlaneProxyPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataPlaneProxyProperties tests if a specific instance of DataPlaneProxyProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForDataPlaneProxyProperties(subject DataPlaneProxyProperties) 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.DataPlaneProxyProperties + err := copied.AssignProperties_To_DataPlaneProxyProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataPlaneProxyProperties + err = actual.AssignProperties_From_DataPlaneProxyProperties(&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_DataPlaneProxyProperties_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 DataPlaneProxyProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneProxyProperties, DataPlaneProxyPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneProxyProperties runs a test to see if a specific instance of DataPlaneProxyProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneProxyProperties(subject DataPlaneProxyProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneProxyProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneProxyProperties instances for property testing - lazily instantiated by +// DataPlaneProxyPropertiesGenerator() +var dataPlaneProxyPropertiesGenerator gopter.Gen + +// DataPlaneProxyPropertiesGenerator returns a generator of DataPlaneProxyProperties instances for property testing. +func DataPlaneProxyPropertiesGenerator() gopter.Gen { + if dataPlaneProxyPropertiesGenerator != nil { + return dataPlaneProxyPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneProxyProperties(generators) + dataPlaneProxyPropertiesGenerator = gen.Struct(reflect.TypeOf(DataPlaneProxyProperties{}), generators) + + return dataPlaneProxyPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneProxyProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneProxyProperties(gens map[string]gopter.Gen) { + gens["AuthenticationMode"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_AuthenticationMode_Local, DataPlaneProxyProperties_AuthenticationMode_PassThrough)) + gens["PrivateLinkDelegation"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_PrivateLinkDelegation_Disabled, DataPlaneProxyProperties_PrivateLinkDelegation_Enabled)) +} + +func Test_DataPlaneProxyProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataPlaneProxyProperties_STATUS to DataPlaneProxyProperties_STATUS via AssignProperties_To_DataPlaneProxyProperties_STATUS & AssignProperties_From_DataPlaneProxyProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForDataPlaneProxyProperties_STATUS, DataPlaneProxyProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataPlaneProxyProperties_STATUS tests if a specific instance of DataPlaneProxyProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForDataPlaneProxyProperties_STATUS(subject DataPlaneProxyProperties_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.DataPlaneProxyProperties_STATUS + err := copied.AssignProperties_To_DataPlaneProxyProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataPlaneProxyProperties_STATUS + err = actual.AssignProperties_From_DataPlaneProxyProperties_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_DataPlaneProxyProperties_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 DataPlaneProxyProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneProxyProperties_STATUS, DataPlaneProxyProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneProxyProperties_STATUS runs a test to see if a specific instance of DataPlaneProxyProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneProxyProperties_STATUS(subject DataPlaneProxyProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneProxyProperties_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 DataPlaneProxyProperties_STATUS instances for property testing - lazily instantiated by +// DataPlaneProxyProperties_STATUSGenerator() +var dataPlaneProxyProperties_STATUSGenerator gopter.Gen + +// DataPlaneProxyProperties_STATUSGenerator returns a generator of DataPlaneProxyProperties_STATUS instances for property testing. +func DataPlaneProxyProperties_STATUSGenerator() gopter.Gen { + if dataPlaneProxyProperties_STATUSGenerator != nil { + return dataPlaneProxyProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS(generators) + dataPlaneProxyProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(DataPlaneProxyProperties_STATUS{}), generators) + + return dataPlaneProxyProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS(gens map[string]gopter.Gen) { + gens["AuthenticationMode"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_AuthenticationMode_STATUS_Local, DataPlaneProxyProperties_AuthenticationMode_STATUS_PassThrough)) + gens["PrivateLinkDelegation"] = gen.PtrOf(gen.OneConstOf(DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Disabled, DataPlaneProxyProperties_PrivateLinkDelegation_STATUS_Enabled)) +} + +func Test_EncryptionProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperties to EncryptionProperties via AssignProperties_To_EncryptionProperties & AssignProperties_From_EncryptionProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperties, EncryptionPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperties tests if a specific instance of EncryptionProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperties(subject EncryptionProperties) 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.EncryptionProperties + err := copied.AssignProperties_To_EncryptionProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperties + err = actual.AssignProperties_From_EncryptionProperties(&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_EncryptionProperties_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 EncryptionProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperties, EncryptionPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperties runs a test to see if a specific instance of EncryptionProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperties(subject EncryptionProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of EncryptionProperties instances for property testing - lazily instantiated by +// EncryptionPropertiesGenerator() +var encryptionPropertiesGenerator gopter.Gen + +// EncryptionPropertiesGenerator returns a generator of EncryptionProperties instances for property testing. +func EncryptionPropertiesGenerator() gopter.Gen { + if encryptionPropertiesGenerator != nil { + return encryptionPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForEncryptionProperties(generators) + encryptionPropertiesGenerator = gen.Struct(reflect.TypeOf(EncryptionProperties{}), generators) + + return encryptionPropertiesGenerator +} + +// AddRelatedPropertyGeneratorsForEncryptionProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperties(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) +} + +func Test_EncryptionProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperties_STATUS to EncryptionProperties_STATUS via AssignProperties_To_EncryptionProperties_STATUS & AssignProperties_From_EncryptionProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperties_STATUS, EncryptionProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperties_STATUS tests if a specific instance of EncryptionProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperties_STATUS(subject EncryptionProperties_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.EncryptionProperties_STATUS + err := copied.AssignProperties_To_EncryptionProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperties_STATUS + err = actual.AssignProperties_From_EncryptionProperties_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_EncryptionProperties_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 EncryptionProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperties_STATUS, EncryptionProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperties_STATUS runs a test to see if a specific instance of EncryptionProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperties_STATUS(subject EncryptionProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperties_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 EncryptionProperties_STATUS instances for property testing - lazily instantiated by +// EncryptionProperties_STATUSGenerator() +var encryptionProperties_STATUSGenerator gopter.Gen + +// EncryptionProperties_STATUSGenerator returns a generator of EncryptionProperties_STATUS instances for property testing. +func EncryptionProperties_STATUSGenerator() gopter.Gen { + if encryptionProperties_STATUSGenerator != nil { + return encryptionProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(generators) + encryptionProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperties_STATUS{}), generators) + + return encryptionProperties_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) +} + +func Test_KeyVaultProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyVaultProperties to KeyVaultProperties via AssignProperties_To_KeyVaultProperties & AssignProperties_From_KeyVaultProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyVaultProperties, KeyVaultPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyVaultProperties tests if a specific instance of KeyVaultProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyVaultProperties(subject KeyVaultProperties) 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.KeyVaultProperties + err := copied.AssignProperties_To_KeyVaultProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyVaultProperties + err = actual.AssignProperties_From_KeyVaultProperties(&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_KeyVaultProperties_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 KeyVaultProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyVaultProperties, KeyVaultPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyVaultProperties runs a test to see if a specific instance of KeyVaultProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyVaultProperties(subject KeyVaultProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyVaultProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyVaultProperties instances for property testing - lazily instantiated by KeyVaultPropertiesGenerator() +var keyVaultPropertiesGenerator gopter.Gen + +// KeyVaultPropertiesGenerator returns a generator of KeyVaultProperties instances for property testing. +func KeyVaultPropertiesGenerator() gopter.Gen { + if keyVaultPropertiesGenerator != nil { + return keyVaultPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyVaultProperties(generators) + keyVaultPropertiesGenerator = gen.Struct(reflect.TypeOf(KeyVaultProperties{}), generators) + + return keyVaultPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForKeyVaultProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyVaultProperties(gens map[string]gopter.Gen) { + gens["IdentityClientId"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyVaultProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyVaultProperties_STATUS to KeyVaultProperties_STATUS via AssignProperties_To_KeyVaultProperties_STATUS & AssignProperties_From_KeyVaultProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyVaultProperties_STATUS, KeyVaultProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyVaultProperties_STATUS tests if a specific instance of KeyVaultProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyVaultProperties_STATUS(subject KeyVaultProperties_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.KeyVaultProperties_STATUS + err := copied.AssignProperties_To_KeyVaultProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyVaultProperties_STATUS + err = actual.AssignProperties_From_KeyVaultProperties_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_KeyVaultProperties_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 KeyVaultProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyVaultProperties_STATUS, KeyVaultProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyVaultProperties_STATUS runs a test to see if a specific instance of KeyVaultProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyVaultProperties_STATUS(subject KeyVaultProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyVaultProperties_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 KeyVaultProperties_STATUS instances for property testing - lazily instantiated by +// KeyVaultProperties_STATUSGenerator() +var keyVaultProperties_STATUSGenerator gopter.Gen + +// KeyVaultProperties_STATUSGenerator returns a generator of KeyVaultProperties_STATUS instances for property testing. +func KeyVaultProperties_STATUSGenerator() gopter.Gen { + if keyVaultProperties_STATUSGenerator != nil { + return keyVaultProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(generators) + keyVaultProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyVaultProperties_STATUS{}), generators) + + return keyVaultProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(gens map[string]gopter.Gen) { + gens["IdentityClientId"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnectionReference_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnectionReference_STATUS to PrivateEndpointConnectionReference_STATUS via AssignProperties_To_PrivateEndpointConnectionReference_STATUS & AssignProperties_From_PrivateEndpointConnectionReference_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS, PrivateEndpointConnectionReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS tests if a specific instance of PrivateEndpointConnectionReference_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnectionReference_STATUS(subject PrivateEndpointConnectionReference_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.PrivateEndpointConnectionReference_STATUS + err := copied.AssignProperties_To_PrivateEndpointConnectionReference_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnectionReference_STATUS + err = actual.AssignProperties_From_PrivateEndpointConnectionReference_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_PrivateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS, PrivateEndpointConnectionReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS runs a test to see if a specific instance of PrivateEndpointConnectionReference_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS(subject PrivateEndpointConnectionReference_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnectionReference_STATUSGenerator() +var privateEndpointConnectionReference_STATUSGenerator gopter.Gen + +// PrivateEndpointConnectionReference_STATUSGenerator returns a generator of PrivateEndpointConnectionReference_STATUS instances for property testing. +// We first initialize privateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUSGenerator() gopter.Gen { + if privateEndpointConnectionReference_STATUSGenerator != nil { + return privateEndpointConnectionReference_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + privateEndpointConnectionReference_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionReference_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + privateEndpointConnectionReference_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionReference_STATUS{}), generators) + + return privateEndpointConnectionReference_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Canceled, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Creating, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Deleting, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Failed, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Succeeded, + PrivateEndpointConnectionProperties_ProvisioningState_STATUS_Updating)) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(gens map[string]gopter.Gen) { + gens["PrivateEndpoint"] = gen.PtrOf(PrivateEndpoint_STATUSGenerator()) + gens["PrivateLinkServiceConnectionState"] = gen.PtrOf(PrivateLinkServiceConnectionState_STATUSGenerator()) +} + +func Test_PrivateEndpoint_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpoint_STATUS to PrivateEndpoint_STATUS via AssignProperties_To_PrivateEndpoint_STATUS & AssignProperties_From_PrivateEndpoint_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpoint_STATUS, PrivateEndpoint_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpoint_STATUS tests if a specific instance of PrivateEndpoint_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpoint_STATUS(subject PrivateEndpoint_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.PrivateEndpoint_STATUS + err := copied.AssignProperties_To_PrivateEndpoint_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpoint_STATUS + err = actual.AssignProperties_From_PrivateEndpoint_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_PrivateEndpoint_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 PrivateEndpoint_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpoint_STATUS, PrivateEndpoint_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpoint_STATUS runs a test to see if a specific instance of PrivateEndpoint_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpoint_STATUS(subject PrivateEndpoint_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpoint_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 PrivateEndpoint_STATUS instances for property testing - lazily instantiated by +// PrivateEndpoint_STATUSGenerator() +var privateEndpoint_STATUSGenerator gopter.Gen + +// PrivateEndpoint_STATUSGenerator returns a generator of PrivateEndpoint_STATUS instances for property testing. +func PrivateEndpoint_STATUSGenerator() gopter.Gen { + if privateEndpoint_STATUSGenerator != nil { + return privateEndpoint_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS(generators) + privateEndpoint_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpoint_STATUS{}), generators) + + return privateEndpoint_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateLinkServiceConnectionState_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateLinkServiceConnectionState_STATUS to PrivateLinkServiceConnectionState_STATUS via AssignProperties_To_PrivateLinkServiceConnectionState_STATUS & AssignProperties_From_PrivateLinkServiceConnectionState_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateLinkServiceConnectionState_STATUS, PrivateLinkServiceConnectionState_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateLinkServiceConnectionState_STATUS tests if a specific instance of PrivateLinkServiceConnectionState_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateLinkServiceConnectionState_STATUS(subject PrivateLinkServiceConnectionState_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.PrivateLinkServiceConnectionState_STATUS + err := copied.AssignProperties_To_PrivateLinkServiceConnectionState_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateLinkServiceConnectionState_STATUS + err = actual.AssignProperties_From_PrivateLinkServiceConnectionState_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_PrivateLinkServiceConnectionState_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 PrivateLinkServiceConnectionState_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS, PrivateLinkServiceConnectionState_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS runs a test to see if a specific instance of PrivateLinkServiceConnectionState_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS(subject PrivateLinkServiceConnectionState_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateLinkServiceConnectionState_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 PrivateLinkServiceConnectionState_STATUS instances for property testing - lazily instantiated by +// PrivateLinkServiceConnectionState_STATUSGenerator() +var privateLinkServiceConnectionState_STATUSGenerator gopter.Gen + +// PrivateLinkServiceConnectionState_STATUSGenerator returns a generator of PrivateLinkServiceConnectionState_STATUS instances for property testing. +func PrivateLinkServiceConnectionState_STATUSGenerator() gopter.Gen { + if privateLinkServiceConnectionState_STATUSGenerator != nil { + return privateLinkServiceConnectionState_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS(generators) + privateLinkServiceConnectionState_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateLinkServiceConnectionState_STATUS{}), generators) + + return privateLinkServiceConnectionState_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS(gens map[string]gopter.Gen) { + gens["ActionsRequired"] = gen.PtrOf(gen.OneConstOf(PrivateLinkServiceConnectionState_ActionsRequired_STATUS_None, PrivateLinkServiceConnectionState_ActionsRequired_STATUS_Recreate)) + gens["Description"] = gen.PtrOf(gen.AlphaString()) + gens["Status"] = gen.PtrOf(gen.OneConstOf( + PrivateLinkServiceConnectionState_Status_STATUS_Approved, + PrivateLinkServiceConnectionState_Status_STATUS_Disconnected, + PrivateLinkServiceConnectionState_Status_STATUS_Pending, + PrivateLinkServiceConnectionState_Status_STATUS_Rejected)) +} + +func Test_ResourceIdentity_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceIdentity to ResourceIdentity via AssignProperties_To_ResourceIdentity & AssignProperties_From_ResourceIdentity returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceIdentity, ResourceIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceIdentity tests if a specific instance of ResourceIdentity can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceIdentity(subject ResourceIdentity) 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.ResourceIdentity + err := copied.AssignProperties_To_ResourceIdentity(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceIdentity + err = actual.AssignProperties_From_ResourceIdentity(&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_ResourceIdentity_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 ResourceIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceIdentity, ResourceIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceIdentity runs a test to see if a specific instance of ResourceIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceIdentity(subject ResourceIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceIdentity + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceIdentity instances for property testing - lazily instantiated by ResourceIdentityGenerator() +var resourceIdentityGenerator gopter.Gen + +// ResourceIdentityGenerator returns a generator of ResourceIdentity instances for property testing. +// We first initialize resourceIdentityGenerator 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 ResourceIdentityGenerator() gopter.Gen { + if resourceIdentityGenerator != nil { + return resourceIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity(generators) + resourceIdentityGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity(generators) + AddRelatedPropertyGeneratorsForResourceIdentity(generators) + resourceIdentityGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity{}), generators) + + return resourceIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForResourceIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf( + ResourceIdentity_Type_None, + ResourceIdentity_Type_SystemAssigned, + ResourceIdentity_Type_SystemAssignedUserAssigned, + ResourceIdentity_Type_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForResourceIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_ResourceIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ResourceIdentity_STATUS to ResourceIdentity_STATUS via AssignProperties_To_ResourceIdentity_STATUS & AssignProperties_From_ResourceIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForResourceIdentity_STATUS, ResourceIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForResourceIdentity_STATUS tests if a specific instance of ResourceIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForResourceIdentity_STATUS(subject ResourceIdentity_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.ResourceIdentity_STATUS + err := copied.AssignProperties_To_ResourceIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ResourceIdentity_STATUS + err = actual.AssignProperties_From_ResourceIdentity_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_ResourceIdentity_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 ResourceIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceIdentity_STATUS, ResourceIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceIdentity_STATUS runs a test to see if a specific instance of ResourceIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceIdentity_STATUS(subject ResourceIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceIdentity_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 ResourceIdentity_STATUS instances for property testing - lazily instantiated by +// ResourceIdentity_STATUSGenerator() +var resourceIdentity_STATUSGenerator gopter.Gen + +// ResourceIdentity_STATUSGenerator returns a generator of ResourceIdentity_STATUS instances for property testing. +// We first initialize resourceIdentity_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 ResourceIdentity_STATUSGenerator() gopter.Gen { + if resourceIdentity_STATUSGenerator != nil { + return resourceIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(generators) + resourceIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(generators) + AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(generators) + resourceIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity_STATUS{}), generators) + + return resourceIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf( + ResourceIdentity_Type_STATUS_None, + ResourceIdentity_Type_STATUS_SystemAssigned, + ResourceIdentity_Type_STATUS_SystemAssignedUserAssigned, + ResourceIdentity_Type_STATUS_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForResourceIdentity_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserIdentity_STATUSGenerator()) +} + +func Test_Sku_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Sku to Sku via AssignProperties_To_Sku & AssignProperties_From_Sku returns original", + prop.ForAll(RunPropertyAssignmentTestForSku, SkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSku tests if a specific instance of Sku can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSku(subject Sku) 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.Sku + err := copied.AssignProperties_To_Sku(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Sku + err = actual.AssignProperties_From_Sku(&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_Sku_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 Sku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSku, SkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSku runs a test to see if a specific instance of Sku round trips to JSON and back losslessly +func RunJSONSerializationTestForSku(subject Sku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Sku + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Sku instances for property testing - lazily instantiated by SkuGenerator() +var skuGenerator gopter.Gen + +// SkuGenerator returns a generator of Sku instances for property testing. +func SkuGenerator() gopter.Gen { + if skuGenerator != nil { + return skuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSku(generators) + skuGenerator = gen.Struct(reflect.TypeOf(Sku{}), generators) + + return skuGenerator +} + +// AddIndependentPropertyGeneratorsForSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSku(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Sku_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Sku_STATUS to Sku_STATUS via AssignProperties_To_Sku_STATUS & AssignProperties_From_Sku_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSku_STATUS, Sku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSku_STATUS tests if a specific instance of Sku_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSku_STATUS(subject Sku_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.Sku_STATUS + err := copied.AssignProperties_To_Sku_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Sku_STATUS + err = actual.AssignProperties_From_Sku_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_Sku_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 Sku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSku_STATUS, Sku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSku_STATUS runs a test to see if a specific instance of Sku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSku_STATUS(subject Sku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Sku_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 Sku_STATUS instances for property testing - lazily instantiated by Sku_STATUSGenerator() +var sku_STATUSGenerator gopter.Gen + +// Sku_STATUSGenerator returns a generator of Sku_STATUS instances for property testing. +func Sku_STATUSGenerator() gopter.Gen { + if sku_STATUSGenerator != nil { + return sku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSku_STATUS(generators) + sku_STATUSGenerator = gen.Struct(reflect.TypeOf(Sku_STATUS{}), generators) + + return sku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { + gens["Name"] = 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 +} + +func Test_UserIdentity_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserIdentity_STATUS to UserIdentity_STATUS via AssignProperties_To_UserIdentity_STATUS & AssignProperties_From_UserIdentity_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUserIdentity_STATUS, UserIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserIdentity_STATUS tests if a specific instance of UserIdentity_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserIdentity_STATUS(subject UserIdentity_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.UserIdentity_STATUS + err := copied.AssignProperties_To_UserIdentity_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserIdentity_STATUS + err = actual.AssignProperties_From_UserIdentity_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_UserIdentity_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 UserIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserIdentity_STATUS, UserIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserIdentity_STATUS runs a test to see if a specific instance of UserIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserIdentity_STATUS(subject UserIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserIdentity_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 UserIdentity_STATUS instances for property testing - lazily instantiated by +// UserIdentity_STATUSGenerator() +var userIdentity_STATUSGenerator gopter.Gen + +// UserIdentity_STATUSGenerator returns a generator of UserIdentity_STATUS instances for property testing. +func UserIdentity_STATUSGenerator() gopter.Gen { + if userIdentity_STATUSGenerator != nil { + return userIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserIdentity_STATUS(generators) + userIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(UserIdentity_STATUS{}), generators) + + return userIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserIdentity_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/appconfiguration/v20240601/doc.go b/v2/api/appconfiguration/v20240601/doc.go new file mode 100644 index 00000000000..2e3fa77d780 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/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 v20240601 contains API Schema definitions for the appconfiguration v20240601 API group +// +groupName=appconfiguration.azure.com +package v20240601 diff --git a/v2/api/appconfiguration/v20240601/groupversion_info_gen.go b/v2/api/appconfiguration/v20240601/groupversion_info_gen.go new file mode 100644 index 00000000000..d4e19775589 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/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 v20240601 contains API Schema definitions for the appconfiguration v20240601 API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=appconfiguration.azure.com +// +versionName=v20240601 +package v20240601 + +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: "appconfiguration.azure.com", Version: "v20240601"} + + // 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/appconfiguration/v20240601/key_value_types_gen.go b/v2/api/appconfiguration/v20240601/key_value_types_gen.go new file mode 100644 index 00000000000..5a0c150db66 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/key_value_types_gen.go @@ -0,0 +1,937 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/arm" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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" + "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" + "sigs.k8s.io/controller-runtime/pkg/conversion" +) + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/keyValues/{keyValueName} +type KeyValue struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec KeyValue_Spec `json:"spec,omitempty"` + Status KeyValue_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &KeyValue{} + +// GetConditions returns the conditions of the resource +func (value *KeyValue) GetConditions() conditions.Conditions { + return value.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (value *KeyValue) SetConditions(conditions conditions.Conditions) { + value.Status.Conditions = conditions +} + +var _ conversion.Convertible = &KeyValue{} + +// ConvertFrom populates our KeyValue from the provided hub KeyValue +func (value *KeyValue) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.KeyValue) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/KeyValue but received %T instead", hub) + } + + return value.AssignProperties_From_KeyValue(source) +} + +// ConvertTo populates the provided hub KeyValue from our KeyValue +func (value *KeyValue) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.KeyValue) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/KeyValue but received %T instead", hub) + } + + return value.AssignProperties_To_KeyValue(destination) +} + +var _ configmaps.Exporter = &KeyValue{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (value *KeyValue) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if value.Spec.OperatorSpec == nil { + return nil + } + return value.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &KeyValue{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (value *KeyValue) SecretDestinationExpressions() []*core.DestinationExpression { + if value.Spec.OperatorSpec == nil { + return nil + } + return value.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &KeyValue{} + +// InitializeSpec initializes the spec for this resource from the given status +func (value *KeyValue) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*KeyValue_STATUS); ok { + return value.Spec.Initialize_From_KeyValue_STATUS(s) + } + + return fmt.Errorf("expected Status of type KeyValue_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &KeyValue{} + +// AzureName returns the Azure name of the resource +func (value *KeyValue) AzureName() string { + return value.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (value KeyValue) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (value *KeyValue) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (value *KeyValue) GetSpec() genruntime.ConvertibleSpec { + return &value.Spec +} + +// GetStatus returns the status of this resource +func (value *KeyValue) GetStatus() genruntime.ConvertibleStatus { + return &value.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (value *KeyValue) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/keyValues" +func (value *KeyValue) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/keyValues" +} + +// NewEmptyStatus returns a new empty (blank) status +func (value *KeyValue) NewEmptyStatus() genruntime.ConvertibleStatus { + return &KeyValue_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (value *KeyValue) Owner() *genruntime.ResourceReference { + if value.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(value.Spec) + return value.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (value *KeyValue) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*KeyValue_STATUS); ok { + value.Status = *st + return nil + } + + // Convert status to required version + var st KeyValue_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + value.Status = st + return nil +} + +// AssignProperties_From_KeyValue populates our KeyValue from the provided source KeyValue +func (value *KeyValue) AssignProperties_From_KeyValue(source *storage.KeyValue) error { + + // ObjectMeta + value.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec KeyValue_Spec + err := spec.AssignProperties_From_KeyValue_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyValue_Spec() to populate field Spec") + } + value.Spec = spec + + // Status + var status KeyValue_STATUS + err = status.AssignProperties_From_KeyValue_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyValue_STATUS() to populate field Status") + } + value.Status = status + + // No error + return nil +} + +// AssignProperties_To_KeyValue populates the provided destination KeyValue from our KeyValue +func (value *KeyValue) AssignProperties_To_KeyValue(destination *storage.KeyValue) error { + + // ObjectMeta + destination.ObjectMeta = *value.ObjectMeta.DeepCopy() + + // Spec + var spec storage.KeyValue_Spec + err := value.Spec.AssignProperties_To_KeyValue_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyValue_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.KeyValue_STATUS + err = value.Status.AssignProperties_To_KeyValue_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyValue_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 (value *KeyValue) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: value.Spec.OriginalVersion(), + Kind: "KeyValue", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/keyValues/{keyValueName} +type KeyValueList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []KeyValue `json:"items"` +} + +type KeyValue_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"` + + // ContentType: The content type of the key-value's value. + // Providing a proper content-type can enable transformations of values when they are retrieved by applications. + ContentType *string `json:"contentType,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *KeyValueOperatorSpec `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 appconfiguration.azure.com/ConfigurationStore resource + Owner *genruntime.KnownResourceReference `group:"appconfiguration.azure.com" json:"owner,omitempty" kind:"ConfigurationStore"` + + // Tags: A dictionary of tags that can help identify what a key-value may be applicable for. + Tags map[string]string `json:"tags,omitempty"` + + // Value: The value of the key-value. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ARMTransformer = &KeyValue_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (value *KeyValue_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if value == nil { + return nil, nil + } + result := &arm.KeyValue_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if value.ContentType != nil || + value.Tags != nil || + value.Value != nil { + result.Properties = &arm.KeyValueProperties{} + } + if value.ContentType != nil { + contentType := *value.ContentType + result.Properties.ContentType = &contentType + } + if value.Tags != nil { + result.Properties.Tags = make(map[string]string, len(value.Tags)) + for key, tagsValue := range value.Tags { + result.Properties.Tags[key] = tagsValue + } + } + if value.Value != nil { + value1 := *value.Value + result.Properties.Value = &value1 + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (value *KeyValue_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.KeyValue_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (value *KeyValue_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.KeyValue_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.KeyValue_Spec, got %T", armInput) + } + + // Set property "AzureName": + value.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "ContentType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ContentType != nil { + contentType := *typedInput.Properties.ContentType + value.ContentType = &contentType + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + value.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "Tags": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Tags != nil { + value.Tags = make(map[string]string, len(typedInput.Properties.Tags)) + for key, tagsValue := range typedInput.Properties.Tags { + value.Tags[key] = tagsValue + } + } + } + + // Set property "Value": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Value != nil { + value1 := *typedInput.Properties.Value + value.Value = &value1 + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &KeyValue_Spec{} + +// ConvertSpecFrom populates our KeyValue_Spec from the provided source +func (value *KeyValue_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.KeyValue_Spec) + if ok { + // Populate our instance from source + return value.AssignProperties_From_KeyValue_Spec(src) + } + + // Convert to an intermediate form + src = &storage.KeyValue_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = value.AssignProperties_From_KeyValue_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our KeyValue_Spec +func (value *KeyValue_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.KeyValue_Spec) + if ok { + // Populate destination from our instance + return value.AssignProperties_To_KeyValue_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.KeyValue_Spec{} + err := value.AssignProperties_To_KeyValue_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_KeyValue_Spec populates our KeyValue_Spec from the provided source KeyValue_Spec +func (value *KeyValue_Spec) AssignProperties_From_KeyValue_Spec(source *storage.KeyValue_Spec) error { + + // AzureName + value.AzureName = source.AzureName + + // ContentType + value.ContentType = genruntime.ClonePointerToString(source.ContentType) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec KeyValueOperatorSpec + err := operatorSpec.AssignProperties_From_KeyValueOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyValueOperatorSpec() to populate field OperatorSpec") + } + value.OperatorSpec = &operatorSpec + } else { + value.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + value.Owner = &owner + } else { + value.Owner = nil + } + + // Tags + value.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Value + value.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_KeyValue_Spec populates the provided destination KeyValue_Spec from our KeyValue_Spec +func (value *KeyValue_Spec) AssignProperties_To_KeyValue_Spec(destination *storage.KeyValue_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = value.AzureName + + // ContentType + destination.ContentType = genruntime.ClonePointerToString(value.ContentType) + + // OperatorSpec + if value.OperatorSpec != nil { + var operatorSpec storage.KeyValueOperatorSpec + err := value.OperatorSpec.AssignProperties_To_KeyValueOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyValueOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = value.OriginalVersion() + + // Owner + if value.Owner != nil { + owner := value.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(value.Tags) + + // Value + destination.Value = genruntime.ClonePointerToString(value.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_KeyValue_STATUS populates our KeyValue_Spec from the provided source KeyValue_STATUS +func (value *KeyValue_Spec) Initialize_From_KeyValue_STATUS(source *KeyValue_STATUS) error { + + // ContentType + value.ContentType = genruntime.ClonePointerToString(source.ContentType) + + // Tags + value.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Value + value.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (value *KeyValue_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (value *KeyValue_Spec) SetAzureName(azureName string) { value.AzureName = azureName } + +type KeyValue_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // ContentType: The content type of the key-value's value. + // Providing a proper content-type can enable transformations of values when they are retrieved by applications. + ContentType *string `json:"contentType,omitempty"` + + // ETag: An ETag indicating the state of a key-value within a configuration store. + ETag *string `json:"eTag,omitempty"` + + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Key: The primary identifier of a key-value. + // The key is used in unison with the label to uniquely identify a key-value. + Key *string `json:"key,omitempty"` + + // Label: A value used to group key-values. + // The label is used in unison with the key to uniquely identify a key-value. + Label *string `json:"label,omitempty"` + + // LastModified: The last time a modifying operation was performed on the given key-value. + LastModified *string `json:"lastModified,omitempty"` + + // Locked: A value indicating whether the key-value is locked. + // A locked key-value may not be modified until it is unlocked. + Locked *bool `json:"locked,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // Tags: A dictionary of tags that can help identify what a key-value may be applicable for. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` + + // Value: The value of the key-value. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &KeyValue_STATUS{} + +// ConvertStatusFrom populates our KeyValue_STATUS from the provided source +func (value *KeyValue_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.KeyValue_STATUS) + if ok { + // Populate our instance from source + return value.AssignProperties_From_KeyValue_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.KeyValue_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = value.AssignProperties_From_KeyValue_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our KeyValue_STATUS +func (value *KeyValue_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.KeyValue_STATUS) + if ok { + // Populate destination from our instance + return value.AssignProperties_To_KeyValue_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.KeyValue_STATUS{} + err := value.AssignProperties_To_KeyValue_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 = &KeyValue_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (value *KeyValue_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.KeyValue_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (value *KeyValue_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.KeyValue_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.KeyValue_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "ContentType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ContentType != nil { + contentType := *typedInput.Properties.ContentType + value.ContentType = &contentType + } + } + + // Set property "ETag": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ETag != nil { + eTag := *typedInput.Properties.ETag + value.ETag = &eTag + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + value.Id = &id + } + + // Set property "Key": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Key != nil { + key := *typedInput.Properties.Key + value.Key = &key + } + } + + // Set property "Label": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Label != nil { + label := *typedInput.Properties.Label + value.Label = &label + } + } + + // Set property "LastModified": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.LastModified != nil { + lastModified := *typedInput.Properties.LastModified + value.LastModified = &lastModified + } + } + + // Set property "Locked": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Locked != nil { + locked := *typedInput.Properties.Locked + value.Locked = &locked + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + value.Name = &name + } + + // Set property "Tags": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Tags != nil { + value.Tags = make(map[string]string, len(typedInput.Properties.Tags)) + for key, tagsValue := range typedInput.Properties.Tags { + value.Tags[key] = tagsValue + } + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + value.Type = &typeVar + } + + // Set property "Value": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Value != nil { + value1 := *typedInput.Properties.Value + value.Value = &value1 + } + } + + // No error + return nil +} + +// AssignProperties_From_KeyValue_STATUS populates our KeyValue_STATUS from the provided source KeyValue_STATUS +func (value *KeyValue_STATUS) AssignProperties_From_KeyValue_STATUS(source *storage.KeyValue_STATUS) error { + + // Conditions + value.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // ContentType + value.ContentType = genruntime.ClonePointerToString(source.ContentType) + + // ETag + value.ETag = genruntime.ClonePointerToString(source.ETag) + + // Id + value.Id = genruntime.ClonePointerToString(source.Id) + + // Key + value.Key = genruntime.ClonePointerToString(source.Key) + + // Label + value.Label = genruntime.ClonePointerToString(source.Label) + + // LastModified + value.LastModified = genruntime.ClonePointerToString(source.LastModified) + + // Locked + if source.Locked != nil { + locked := *source.Locked + value.Locked = &locked + } else { + value.Locked = nil + } + + // Name + value.Name = genruntime.ClonePointerToString(source.Name) + + // Tags + value.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + value.Type = genruntime.ClonePointerToString(source.Type) + + // Value + value.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_KeyValue_STATUS populates the provided destination KeyValue_STATUS from our KeyValue_STATUS +func (value *KeyValue_STATUS) AssignProperties_To_KeyValue_STATUS(destination *storage.KeyValue_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(value.Conditions) + + // ContentType + destination.ContentType = genruntime.ClonePointerToString(value.ContentType) + + // ETag + destination.ETag = genruntime.ClonePointerToString(value.ETag) + + // Id + destination.Id = genruntime.ClonePointerToString(value.Id) + + // Key + destination.Key = genruntime.ClonePointerToString(value.Key) + + // Label + destination.Label = genruntime.ClonePointerToString(value.Label) + + // LastModified + destination.LastModified = genruntime.ClonePointerToString(value.LastModified) + + // Locked + if value.Locked != nil { + locked := *value.Locked + destination.Locked = &locked + } else { + destination.Locked = nil + } + + // Name + destination.Name = genruntime.ClonePointerToString(value.Name) + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(value.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(value.Type) + + // Value + destination.Value = genruntime.ClonePointerToString(value.Value) + + // 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 KeyValueOperatorSpec 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_KeyValueOperatorSpec populates our KeyValueOperatorSpec from the provided source KeyValueOperatorSpec +func (operator *KeyValueOperatorSpec) AssignProperties_From_KeyValueOperatorSpec(source *storage.KeyValueOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + 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 { + 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_KeyValueOperatorSpec populates the provided destination KeyValueOperatorSpec from our KeyValueOperatorSpec +func (operator *KeyValueOperatorSpec) AssignProperties_To_KeyValueOperatorSpec(destination *storage.KeyValueOperatorSpec) 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 { + 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 { + 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(&KeyValue{}, &KeyValueList{}) +} diff --git a/v2/api/appconfiguration/v20240601/key_value_types_gen_test.go b/v2/api/appconfiguration/v20240601/key_value_types_gen_test.go new file mode 100644 index 00000000000..ab9df1d0e22 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/key_value_types_gen_test.go @@ -0,0 +1,497 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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_KeyValue_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 KeyValue to hub returns original", + prop.ForAll(RunResourceConversionTestForKeyValue, KeyValueGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForKeyValue tests if a specific instance of KeyValue round trips to the hub storage version and back losslessly +func RunResourceConversionTestForKeyValue(subject KeyValue) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.KeyValue + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual KeyValue + 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_KeyValue_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyValue to KeyValue via AssignProperties_To_KeyValue & AssignProperties_From_KeyValue returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyValue, KeyValueGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyValue tests if a specific instance of KeyValue can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyValue(subject KeyValue) 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.KeyValue + err := copied.AssignProperties_To_KeyValue(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyValue + err = actual.AssignProperties_From_KeyValue(&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_KeyValue_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 KeyValue via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue, KeyValueGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue runs a test to see if a specific instance of KeyValue round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue(subject KeyValue) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValue instances for property testing - lazily instantiated by KeyValueGenerator() +var keyValueGenerator gopter.Gen + +// KeyValueGenerator returns a generator of KeyValue instances for property testing. +func KeyValueGenerator() gopter.Gen { + if keyValueGenerator != nil { + return keyValueGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForKeyValue(generators) + keyValueGenerator = gen.Struct(reflect.TypeOf(KeyValue{}), generators) + + return keyValueGenerator +} + +// AddRelatedPropertyGeneratorsForKeyValue is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForKeyValue(gens map[string]gopter.Gen) { + gens["Spec"] = KeyValue_SpecGenerator() + gens["Status"] = KeyValue_STATUSGenerator() +} + +func Test_KeyValueOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyValueOperatorSpec to KeyValueOperatorSpec via AssignProperties_To_KeyValueOperatorSpec & AssignProperties_From_KeyValueOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyValueOperatorSpec, KeyValueOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyValueOperatorSpec tests if a specific instance of KeyValueOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyValueOperatorSpec(subject KeyValueOperatorSpec) 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.KeyValueOperatorSpec + err := copied.AssignProperties_To_KeyValueOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyValueOperatorSpec + err = actual.AssignProperties_From_KeyValueOperatorSpec(&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_KeyValueOperatorSpec_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 KeyValueOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueOperatorSpec, KeyValueOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueOperatorSpec runs a test to see if a specific instance of KeyValueOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueOperatorSpec(subject KeyValueOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValueOperatorSpec instances for property testing - lazily instantiated by +// KeyValueOperatorSpecGenerator() +var keyValueOperatorSpecGenerator gopter.Gen + +// KeyValueOperatorSpecGenerator returns a generator of KeyValueOperatorSpec instances for property testing. +func KeyValueOperatorSpecGenerator() gopter.Gen { + if keyValueOperatorSpecGenerator != nil { + return keyValueOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + keyValueOperatorSpecGenerator = gen.Struct(reflect.TypeOf(KeyValueOperatorSpec{}), generators) + + return keyValueOperatorSpecGenerator +} + +func Test_KeyValue_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyValue_STATUS to KeyValue_STATUS via AssignProperties_To_KeyValue_STATUS & AssignProperties_From_KeyValue_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyValue_STATUS, KeyValue_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyValue_STATUS tests if a specific instance of KeyValue_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyValue_STATUS(subject KeyValue_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.KeyValue_STATUS + err := copied.AssignProperties_To_KeyValue_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyValue_STATUS + err = actual.AssignProperties_From_KeyValue_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_KeyValue_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 KeyValue_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue_STATUS, KeyValue_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue_STATUS runs a test to see if a specific instance of KeyValue_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue_STATUS(subject KeyValue_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue_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 KeyValue_STATUS instances for property testing - lazily instantiated by KeyValue_STATUSGenerator() +var keyValue_STATUSGenerator gopter.Gen + +// KeyValue_STATUSGenerator returns a generator of KeyValue_STATUS instances for property testing. +func KeyValue_STATUSGenerator() gopter.Gen { + if keyValue_STATUSGenerator != nil { + return keyValue_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_STATUS(generators) + keyValue_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValue_STATUS{}), generators) + + return keyValue_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValue_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValue_STATUS(gens map[string]gopter.Gen) { + gens["ContentType"] = gen.PtrOf(gen.AlphaString()) + gens["ETag"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) + gens["LastModified"] = gen.PtrOf(gen.AlphaString()) + gens["Locked"] = gen.PtrOf(gen.Bool()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyValue_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyValue_Spec to KeyValue_Spec via AssignProperties_To_KeyValue_Spec & AssignProperties_From_KeyValue_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyValue_Spec, KeyValue_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyValue_Spec tests if a specific instance of KeyValue_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyValue_Spec(subject KeyValue_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.KeyValue_Spec + err := copied.AssignProperties_To_KeyValue_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyValue_Spec + err = actual.AssignProperties_From_KeyValue_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_KeyValue_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 KeyValue_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue_Spec, KeyValue_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue_Spec runs a test to see if a specific instance of KeyValue_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue_Spec(subject KeyValue_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue_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 KeyValue_Spec instances for property testing - lazily instantiated by KeyValue_SpecGenerator() +var keyValue_SpecGenerator gopter.Gen + +// KeyValue_SpecGenerator returns a generator of KeyValue_Spec instances for property testing. +// We first initialize keyValue_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 KeyValue_SpecGenerator() gopter.Gen { + if keyValue_SpecGenerator != nil { + return keyValue_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_Spec(generators) + keyValue_SpecGenerator = gen.Struct(reflect.TypeOf(KeyValue_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_Spec(generators) + AddRelatedPropertyGeneratorsForKeyValue_Spec(generators) + keyValue_SpecGenerator = gen.Struct(reflect.TypeOf(KeyValue_Spec{}), generators) + + return keyValue_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValue_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValue_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["ContentType"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForKeyValue_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForKeyValue_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(KeyValueOperatorSpecGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/replica_types_gen.go b/v2/api/appconfiguration/v20240601/replica_types_gen.go new file mode 100644 index 00000000000..4846b1a22e2 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/replica_types_gen.go @@ -0,0 +1,835 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/arm" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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" + "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" + "sigs.k8s.io/controller-runtime/pkg/conversion" +) + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/replicas/{replicaName} +type Replica struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Replica_Spec `json:"spec,omitempty"` + Status Replica_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Replica{} + +// GetConditions returns the conditions of the resource +func (replica *Replica) GetConditions() conditions.Conditions { + return replica.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (replica *Replica) SetConditions(conditions conditions.Conditions) { + replica.Status.Conditions = conditions +} + +var _ conversion.Convertible = &Replica{} + +// ConvertFrom populates our Replica from the provided hub Replica +func (replica *Replica) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.Replica) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/Replica but received %T instead", hub) + } + + return replica.AssignProperties_From_Replica(source) +} + +// ConvertTo populates the provided hub Replica from our Replica +func (replica *Replica) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.Replica) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/Replica but received %T instead", hub) + } + + return replica.AssignProperties_To_Replica(destination) +} + +var _ configmaps.Exporter = &Replica{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (replica *Replica) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Replica{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (replica *Replica) SecretDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &Replica{} + +// InitializeSpec initializes the spec for this resource from the given status +func (replica *Replica) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*Replica_STATUS); ok { + return replica.Spec.Initialize_From_Replica_STATUS(s) + } + + return fmt.Errorf("expected Status of type Replica_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &Replica{} + +// AzureName returns the Azure name of the resource +func (replica *Replica) AzureName() string { + return replica.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (replica Replica) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (replica *Replica) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (replica *Replica) GetSpec() genruntime.ConvertibleSpec { + return &replica.Spec +} + +// GetStatus returns the status of this resource +func (replica *Replica) GetStatus() genruntime.ConvertibleStatus { + return &replica.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (replica *Replica) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/replicas" +func (replica *Replica) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/replicas" +} + +// NewEmptyStatus returns a new empty (blank) status +func (replica *Replica) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Replica_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (replica *Replica) Owner() *genruntime.ResourceReference { + if replica.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(replica.Spec) + return replica.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (replica *Replica) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Replica_STATUS); ok { + replica.Status = *st + return nil + } + + // Convert status to required version + var st Replica_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + replica.Status = st + return nil +} + +// AssignProperties_From_Replica populates our Replica from the provided source Replica +func (replica *Replica) AssignProperties_From_Replica(source *storage.Replica) error { + + // ObjectMeta + replica.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec Replica_Spec + err := spec.AssignProperties_From_Replica_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Replica_Spec() to populate field Spec") + } + replica.Spec = spec + + // Status + var status Replica_STATUS + err = status.AssignProperties_From_Replica_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Replica_STATUS() to populate field Status") + } + replica.Status = status + + // No error + return nil +} + +// AssignProperties_To_Replica populates the provided destination Replica from our Replica +func (replica *Replica) AssignProperties_To_Replica(destination *storage.Replica) error { + + // ObjectMeta + destination.ObjectMeta = *replica.ObjectMeta.DeepCopy() + + // Spec + var spec storage.Replica_Spec + err := replica.Spec.AssignProperties_To_Replica_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Replica_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.Replica_STATUS + err = replica.Status.AssignProperties_To_Replica_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Replica_STATUS() to populate field Status") + } + destination.Status = status + + // No error + return nil +} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (replica *Replica) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: replica.Spec.OriginalVersion(), + Kind: "Replica", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/replicas/{replicaName} +type ReplicaList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Replica `json:"items"` +} + +type Replica_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + + // Location: The location of the replica. + Location *string `json:"location,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *ReplicaOperatorSpec `json:"operatorSpec,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a appconfiguration.azure.com/ConfigurationStore resource + Owner *genruntime.KnownResourceReference `group:"appconfiguration.azure.com" json:"owner,omitempty" kind:"ConfigurationStore"` +} + +var _ genruntime.ARMTransformer = &Replica_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (replica *Replica_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if replica == nil { + return nil, nil + } + result := &arm.Replica_Spec{} + + // Set property "Location": + if replica.Location != nil { + location := *replica.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (replica *Replica_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Replica_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (replica *Replica_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Replica_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Replica_Spec, got %T", armInput) + } + + // Set property "AzureName": + replica.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + replica.Location = &location + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + replica.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &Replica_Spec{} + +// ConvertSpecFrom populates our Replica_Spec from the provided source +func (replica *Replica_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.Replica_Spec) + if ok { + // Populate our instance from source + return replica.AssignProperties_From_Replica_Spec(src) + } + + // Convert to an intermediate form + src = &storage.Replica_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = replica.AssignProperties_From_Replica_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our Replica_Spec +func (replica *Replica_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.Replica_Spec) + if ok { + // Populate destination from our instance + return replica.AssignProperties_To_Replica_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.Replica_Spec{} + err := replica.AssignProperties_To_Replica_Spec(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecTo()") + } + + // Update dst from our instance + err = dst.ConvertSpecTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecTo()") + } + + return nil +} + +// AssignProperties_From_Replica_Spec populates our Replica_Spec from the provided source Replica_Spec +func (replica *Replica_Spec) AssignProperties_From_Replica_Spec(source *storage.Replica_Spec) error { + + // AzureName + replica.AzureName = source.AzureName + + // Location + replica.Location = genruntime.ClonePointerToString(source.Location) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec ReplicaOperatorSpec + err := operatorSpec.AssignProperties_From_ReplicaOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ReplicaOperatorSpec() to populate field OperatorSpec") + } + replica.OperatorSpec = &operatorSpec + } else { + replica.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + replica.Owner = &owner + } else { + replica.Owner = nil + } + + // No error + return nil +} + +// AssignProperties_To_Replica_Spec populates the provided destination Replica_Spec from our Replica_Spec +func (replica *Replica_Spec) AssignProperties_To_Replica_Spec(destination *storage.Replica_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = replica.AzureName + + // Location + destination.Location = genruntime.ClonePointerToString(replica.Location) + + // OperatorSpec + if replica.OperatorSpec != nil { + var operatorSpec storage.ReplicaOperatorSpec + err := replica.OperatorSpec.AssignProperties_To_ReplicaOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ReplicaOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = replica.OriginalVersion() + + // Owner + if replica.Owner != nil { + owner := replica.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Replica_STATUS populates our Replica_Spec from the provided source Replica_STATUS +func (replica *Replica_Spec) Initialize_From_Replica_STATUS(source *Replica_STATUS) error { + + // Location + replica.Location = genruntime.ClonePointerToString(source.Location) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (replica *Replica_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (replica *Replica_Spec) SetAzureName(azureName string) { replica.AzureName = azureName } + +type Replica_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // Endpoint: The URI of the replica where the replica API will be available. + Endpoint *string `json:"endpoint,omitempty"` + + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Location: The location of the replica. + Location *string `json:"location,omitempty"` + + // Name: The name of the replica. + Name *string `json:"name,omitempty"` + + // ProvisioningState: The provisioning state of the replica. + ProvisioningState *ReplicaProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // SystemData: Resource system metadata. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Replica_STATUS{} + +// ConvertStatusFrom populates our Replica_STATUS from the provided source +func (replica *Replica_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.Replica_STATUS) + if ok { + // Populate our instance from source + return replica.AssignProperties_From_Replica_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.Replica_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = replica.AssignProperties_From_Replica_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our Replica_STATUS +func (replica *Replica_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.Replica_STATUS) + if ok { + // Populate destination from our instance + return replica.AssignProperties_To_Replica_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.Replica_STATUS{} + err := replica.AssignProperties_To_Replica_STATUS(dst) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusTo()") + } + + // Update dst from our instance + err = dst.ConvertStatusTo(destination) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusTo()") + } + + return nil +} + +var _ genruntime.FromARMConverter = &Replica_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (replica *Replica_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Replica_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (replica *Replica_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Replica_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Replica_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "Endpoint": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Endpoint != nil { + endpoint := *typedInput.Properties.Endpoint + replica.Endpoint = &endpoint + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + replica.Id = &id + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + replica.Location = &location + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + replica.Name = &name + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := ReplicaProperties_ProvisioningState_STATUS(temp) + replica.ProvisioningState = &provisioningState + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + replica.SystemData = &systemData + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + replica.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_Replica_STATUS populates our Replica_STATUS from the provided source Replica_STATUS +func (replica *Replica_STATUS) AssignProperties_From_Replica_STATUS(source *storage.Replica_STATUS) error { + + // Conditions + replica.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Endpoint + replica.Endpoint = genruntime.ClonePointerToString(source.Endpoint) + + // Id + replica.Id = genruntime.ClonePointerToString(source.Id) + + // Location + replica.Location = genruntime.ClonePointerToString(source.Location) + + // Name + replica.Name = genruntime.ClonePointerToString(source.Name) + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, replicaProperties_ProvisioningState_STATUS_Values) + replica.ProvisioningState = &provisioningStateTemp + } else { + replica.ProvisioningState = nil + } + + // SystemData + if source.SystemData != nil { + var systemDatum SystemData_STATUS + err := systemDatum.AssignProperties_From_SystemData_STATUS(source.SystemData) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SystemData_STATUS() to populate field SystemData") + } + replica.SystemData = &systemDatum + } else { + replica.SystemData = nil + } + + // Type + replica.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_Replica_STATUS populates the provided destination Replica_STATUS from our Replica_STATUS +func (replica *Replica_STATUS) AssignProperties_To_Replica_STATUS(destination *storage.Replica_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(replica.Conditions) + + // Endpoint + destination.Endpoint = genruntime.ClonePointerToString(replica.Endpoint) + + // Id + destination.Id = genruntime.ClonePointerToString(replica.Id) + + // Location + destination.Location = genruntime.ClonePointerToString(replica.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(replica.Name) + + // ProvisioningState + if replica.ProvisioningState != nil { + provisioningState := string(*replica.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // SystemData + if replica.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := replica.SystemData.AssignProperties_To_SystemData_STATUS(&systemDatum) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SystemData_STATUS() to populate field SystemData") + } + destination.SystemData = &systemDatum + } else { + destination.SystemData = nil + } + + // Type + destination.Type = genruntime.ClonePointerToString(replica.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type ReplicaOperatorSpec struct { + // ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions). + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + + // SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions). + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// AssignProperties_From_ReplicaOperatorSpec populates our ReplicaOperatorSpec from the provided source ReplicaOperatorSpec +func (operator *ReplicaOperatorSpec) AssignProperties_From_ReplicaOperatorSpec(source *storage.ReplicaOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + 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 { + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // No error + return nil +} + +// AssignProperties_To_ReplicaOperatorSpec populates the provided destination ReplicaOperatorSpec from our ReplicaOperatorSpec +func (operator *ReplicaOperatorSpec) AssignProperties_To_ReplicaOperatorSpec(destination *storage.ReplicaOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + 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 { + 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 +} + +type ReplicaProperties_ProvisioningState_STATUS string + +const ( + ReplicaProperties_ProvisioningState_STATUS_Canceled = ReplicaProperties_ProvisioningState_STATUS("Canceled") + ReplicaProperties_ProvisioningState_STATUS_Creating = ReplicaProperties_ProvisioningState_STATUS("Creating") + ReplicaProperties_ProvisioningState_STATUS_Deleting = ReplicaProperties_ProvisioningState_STATUS("Deleting") + ReplicaProperties_ProvisioningState_STATUS_Failed = ReplicaProperties_ProvisioningState_STATUS("Failed") + ReplicaProperties_ProvisioningState_STATUS_Succeeded = ReplicaProperties_ProvisioningState_STATUS("Succeeded") +) + +// Mapping from string to ReplicaProperties_ProvisioningState_STATUS +var replicaProperties_ProvisioningState_STATUS_Values = map[string]ReplicaProperties_ProvisioningState_STATUS{ + "canceled": ReplicaProperties_ProvisioningState_STATUS_Canceled, + "creating": ReplicaProperties_ProvisioningState_STATUS_Creating, + "deleting": ReplicaProperties_ProvisioningState_STATUS_Deleting, + "failed": ReplicaProperties_ProvisioningState_STATUS_Failed, + "succeeded": ReplicaProperties_ProvisioningState_STATUS_Succeeded, +} + +func init() { + SchemeBuilder.Register(&Replica{}, &ReplicaList{}) +} diff --git a/v2/api/appconfiguration/v20240601/replica_types_gen_test.go b/v2/api/appconfiguration/v20240601/replica_types_gen_test.go new file mode 100644 index 00000000000..8ff2bef78d2 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/replica_types_gen_test.go @@ -0,0 +1,505 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_Replica_WhenConvertedToHub_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + parameters.MinSuccessfulTests = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica to hub returns original", + prop.ForAll(RunResourceConversionTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForReplica tests if a specific instance of Replica round trips to the hub storage version and back losslessly +func RunResourceConversionTestForReplica(subject Replica) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.Replica + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual Replica + err = actual.ConvertFrom(&hub) + if err != nil { + return err.Error() + } + + // Compare actual with what we started with + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica to Replica via AssignProperties_To_Replica & AssignProperties_From_Replica returns original", + prop.ForAll(RunPropertyAssignmentTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplica tests if a specific instance of Replica can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplica(subject Replica) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.Replica + err := copied.AssignProperties_To_Replica(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Replica + err = actual.AssignProperties_From_Replica(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica runs a test to see if a specific instance of Replica round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica(subject Replica) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica instances for property testing - lazily instantiated by ReplicaGenerator() +var replicaGenerator gopter.Gen + +// ReplicaGenerator returns a generator of Replica instances for property testing. +func ReplicaGenerator() gopter.Gen { + if replicaGenerator != nil { + return replicaGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForReplica(generators) + replicaGenerator = gen.Struct(reflect.TypeOf(Replica{}), generators) + + return replicaGenerator +} + +// AddRelatedPropertyGeneratorsForReplica is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica(gens map[string]gopter.Gen) { + gens["Spec"] = Replica_SpecGenerator() + gens["Status"] = Replica_STATUSGenerator() +} + +func Test_ReplicaOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ReplicaOperatorSpec to ReplicaOperatorSpec via AssignProperties_To_ReplicaOperatorSpec & AssignProperties_From_ReplicaOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForReplicaOperatorSpec, ReplicaOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplicaOperatorSpec tests if a specific instance of ReplicaOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplicaOperatorSpec(subject ReplicaOperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.ReplicaOperatorSpec + err := copied.AssignProperties_To_ReplicaOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ReplicaOperatorSpec + err = actual.AssignProperties_From_ReplicaOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_ReplicaOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaOperatorSpec, ReplicaOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaOperatorSpec runs a test to see if a specific instance of ReplicaOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaOperatorSpec(subject ReplicaOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaOperatorSpec instances for property testing - lazily instantiated by +// ReplicaOperatorSpecGenerator() +var replicaOperatorSpecGenerator gopter.Gen + +// ReplicaOperatorSpecGenerator returns a generator of ReplicaOperatorSpec instances for property testing. +func ReplicaOperatorSpecGenerator() gopter.Gen { + if replicaOperatorSpecGenerator != nil { + return replicaOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + replicaOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ReplicaOperatorSpec{}), generators) + + return replicaOperatorSpecGenerator +} + +func Test_Replica_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica_STATUS to Replica_STATUS via AssignProperties_To_Replica_STATUS & AssignProperties_From_Replica_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplica_STATUS tests if a specific instance of Replica_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplica_STATUS(subject Replica_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.Replica_STATUS + err := copied.AssignProperties_To_Replica_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Replica_STATUS + err = actual.AssignProperties_From_Replica_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_STATUS runs a test to see if a specific instance of Replica_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_STATUS(subject Replica_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_STATUS instances for property testing - lazily instantiated by Replica_STATUSGenerator() +var replica_STATUSGenerator gopter.Gen + +// Replica_STATUSGenerator returns a generator of Replica_STATUS instances for property testing. +// We first initialize replica_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_STATUSGenerator() gopter.Gen { + if replica_STATUSGenerator != nil { + return replica_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + AddRelatedPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + return replica_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Endpoint"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ReplicaProperties_ProvisioningState_STATUS_Canceled, + ReplicaProperties_ProvisioningState_STATUS_Creating, + ReplicaProperties_ProvisioningState_STATUS_Deleting, + ReplicaProperties_ProvisioningState_STATUS_Failed, + ReplicaProperties_ProvisioningState_STATUS_Succeeded)) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_Replica_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Replica_Spec to Replica_Spec via AssignProperties_To_Replica_Spec & AssignProperties_From_Replica_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForReplica_Spec tests if a specific instance of Replica_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForReplica_Spec(subject Replica_Spec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.Replica_Spec + err := copied.AssignProperties_To_Replica_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Replica_Spec + err = actual.AssignProperties_From_Replica_Spec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_Replica_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_Spec runs a test to see if a specific instance of Replica_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_Spec(subject Replica_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_Spec instances for property testing - lazily instantiated by Replica_SpecGenerator() +var replica_SpecGenerator gopter.Gen + +// Replica_SpecGenerator returns a generator of Replica_Spec instances for property testing. +// We first initialize replica_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_SpecGenerator() gopter.Gen { + if replica_SpecGenerator != nil { + return replica_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + AddRelatedPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + return replica_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Location"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(ReplicaOperatorSpecGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/snapshot_types_gen.go b/v2/api/appconfiguration/v20240601/snapshot_types_gen.go new file mode 100644 index 00000000000..0179059007b --- /dev/null +++ b/v2/api/appconfiguration/v20240601/snapshot_types_gen.go @@ -0,0 +1,1399 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/arm" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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" + "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" + "sigs.k8s.io/controller-runtime/pkg/conversion" +) + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/snapshots/{snapshotName} +type Snapshot struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Snapshot_Spec `json:"spec,omitempty"` + Status Snapshot_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Snapshot{} + +// GetConditions returns the conditions of the resource +func (snapshot *Snapshot) GetConditions() conditions.Conditions { + return snapshot.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (snapshot *Snapshot) SetConditions(conditions conditions.Conditions) { + snapshot.Status.Conditions = conditions +} + +var _ conversion.Convertible = &Snapshot{} + +// ConvertFrom populates our Snapshot from the provided hub Snapshot +func (snapshot *Snapshot) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.Snapshot) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/Snapshot but received %T instead", hub) + } + + return snapshot.AssignProperties_From_Snapshot(source) +} + +// ConvertTo populates the provided hub Snapshot from our Snapshot +func (snapshot *Snapshot) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.Snapshot) + if !ok { + return fmt.Errorf("expected appconfiguration/v20240601/storage/Snapshot but received %T instead", hub) + } + + return snapshot.AssignProperties_To_Snapshot(destination) +} + +var _ configmaps.Exporter = &Snapshot{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (snapshot *Snapshot) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if snapshot.Spec.OperatorSpec == nil { + return nil + } + return snapshot.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Snapshot{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (snapshot *Snapshot) SecretDestinationExpressions() []*core.DestinationExpression { + if snapshot.Spec.OperatorSpec == nil { + return nil + } + return snapshot.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &Snapshot{} + +// InitializeSpec initializes the spec for this resource from the given status +func (snapshot *Snapshot) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*Snapshot_STATUS); ok { + return snapshot.Spec.Initialize_From_Snapshot_STATUS(s) + } + + return fmt.Errorf("expected Status of type Snapshot_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &Snapshot{} + +// AzureName returns the Azure name of the resource +func (snapshot *Snapshot) AzureName() string { + return snapshot.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (snapshot Snapshot) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (snapshot *Snapshot) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (snapshot *Snapshot) GetSpec() genruntime.ConvertibleSpec { + return &snapshot.Spec +} + +// GetStatus returns the status of this resource +func (snapshot *Snapshot) GetStatus() genruntime.ConvertibleStatus { + return &snapshot.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (snapshot *Snapshot) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/snapshots" +func (snapshot *Snapshot) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/snapshots" +} + +// NewEmptyStatus returns a new empty (blank) status +func (snapshot *Snapshot) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Snapshot_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (snapshot *Snapshot) Owner() *genruntime.ResourceReference { + if snapshot.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(snapshot.Spec) + return snapshot.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (snapshot *Snapshot) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Snapshot_STATUS); ok { + snapshot.Status = *st + return nil + } + + // Convert status to required version + var st Snapshot_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + snapshot.Status = st + return nil +} + +// AssignProperties_From_Snapshot populates our Snapshot from the provided source Snapshot +func (snapshot *Snapshot) AssignProperties_From_Snapshot(source *storage.Snapshot) error { + + // ObjectMeta + snapshot.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec Snapshot_Spec + err := spec.AssignProperties_From_Snapshot_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Snapshot_Spec() to populate field Spec") + } + snapshot.Spec = spec + + // Status + var status Snapshot_STATUS + err = status.AssignProperties_From_Snapshot_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Snapshot_STATUS() to populate field Status") + } + snapshot.Status = status + + // No error + return nil +} + +// AssignProperties_To_Snapshot populates the provided destination Snapshot from our Snapshot +func (snapshot *Snapshot) AssignProperties_To_Snapshot(destination *storage.Snapshot) error { + + // ObjectMeta + destination.ObjectMeta = *snapshot.ObjectMeta.DeepCopy() + + // Spec + var spec storage.Snapshot_Spec + err := snapshot.Spec.AssignProperties_To_Snapshot_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Snapshot_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.Snapshot_STATUS + err = snapshot.Status.AssignProperties_To_Snapshot_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Snapshot_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 (snapshot *Snapshot) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: snapshot.Spec.OriginalVersion(), + Kind: "Snapshot", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/snapshots/{snapshotName} +type SnapshotList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Snapshot `json:"items"` +} + +type Snapshot_Spec struct { + // +kubebuilder:validation:Pattern="^[^\\x00-\\x1F\\x7F]+$" + // 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"` + + // CompositionType: The composition type describes how the key-values within the snapshot are composed. The 'key' + // composition type ensures there are no two key-values containing the same key. The 'key_label' composition type ensures + // there are no two key-values containing the same key and label. + CompositionType *SnapshotProperties_CompositionType `json:"compositionType,omitempty"` + + // +kubebuilder:validation:Required + // +kubebuilder:validation:MaxItems=3 + // +kubebuilder:validation:MinItems=1 + // Filters: A list of filters used to filter the key-values included in the snapshot. + Filters []KeyValueFilter `json:"filters,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *SnapshotOperatorSpec `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 appconfiguration.azure.com/ConfigurationStore resource + Owner *genruntime.KnownResourceReference `group:"appconfiguration.azure.com" json:"owner,omitempty" kind:"ConfigurationStore"` + + // +kubebuilder:validation:Maximum=7776000 + // +kubebuilder:validation:Minimum=3600 + // RetentionPeriod: The amount of time, in seconds, that a snapshot will remain in the archived state before expiring. This + // property is only writable during the creation of a snapshot. If not specified, the default lifetime of key-value + // revisions will be used. + RetentionPeriod *int `json:"retentionPeriod,omitempty"` + + // Tags: The tags of the snapshot. NOTE: These are data plane tags, not Azure Resource Manager (ARM) tags. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMTransformer = &Snapshot_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (snapshot *Snapshot_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if snapshot == nil { + return nil, nil + } + result := &arm.Snapshot_Spec{} + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if snapshot.CompositionType != nil || + snapshot.Filters != nil || + snapshot.RetentionPeriod != nil || + snapshot.Tags != nil { + result.Properties = &arm.SnapshotProperties{} + } + if snapshot.CompositionType != nil { + var temp string + temp = string(*snapshot.CompositionType) + compositionType := arm.SnapshotProperties_CompositionType(temp) + result.Properties.CompositionType = &compositionType + } + for _, item := range snapshot.Filters { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.Properties.Filters = append(result.Properties.Filters, *item_ARM.(*arm.KeyValueFilter)) + } + if snapshot.RetentionPeriod != nil { + retentionPeriod := *snapshot.RetentionPeriod + result.Properties.RetentionPeriod = &retentionPeriod + } + if snapshot.Tags != nil { + result.Properties.Tags = make(map[string]string, len(snapshot.Tags)) + for key, value := range snapshot.Tags { + result.Properties.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (snapshot *Snapshot_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Snapshot_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (snapshot *Snapshot_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Snapshot_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Snapshot_Spec, got %T", armInput) + } + + // Set property "AzureName": + snapshot.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "CompositionType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CompositionType != nil { + var temp string + temp = string(*typedInput.Properties.CompositionType) + compositionType := SnapshotProperties_CompositionType(temp) + snapshot.CompositionType = &compositionType + } + } + + // Set property "Filters": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.Filters { + var item1 KeyValueFilter + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + snapshot.Filters = append(snapshot.Filters, item1) + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + snapshot.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "RetentionPeriod": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RetentionPeriod != nil { + retentionPeriod := *typedInput.Properties.RetentionPeriod + snapshot.RetentionPeriod = &retentionPeriod + } + } + + // Set property "Tags": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Tags != nil { + snapshot.Tags = make(map[string]string, len(typedInput.Properties.Tags)) + for key, value := range typedInput.Properties.Tags { + snapshot.Tags[key] = value + } + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &Snapshot_Spec{} + +// ConvertSpecFrom populates our Snapshot_Spec from the provided source +func (snapshot *Snapshot_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.Snapshot_Spec) + if ok { + // Populate our instance from source + return snapshot.AssignProperties_From_Snapshot_Spec(src) + } + + // Convert to an intermediate form + src = &storage.Snapshot_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = snapshot.AssignProperties_From_Snapshot_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our Snapshot_Spec +func (snapshot *Snapshot_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.Snapshot_Spec) + if ok { + // Populate destination from our instance + return snapshot.AssignProperties_To_Snapshot_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.Snapshot_Spec{} + err := snapshot.AssignProperties_To_Snapshot_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_Snapshot_Spec populates our Snapshot_Spec from the provided source Snapshot_Spec +func (snapshot *Snapshot_Spec) AssignProperties_From_Snapshot_Spec(source *storage.Snapshot_Spec) error { + + // AzureName + snapshot.AzureName = source.AzureName + + // CompositionType + if source.CompositionType != nil { + compositionType := *source.CompositionType + compositionTypeTemp := genruntime.ToEnum(compositionType, snapshotProperties_CompositionType_Values) + snapshot.CompositionType = &compositionTypeTemp + } else { + snapshot.CompositionType = nil + } + + // Filters + if source.Filters != nil { + filterList := make([]KeyValueFilter, len(source.Filters)) + for filterIndex, filterItem := range source.Filters { + var filter KeyValueFilter + err := filter.AssignProperties_From_KeyValueFilter(&filterItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyValueFilter() to populate field Filters") + } + filterList[filterIndex] = filter + } + snapshot.Filters = filterList + } else { + snapshot.Filters = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec SnapshotOperatorSpec + err := operatorSpec.AssignProperties_From_SnapshotOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_SnapshotOperatorSpec() to populate field OperatorSpec") + } + snapshot.OperatorSpec = &operatorSpec + } else { + snapshot.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + snapshot.Owner = &owner + } else { + snapshot.Owner = nil + } + + // RetentionPeriod + snapshot.RetentionPeriod = genruntime.ClonePointerToInt(source.RetentionPeriod) + + // Tags + snapshot.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // No error + return nil +} + +// AssignProperties_To_Snapshot_Spec populates the provided destination Snapshot_Spec from our Snapshot_Spec +func (snapshot *Snapshot_Spec) AssignProperties_To_Snapshot_Spec(destination *storage.Snapshot_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = snapshot.AzureName + + // CompositionType + if snapshot.CompositionType != nil { + compositionType := string(*snapshot.CompositionType) + destination.CompositionType = &compositionType + } else { + destination.CompositionType = nil + } + + // Filters + if snapshot.Filters != nil { + filterList := make([]storage.KeyValueFilter, len(snapshot.Filters)) + for filterIndex, filterItem := range snapshot.Filters { + var filter storage.KeyValueFilter + err := filterItem.AssignProperties_To_KeyValueFilter(&filter) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyValueFilter() to populate field Filters") + } + filterList[filterIndex] = filter + } + destination.Filters = filterList + } else { + destination.Filters = nil + } + + // OperatorSpec + if snapshot.OperatorSpec != nil { + var operatorSpec storage.SnapshotOperatorSpec + err := snapshot.OperatorSpec.AssignProperties_To_SnapshotOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_SnapshotOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = snapshot.OriginalVersion() + + // Owner + if snapshot.Owner != nil { + owner := snapshot.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // RetentionPeriod + destination.RetentionPeriod = genruntime.ClonePointerToInt(snapshot.RetentionPeriod) + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(snapshot.Tags) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Snapshot_STATUS populates our Snapshot_Spec from the provided source Snapshot_STATUS +func (snapshot *Snapshot_Spec) Initialize_From_Snapshot_STATUS(source *Snapshot_STATUS) error { + + // CompositionType + if source.CompositionType != nil { + compositionType := genruntime.ToEnum(string(*source.CompositionType), snapshotProperties_CompositionType_Values) + snapshot.CompositionType = &compositionType + } else { + snapshot.CompositionType = nil + } + + // Filters + if source.Filters != nil { + filterList := make([]KeyValueFilter, len(source.Filters)) + for filterIndex, filterItem := range source.Filters { + var filter KeyValueFilter + err := filter.Initialize_From_KeyValueFilter_STATUS(&filterItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_KeyValueFilter_STATUS() to populate field Filters") + } + filterList[filterIndex] = filter + } + snapshot.Filters = filterList + } else { + snapshot.Filters = nil + } + + // RetentionPeriod + snapshot.RetentionPeriod = genruntime.ClonePointerToInt(source.RetentionPeriod) + + // Tags + snapshot.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (snapshot *Snapshot_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (snapshot *Snapshot_Spec) SetAzureName(azureName string) { snapshot.AzureName = azureName } + +type Snapshot_STATUS struct { + // CompositionType: The composition type describes how the key-values within the snapshot are composed. The 'key' + // composition type ensures there are no two key-values containing the same key. The 'key_label' composition type ensures + // there are no two key-values containing the same key and label. + CompositionType *SnapshotProperties_CompositionType_STATUS `json:"compositionType,omitempty"` + + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // Created: The time that the snapshot was created. + Created *string `json:"created,omitempty"` + + // Etag: A value representing the current state of the snapshot. + Etag *string `json:"etag,omitempty"` + + // Expires: The time that the snapshot will expire. + Expires *string `json:"expires,omitempty"` + + // Filters: A list of filters used to filter the key-values included in the snapshot. + Filters []KeyValueFilter_STATUS `json:"filters,omitempty"` + + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // ItemsCount: The amount of key-values in the snapshot. + ItemsCount *int `json:"itemsCount,omitempty"` + + // Name: The name of the snapshot. + Name *string `json:"name,omitempty"` + + // ProvisioningState: The provisioning state of the snapshot. + ProvisioningState *SnapshotProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // RetentionPeriod: The amount of time, in seconds, that a snapshot will remain in the archived state before expiring. This + // property is only writable during the creation of a snapshot. If not specified, the default lifetime of key-value + // revisions will be used. + RetentionPeriod *int `json:"retentionPeriod,omitempty"` + + // Size: The size in bytes of the snapshot. + Size *int `json:"size,omitempty"` + + // Status: The current status of the snapshot. + Status *SnapshotProperties_Status_STATUS `json:"status,omitempty"` + + // Tags: The tags of the snapshot. NOTE: These are data plane tags, not Azure Resource Manager (ARM) tags. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Snapshot_STATUS{} + +// ConvertStatusFrom populates our Snapshot_STATUS from the provided source +func (snapshot *Snapshot_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.Snapshot_STATUS) + if ok { + // Populate our instance from source + return snapshot.AssignProperties_From_Snapshot_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.Snapshot_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = snapshot.AssignProperties_From_Snapshot_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our Snapshot_STATUS +func (snapshot *Snapshot_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.Snapshot_STATUS) + if ok { + // Populate destination from our instance + return snapshot.AssignProperties_To_Snapshot_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.Snapshot_STATUS{} + err := snapshot.AssignProperties_To_Snapshot_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 = &Snapshot_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (snapshot *Snapshot_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Snapshot_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (snapshot *Snapshot_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Snapshot_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Snapshot_STATUS, got %T", armInput) + } + + // Set property "CompositionType": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CompositionType != nil { + var temp string + temp = string(*typedInput.Properties.CompositionType) + compositionType := SnapshotProperties_CompositionType_STATUS(temp) + snapshot.CompositionType = &compositionType + } + } + + // no assignment for property "Conditions" + + // Set property "Created": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Created != nil { + created := *typedInput.Properties.Created + snapshot.Created = &created + } + } + + // Set property "Etag": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Etag != nil { + etag := *typedInput.Properties.Etag + snapshot.Etag = &etag + } + } + + // Set property "Expires": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Expires != nil { + expires := *typedInput.Properties.Expires + snapshot.Expires = &expires + } + } + + // Set property "Filters": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.Filters { + var item1 KeyValueFilter_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + snapshot.Filters = append(snapshot.Filters, item1) + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + snapshot.Id = &id + } + + // Set property "ItemsCount": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ItemsCount != nil { + itemsCount := *typedInput.Properties.ItemsCount + snapshot.ItemsCount = &itemsCount + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + snapshot.Name = &name + } + + // Set property "ProvisioningState": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ProvisioningState != nil { + var temp string + temp = string(*typedInput.Properties.ProvisioningState) + provisioningState := SnapshotProperties_ProvisioningState_STATUS(temp) + snapshot.ProvisioningState = &provisioningState + } + } + + // Set property "RetentionPeriod": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RetentionPeriod != nil { + retentionPeriod := *typedInput.Properties.RetentionPeriod + snapshot.RetentionPeriod = &retentionPeriod + } + } + + // Set property "Size": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Size != nil { + size := *typedInput.Properties.Size + snapshot.Size = &size + } + } + + // Set property "Status": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Status != nil { + var temp string + temp = string(*typedInput.Properties.Status) + status := SnapshotProperties_Status_STATUS(temp) + snapshot.Status = &status + } + } + + // Set property "Tags": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Tags != nil { + snapshot.Tags = make(map[string]string, len(typedInput.Properties.Tags)) + for key, value := range typedInput.Properties.Tags { + snapshot.Tags[key] = value + } + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + snapshot.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_Snapshot_STATUS populates our Snapshot_STATUS from the provided source Snapshot_STATUS +func (snapshot *Snapshot_STATUS) AssignProperties_From_Snapshot_STATUS(source *storage.Snapshot_STATUS) error { + + // CompositionType + if source.CompositionType != nil { + compositionType := *source.CompositionType + compositionTypeTemp := genruntime.ToEnum(compositionType, snapshotProperties_CompositionType_STATUS_Values) + snapshot.CompositionType = &compositionTypeTemp + } else { + snapshot.CompositionType = nil + } + + // Conditions + snapshot.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Created + snapshot.Created = genruntime.ClonePointerToString(source.Created) + + // Etag + snapshot.Etag = genruntime.ClonePointerToString(source.Etag) + + // Expires + snapshot.Expires = genruntime.ClonePointerToString(source.Expires) + + // Filters + if source.Filters != nil { + filterList := make([]KeyValueFilter_STATUS, len(source.Filters)) + for filterIndex, filterItem := range source.Filters { + var filter KeyValueFilter_STATUS + err := filter.AssignProperties_From_KeyValueFilter_STATUS(&filterItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_KeyValueFilter_STATUS() to populate field Filters") + } + filterList[filterIndex] = filter + } + snapshot.Filters = filterList + } else { + snapshot.Filters = nil + } + + // Id + snapshot.Id = genruntime.ClonePointerToString(source.Id) + + // ItemsCount + snapshot.ItemsCount = genruntime.ClonePointerToInt(source.ItemsCount) + + // Name + snapshot.Name = genruntime.ClonePointerToString(source.Name) + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, snapshotProperties_ProvisioningState_STATUS_Values) + snapshot.ProvisioningState = &provisioningStateTemp + } else { + snapshot.ProvisioningState = nil + } + + // RetentionPeriod + snapshot.RetentionPeriod = genruntime.ClonePointerToInt(source.RetentionPeriod) + + // Size + snapshot.Size = genruntime.ClonePointerToInt(source.Size) + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, snapshotProperties_Status_STATUS_Values) + snapshot.Status = &statusTemp + } else { + snapshot.Status = nil + } + + // Tags + snapshot.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + snapshot.Type = genruntime.ClonePointerToString(source.Type) + + // No error + return nil +} + +// AssignProperties_To_Snapshot_STATUS populates the provided destination Snapshot_STATUS from our Snapshot_STATUS +func (snapshot *Snapshot_STATUS) AssignProperties_To_Snapshot_STATUS(destination *storage.Snapshot_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // CompositionType + if snapshot.CompositionType != nil { + compositionType := string(*snapshot.CompositionType) + destination.CompositionType = &compositionType + } else { + destination.CompositionType = nil + } + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(snapshot.Conditions) + + // Created + destination.Created = genruntime.ClonePointerToString(snapshot.Created) + + // Etag + destination.Etag = genruntime.ClonePointerToString(snapshot.Etag) + + // Expires + destination.Expires = genruntime.ClonePointerToString(snapshot.Expires) + + // Filters + if snapshot.Filters != nil { + filterList := make([]storage.KeyValueFilter_STATUS, len(snapshot.Filters)) + for filterIndex, filterItem := range snapshot.Filters { + var filter storage.KeyValueFilter_STATUS + err := filterItem.AssignProperties_To_KeyValueFilter_STATUS(&filter) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_KeyValueFilter_STATUS() to populate field Filters") + } + filterList[filterIndex] = filter + } + destination.Filters = filterList + } else { + destination.Filters = nil + } + + // Id + destination.Id = genruntime.ClonePointerToString(snapshot.Id) + + // ItemsCount + destination.ItemsCount = genruntime.ClonePointerToInt(snapshot.ItemsCount) + + // Name + destination.Name = genruntime.ClonePointerToString(snapshot.Name) + + // ProvisioningState + if snapshot.ProvisioningState != nil { + provisioningState := string(*snapshot.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // RetentionPeriod + destination.RetentionPeriod = genruntime.ClonePointerToInt(snapshot.RetentionPeriod) + + // Size + destination.Size = genruntime.ClonePointerToInt(snapshot.Size) + + // Status + if snapshot.Status != nil { + status := string(*snapshot.Status) + destination.Status = &status + } else { + destination.Status = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(snapshot.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(snapshot.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Enables filtering of key-values. +type KeyValueFilter struct { + // +kubebuilder:validation:Required + // Key: Filters key-values by their key field. + Key *string `json:"key,omitempty"` + + // Label: Filters key-values by their label field. + Label *string `json:"label,omitempty"` +} + +var _ genruntime.ARMTransformer = &KeyValueFilter{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (filter *KeyValueFilter) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if filter == nil { + return nil, nil + } + result := &arm.KeyValueFilter{} + + // Set property "Key": + if filter.Key != nil { + key := *filter.Key + result.Key = &key + } + + // Set property "Label": + if filter.Label != nil { + label := *filter.Label + result.Label = &label + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (filter *KeyValueFilter) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.KeyValueFilter{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (filter *KeyValueFilter) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.KeyValueFilter) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.KeyValueFilter, got %T", armInput) + } + + // Set property "Key": + if typedInput.Key != nil { + key := *typedInput.Key + filter.Key = &key + } + + // Set property "Label": + if typedInput.Label != nil { + label := *typedInput.Label + filter.Label = &label + } + + // No error + return nil +} + +// AssignProperties_From_KeyValueFilter populates our KeyValueFilter from the provided source KeyValueFilter +func (filter *KeyValueFilter) AssignProperties_From_KeyValueFilter(source *storage.KeyValueFilter) error { + + // Key + filter.Key = genruntime.ClonePointerToString(source.Key) + + // Label + filter.Label = genruntime.ClonePointerToString(source.Label) + + // No error + return nil +} + +// AssignProperties_To_KeyValueFilter populates the provided destination KeyValueFilter from our KeyValueFilter +func (filter *KeyValueFilter) AssignProperties_To_KeyValueFilter(destination *storage.KeyValueFilter) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Key + destination.Key = genruntime.ClonePointerToString(filter.Key) + + // Label + destination.Label = genruntime.ClonePointerToString(filter.Label) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_KeyValueFilter_STATUS populates our KeyValueFilter from the provided source KeyValueFilter_STATUS +func (filter *KeyValueFilter) Initialize_From_KeyValueFilter_STATUS(source *KeyValueFilter_STATUS) error { + + // Key + filter.Key = genruntime.ClonePointerToString(source.Key) + + // Label + filter.Label = genruntime.ClonePointerToString(source.Label) + + // No error + return nil +} + +// Enables filtering of key-values. +type KeyValueFilter_STATUS struct { + // +kubebuilder:validation:Required + // Key: Filters key-values by their key field. + Key *string `json:"key,omitempty"` + + // Label: Filters key-values by their label field. + Label *string `json:"label,omitempty"` +} + +var _ genruntime.FromARMConverter = &KeyValueFilter_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (filter *KeyValueFilter_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.KeyValueFilter_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (filter *KeyValueFilter_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.KeyValueFilter_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.KeyValueFilter_STATUS, got %T", armInput) + } + + // Set property "Key": + if typedInput.Key != nil { + key := *typedInput.Key + filter.Key = &key + } + + // Set property "Label": + if typedInput.Label != nil { + label := *typedInput.Label + filter.Label = &label + } + + // No error + return nil +} + +// AssignProperties_From_KeyValueFilter_STATUS populates our KeyValueFilter_STATUS from the provided source KeyValueFilter_STATUS +func (filter *KeyValueFilter_STATUS) AssignProperties_From_KeyValueFilter_STATUS(source *storage.KeyValueFilter_STATUS) error { + + // Key + filter.Key = genruntime.ClonePointerToString(source.Key) + + // Label + filter.Label = genruntime.ClonePointerToString(source.Label) + + // No error + return nil +} + +// AssignProperties_To_KeyValueFilter_STATUS populates the provided destination KeyValueFilter_STATUS from our KeyValueFilter_STATUS +func (filter *KeyValueFilter_STATUS) AssignProperties_To_KeyValueFilter_STATUS(destination *storage.KeyValueFilter_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Key + destination.Key = genruntime.ClonePointerToString(filter.Key) + + // Label + destination.Label = genruntime.ClonePointerToString(filter.Label) + + // 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 SnapshotOperatorSpec 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_SnapshotOperatorSpec populates our SnapshotOperatorSpec from the provided source SnapshotOperatorSpec +func (operator *SnapshotOperatorSpec) AssignProperties_From_SnapshotOperatorSpec(source *storage.SnapshotOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + 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 { + 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_SnapshotOperatorSpec populates the provided destination SnapshotOperatorSpec from our SnapshotOperatorSpec +func (operator *SnapshotOperatorSpec) AssignProperties_To_SnapshotOperatorSpec(destination *storage.SnapshotOperatorSpec) 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 { + 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 { + 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 +} + +// +kubebuilder:validation:Enum={"Key","Key_Label"} +type SnapshotProperties_CompositionType string + +const ( + SnapshotProperties_CompositionType_Key = SnapshotProperties_CompositionType("Key") + SnapshotProperties_CompositionType_Key_Label = SnapshotProperties_CompositionType("Key_Label") +) + +// Mapping from string to SnapshotProperties_CompositionType +var snapshotProperties_CompositionType_Values = map[string]SnapshotProperties_CompositionType{ + "key": SnapshotProperties_CompositionType_Key, + "key_label": SnapshotProperties_CompositionType_Key_Label, +} + +type SnapshotProperties_CompositionType_STATUS string + +const ( + SnapshotProperties_CompositionType_STATUS_Key = SnapshotProperties_CompositionType_STATUS("Key") + SnapshotProperties_CompositionType_STATUS_Key_Label = SnapshotProperties_CompositionType_STATUS("Key_Label") +) + +// Mapping from string to SnapshotProperties_CompositionType_STATUS +var snapshotProperties_CompositionType_STATUS_Values = map[string]SnapshotProperties_CompositionType_STATUS{ + "key": SnapshotProperties_CompositionType_STATUS_Key, + "key_label": SnapshotProperties_CompositionType_STATUS_Key_Label, +} + +type SnapshotProperties_ProvisioningState_STATUS string + +const ( + SnapshotProperties_ProvisioningState_STATUS_Canceled = SnapshotProperties_ProvisioningState_STATUS("Canceled") + SnapshotProperties_ProvisioningState_STATUS_Creating = SnapshotProperties_ProvisioningState_STATUS("Creating") + SnapshotProperties_ProvisioningState_STATUS_Deleting = SnapshotProperties_ProvisioningState_STATUS("Deleting") + SnapshotProperties_ProvisioningState_STATUS_Failed = SnapshotProperties_ProvisioningState_STATUS("Failed") + SnapshotProperties_ProvisioningState_STATUS_Succeeded = SnapshotProperties_ProvisioningState_STATUS("Succeeded") + SnapshotProperties_ProvisioningState_STATUS_Updating = SnapshotProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to SnapshotProperties_ProvisioningState_STATUS +var snapshotProperties_ProvisioningState_STATUS_Values = map[string]SnapshotProperties_ProvisioningState_STATUS{ + "canceled": SnapshotProperties_ProvisioningState_STATUS_Canceled, + "creating": SnapshotProperties_ProvisioningState_STATUS_Creating, + "deleting": SnapshotProperties_ProvisioningState_STATUS_Deleting, + "failed": SnapshotProperties_ProvisioningState_STATUS_Failed, + "succeeded": SnapshotProperties_ProvisioningState_STATUS_Succeeded, + "updating": SnapshotProperties_ProvisioningState_STATUS_Updating, +} + +type SnapshotProperties_Status_STATUS string + +const ( + SnapshotProperties_Status_STATUS_Archived = SnapshotProperties_Status_STATUS("Archived") + SnapshotProperties_Status_STATUS_Failed = SnapshotProperties_Status_STATUS("Failed") + SnapshotProperties_Status_STATUS_Provisioning = SnapshotProperties_Status_STATUS("Provisioning") + SnapshotProperties_Status_STATUS_Ready = SnapshotProperties_Status_STATUS("Ready") +) + +// Mapping from string to SnapshotProperties_Status_STATUS +var snapshotProperties_Status_STATUS_Values = map[string]SnapshotProperties_Status_STATUS{ + "archived": SnapshotProperties_Status_STATUS_Archived, + "failed": SnapshotProperties_Status_STATUS_Failed, + "provisioning": SnapshotProperties_Status_STATUS_Provisioning, + "ready": SnapshotProperties_Status_STATUS_Ready, +} + +func init() { + SchemeBuilder.Register(&Snapshot{}, &SnapshotList{}) +} diff --git a/v2/api/appconfiguration/v20240601/snapshot_types_gen_test.go b/v2/api/appconfiguration/v20240601/snapshot_types_gen_test.go new file mode 100644 index 00000000000..70b13b49e1a --- /dev/null +++ b/v2/api/appconfiguration/v20240601/snapshot_types_gen_test.go @@ -0,0 +1,731 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v20240601 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/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_KeyValueFilter_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyValueFilter to KeyValueFilter via AssignProperties_To_KeyValueFilter & AssignProperties_From_KeyValueFilter returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyValueFilter, KeyValueFilterGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyValueFilter tests if a specific instance of KeyValueFilter can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyValueFilter(subject KeyValueFilter) 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.KeyValueFilter + err := copied.AssignProperties_To_KeyValueFilter(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyValueFilter + err = actual.AssignProperties_From_KeyValueFilter(&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_KeyValueFilter_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 KeyValueFilter via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueFilter, KeyValueFilterGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueFilter runs a test to see if a specific instance of KeyValueFilter round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueFilter(subject KeyValueFilter) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueFilter + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValueFilter instances for property testing - lazily instantiated by KeyValueFilterGenerator() +var keyValueFilterGenerator gopter.Gen + +// KeyValueFilterGenerator returns a generator of KeyValueFilter instances for property testing. +func KeyValueFilterGenerator() gopter.Gen { + if keyValueFilterGenerator != nil { + return keyValueFilterGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueFilter(generators) + keyValueFilterGenerator = gen.Struct(reflect.TypeOf(KeyValueFilter{}), generators) + + return keyValueFilterGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueFilter is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueFilter(gens map[string]gopter.Gen) { + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyValueFilter_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from KeyValueFilter_STATUS to KeyValueFilter_STATUS via AssignProperties_To_KeyValueFilter_STATUS & AssignProperties_From_KeyValueFilter_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForKeyValueFilter_STATUS, KeyValueFilter_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForKeyValueFilter_STATUS tests if a specific instance of KeyValueFilter_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForKeyValueFilter_STATUS(subject KeyValueFilter_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.KeyValueFilter_STATUS + err := copied.AssignProperties_To_KeyValueFilter_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual KeyValueFilter_STATUS + err = actual.AssignProperties_From_KeyValueFilter_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_KeyValueFilter_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 KeyValueFilter_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueFilter_STATUS, KeyValueFilter_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueFilter_STATUS runs a test to see if a specific instance of KeyValueFilter_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueFilter_STATUS(subject KeyValueFilter_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueFilter_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 KeyValueFilter_STATUS instances for property testing - lazily instantiated by +// KeyValueFilter_STATUSGenerator() +var keyValueFilter_STATUSGenerator gopter.Gen + +// KeyValueFilter_STATUSGenerator returns a generator of KeyValueFilter_STATUS instances for property testing. +func KeyValueFilter_STATUSGenerator() gopter.Gen { + if keyValueFilter_STATUSGenerator != nil { + return keyValueFilter_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS(generators) + keyValueFilter_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValueFilter_STATUS{}), generators) + + return keyValueFilter_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS(gens map[string]gopter.Gen) { + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Snapshot_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 Snapshot to hub returns original", + prop.ForAll(RunResourceConversionTestForSnapshot, SnapshotGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForSnapshot tests if a specific instance of Snapshot round trips to the hub storage version and back losslessly +func RunResourceConversionTestForSnapshot(subject Snapshot) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.Snapshot + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual Snapshot + 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_Snapshot_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Snapshot to Snapshot via AssignProperties_To_Snapshot & AssignProperties_From_Snapshot returns original", + prop.ForAll(RunPropertyAssignmentTestForSnapshot, SnapshotGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSnapshot tests if a specific instance of Snapshot can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSnapshot(subject Snapshot) 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.Snapshot + err := copied.AssignProperties_To_Snapshot(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Snapshot + err = actual.AssignProperties_From_Snapshot(&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_Snapshot_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 Snapshot via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot, SnapshotGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot runs a test to see if a specific instance of Snapshot round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot(subject Snapshot) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Snapshot instances for property testing - lazily instantiated by SnapshotGenerator() +var snapshotGenerator gopter.Gen + +// SnapshotGenerator returns a generator of Snapshot instances for property testing. +func SnapshotGenerator() gopter.Gen { + if snapshotGenerator != nil { + return snapshotGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSnapshot(generators) + snapshotGenerator = gen.Struct(reflect.TypeOf(Snapshot{}), generators) + + return snapshotGenerator +} + +// AddRelatedPropertyGeneratorsForSnapshot is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot(gens map[string]gopter.Gen) { + gens["Spec"] = Snapshot_SpecGenerator() + gens["Status"] = Snapshot_STATUSGenerator() +} + +func Test_SnapshotOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SnapshotOperatorSpec to SnapshotOperatorSpec via AssignProperties_To_SnapshotOperatorSpec & AssignProperties_From_SnapshotOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForSnapshotOperatorSpec, SnapshotOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSnapshotOperatorSpec tests if a specific instance of SnapshotOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSnapshotOperatorSpec(subject SnapshotOperatorSpec) 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.SnapshotOperatorSpec + err := copied.AssignProperties_To_SnapshotOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SnapshotOperatorSpec + err = actual.AssignProperties_From_SnapshotOperatorSpec(&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_SnapshotOperatorSpec_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 SnapshotOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshotOperatorSpec, SnapshotOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshotOperatorSpec runs a test to see if a specific instance of SnapshotOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshotOperatorSpec(subject SnapshotOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SnapshotOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SnapshotOperatorSpec instances for property testing - lazily instantiated by +// SnapshotOperatorSpecGenerator() +var snapshotOperatorSpecGenerator gopter.Gen + +// SnapshotOperatorSpecGenerator returns a generator of SnapshotOperatorSpec instances for property testing. +func SnapshotOperatorSpecGenerator() gopter.Gen { + if snapshotOperatorSpecGenerator != nil { + return snapshotOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + snapshotOperatorSpecGenerator = gen.Struct(reflect.TypeOf(SnapshotOperatorSpec{}), generators) + + return snapshotOperatorSpecGenerator +} + +func Test_Snapshot_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Snapshot_STATUS to Snapshot_STATUS via AssignProperties_To_Snapshot_STATUS & AssignProperties_From_Snapshot_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForSnapshot_STATUS, Snapshot_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSnapshot_STATUS tests if a specific instance of Snapshot_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSnapshot_STATUS(subject Snapshot_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.Snapshot_STATUS + err := copied.AssignProperties_To_Snapshot_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Snapshot_STATUS + err = actual.AssignProperties_From_Snapshot_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_Snapshot_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 Snapshot_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot_STATUS, Snapshot_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot_STATUS runs a test to see if a specific instance of Snapshot_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot_STATUS(subject Snapshot_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot_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 Snapshot_STATUS instances for property testing - lazily instantiated by Snapshot_STATUSGenerator() +var snapshot_STATUSGenerator gopter.Gen + +// Snapshot_STATUSGenerator returns a generator of Snapshot_STATUS instances for property testing. +// We first initialize snapshot_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 Snapshot_STATUSGenerator() gopter.Gen { + if snapshot_STATUSGenerator != nil { + return snapshot_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_STATUS(generators) + snapshot_STATUSGenerator = gen.Struct(reflect.TypeOf(Snapshot_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_STATUS(generators) + AddRelatedPropertyGeneratorsForSnapshot_STATUS(generators) + snapshot_STATUSGenerator = gen.Struct(reflect.TypeOf(Snapshot_STATUS{}), generators) + + return snapshot_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshot_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshot_STATUS(gens map[string]gopter.Gen) { + gens["CompositionType"] = gen.PtrOf(gen.OneConstOf(SnapshotProperties_CompositionType_STATUS_Key, SnapshotProperties_CompositionType_STATUS_Key_Label)) + gens["Created"] = gen.PtrOf(gen.AlphaString()) + gens["Etag"] = gen.PtrOf(gen.AlphaString()) + gens["Expires"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["ItemsCount"] = gen.PtrOf(gen.Int()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + SnapshotProperties_ProvisioningState_STATUS_Canceled, + SnapshotProperties_ProvisioningState_STATUS_Creating, + SnapshotProperties_ProvisioningState_STATUS_Deleting, + SnapshotProperties_ProvisioningState_STATUS_Failed, + SnapshotProperties_ProvisioningState_STATUS_Succeeded, + SnapshotProperties_ProvisioningState_STATUS_Updating)) + gens["RetentionPeriod"] = gen.PtrOf(gen.Int()) + gens["Size"] = gen.PtrOf(gen.Int()) + gens["Status"] = gen.PtrOf(gen.OneConstOf( + SnapshotProperties_Status_STATUS_Archived, + SnapshotProperties_Status_STATUS_Failed, + SnapshotProperties_Status_STATUS_Provisioning, + SnapshotProperties_Status_STATUS_Ready)) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshot_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot_STATUS(gens map[string]gopter.Gen) { + gens["Filters"] = gen.SliceOf(KeyValueFilter_STATUSGenerator()) +} + +func Test_Snapshot_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Snapshot_Spec to Snapshot_Spec via AssignProperties_To_Snapshot_Spec & AssignProperties_From_Snapshot_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForSnapshot_Spec, Snapshot_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSnapshot_Spec tests if a specific instance of Snapshot_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForSnapshot_Spec(subject Snapshot_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.Snapshot_Spec + err := copied.AssignProperties_To_Snapshot_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Snapshot_Spec + err = actual.AssignProperties_From_Snapshot_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_Snapshot_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 Snapshot_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot_Spec, Snapshot_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot_Spec runs a test to see if a specific instance of Snapshot_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot_Spec(subject Snapshot_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot_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 Snapshot_Spec instances for property testing - lazily instantiated by Snapshot_SpecGenerator() +var snapshot_SpecGenerator gopter.Gen + +// Snapshot_SpecGenerator returns a generator of Snapshot_Spec instances for property testing. +// We first initialize snapshot_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 Snapshot_SpecGenerator() gopter.Gen { + if snapshot_SpecGenerator != nil { + return snapshot_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_Spec(generators) + snapshot_SpecGenerator = gen.Struct(reflect.TypeOf(Snapshot_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_Spec(generators) + AddRelatedPropertyGeneratorsForSnapshot_Spec(generators) + snapshot_SpecGenerator = gen.Struct(reflect.TypeOf(Snapshot_Spec{}), generators) + + return snapshot_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshot_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshot_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["CompositionType"] = gen.PtrOf(gen.OneConstOf(SnapshotProperties_CompositionType_Key, SnapshotProperties_CompositionType_Key_Label)) + gens["RetentionPeriod"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshot_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot_Spec(gens map[string]gopter.Gen) { + gens["Filters"] = gen.SliceOf(KeyValueFilterGenerator()) + gens["OperatorSpec"] = gen.PtrOf(SnapshotOperatorSpecGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/storage/configuration_store_types_gen.go b/v2/api/appconfiguration/v20240601/storage/configuration_store_types_gen.go new file mode 100644 index 00000000000..179de7a33ee --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/configuration_store_types_gen.go @@ -0,0 +1,432 @@ +// 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=appconfiguration.azure.com,resources=configurationstores,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=appconfiguration.azure.com,resources={configurationstores/status,configurationstores/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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 v20240601.ConfigurationStore +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName} +type ConfigurationStore struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec ConfigurationStore_Spec `json:"spec,omitempty"` + Status ConfigurationStore_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &ConfigurationStore{} + +// GetConditions returns the conditions of the resource +func (store *ConfigurationStore) GetConditions() conditions.Conditions { + return store.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (store *ConfigurationStore) SetConditions(conditions conditions.Conditions) { + store.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &ConfigurationStore{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (store *ConfigurationStore) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if store.Spec.OperatorSpec == nil { + return nil + } + return store.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &ConfigurationStore{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (store *ConfigurationStore) SecretDestinationExpressions() []*core.DestinationExpression { + if store.Spec.OperatorSpec == nil { + return nil + } + return store.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &ConfigurationStore{} + +// AzureName returns the Azure name of the resource +func (store *ConfigurationStore) AzureName() string { + return store.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (store ConfigurationStore) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (store *ConfigurationStore) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (store *ConfigurationStore) GetSpec() genruntime.ConvertibleSpec { + return &store.Spec +} + +// GetStatus returns the status of this resource +func (store *ConfigurationStore) GetStatus() genruntime.ConvertibleStatus { + return &store.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (store *ConfigurationStore) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores" +func (store *ConfigurationStore) GetType() string { + return "Microsoft.AppConfiguration/configurationStores" +} + +// NewEmptyStatus returns a new empty (blank) status +func (store *ConfigurationStore) NewEmptyStatus() genruntime.ConvertibleStatus { + return &ConfigurationStore_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (store *ConfigurationStore) Owner() *genruntime.ResourceReference { + if store.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(store.Spec) + return store.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (store *ConfigurationStore) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*ConfigurationStore_STATUS); ok { + store.Status = *st + return nil + } + + // Convert status to required version + var st ConfigurationStore_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + store.Status = st + return nil +} + +// Hub marks that this ConfigurationStore is the hub type for conversion +func (store *ConfigurationStore) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (store *ConfigurationStore) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: store.Spec.OriginalVersion, + Kind: "ConfigurationStore", + } +} + +// +kubebuilder:object:root=true +// Storage version of v20240601.ConfigurationStore +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName} +type ConfigurationStoreList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []ConfigurationStore `json:"items"` +} + +// Storage version of v20240601.APIVersion +// +kubebuilder:validation:Enum={"2024-06-01"} +type APIVersion string + +const APIVersion_Value = APIVersion("2024-06-01") + +// Storage version of v20240601.ConfigurationStore_Spec +type ConfigurationStore_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"` + CreateMode *string `json:"createMode,omitempty"` + DataPlaneProxy *DataPlaneProxyProperties `json:"dataPlaneProxy,omitempty"` + DefaultKeyValueRevisionRetentionPeriodInSeconds *int `json:"defaultKeyValueRevisionRetentionPeriodInSeconds,omitempty"` + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + EnablePurgeProtection *bool `json:"enablePurgeProtection,omitempty"` + Encryption *EncryptionProperties `json:"encryption,omitempty"` + Identity *ResourceIdentity `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + OperatorSpec *ConfigurationStoreOperatorSpec `json:"operatorSpec,omitempty"` + OriginalVersion string `json:"originalVersion,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a resources.azure.com/ResourceGroup resource + Owner *genruntime.KnownResourceReference `group:"resources.azure.com" json:"owner,omitempty" kind:"ResourceGroup"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + Sku *Sku `json:"sku,omitempty"` + SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &ConfigurationStore_Spec{} + +// ConvertSpecFrom populates our ConfigurationStore_Spec from the provided source +func (store *ConfigurationStore_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == store { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(store) +} + +// ConvertSpecTo populates the provided destination from our ConfigurationStore_Spec +func (store *ConfigurationStore_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == store { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(store) +} + +// Storage version of v20240601.ConfigurationStore_STATUS +// The configuration store along with all resource properties. The Configuration Store will have all information to begin +// utilizing it. +type ConfigurationStore_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + CreateMode *string `json:"createMode,omitempty"` + CreationDate *string `json:"creationDate,omitempty"` + DataPlaneProxy *DataPlaneProxyProperties_STATUS `json:"dataPlaneProxy,omitempty"` + DefaultKeyValueRevisionRetentionPeriodInSeconds *int `json:"defaultKeyValueRevisionRetentionPeriodInSeconds,omitempty"` + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + EnablePurgeProtection *bool `json:"enablePurgeProtection,omitempty"` + Encryption *EncryptionProperties_STATUS `json:"encryption,omitempty"` + Endpoint *string `json:"endpoint,omitempty"` + Id *string `json:"id,omitempty"` + Identity *ResourceIdentity_STATUS `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + PrivateEndpointConnections []PrivateEndpointConnectionReference_STATUS `json:"privateEndpointConnections,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + Sku *Sku_STATUS `json:"sku,omitempty"` + SoftDeleteRetentionInDays *int `json:"softDeleteRetentionInDays,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &ConfigurationStore_STATUS{} + +// ConvertStatusFrom populates our ConfigurationStore_STATUS from the provided source +func (store *ConfigurationStore_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == store { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(store) +} + +// ConvertStatusTo populates the provided destination from our ConfigurationStore_STATUS +func (store *ConfigurationStore_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == store { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(store) +} + +// Storage version of v20240601.ConfigurationStoreOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type ConfigurationStoreOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` + Secrets *ConfigurationStoreOperatorSecrets `json:"secrets,omitempty"` +} + +// Storage version of v20240601.DataPlaneProxyProperties +// The data plane proxy settings for a configuration store. +type DataPlaneProxyProperties struct { + AuthenticationMode *string `json:"authenticationMode,omitempty"` + PrivateLinkDelegation *string `json:"privateLinkDelegation,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.DataPlaneProxyProperties_STATUS +// The data plane proxy settings for a configuration store. +type DataPlaneProxyProperties_STATUS struct { + AuthenticationMode *string `json:"authenticationMode,omitempty"` + PrivateLinkDelegation *string `json:"privateLinkDelegation,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.EncryptionProperties +// The encryption settings for a configuration store. +type EncryptionProperties struct { + KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.EncryptionProperties_STATUS +// The encryption settings for a configuration store. +type EncryptionProperties_STATUS struct { + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.PrivateEndpointConnectionReference_STATUS +// A reference to a related private endpoint connection. +type PrivateEndpointConnectionReference_STATUS struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + PrivateEndpoint *PrivateEndpoint_STATUS `json:"privateEndpoint,omitempty"` + PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState_STATUS `json:"privateLinkServiceConnectionState,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v20240601.ResourceIdentity +// An identity that can be associated with a resource. +type ResourceIdentity struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v20240601.ResourceIdentity_STATUS +// An identity that can be associated with a resource. +type ResourceIdentity_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]UserIdentity_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v20240601.Sku +// Describes a configuration store SKU. +type Sku struct { + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.Sku_STATUS +// Describes a configuration store SKU. +type Sku_STATUS struct { + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.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 v20240601.ConfigurationStoreOperatorSecrets +type ConfigurationStoreOperatorSecrets struct { + PrimaryConnectionString *genruntime.SecretDestination `json:"primaryConnectionString,omitempty"` + PrimaryKey *genruntime.SecretDestination `json:"primaryKey,omitempty"` + PrimaryKeyID *genruntime.SecretDestination `json:"primaryKeyID,omitempty"` + PrimaryReadOnlyConnectionString *genruntime.SecretDestination `json:"primaryReadOnlyConnectionString,omitempty"` + PrimaryReadOnlyKey *genruntime.SecretDestination `json:"primaryReadOnlyKey,omitempty"` + PrimaryReadOnlyKeyID *genruntime.SecretDestination `json:"primaryReadOnlyKeyID,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecondaryConnectionString *genruntime.SecretDestination `json:"secondaryConnectionString,omitempty"` + SecondaryKey *genruntime.SecretDestination `json:"secondaryKey,omitempty"` + SecondaryKeyID *genruntime.SecretDestination `json:"secondaryKeyID,omitempty"` + SecondaryReadOnlyConnectionString *genruntime.SecretDestination `json:"secondaryReadOnlyConnectionString,omitempty"` + SecondaryReadOnlyKey *genruntime.SecretDestination `json:"secondaryReadOnlyKey,omitempty"` + SecondaryReadOnlyKeyID *genruntime.SecretDestination `json:"secondaryReadOnlyKeyID,omitempty"` +} + +// Storage version of v20240601.KeyVaultProperties +// Settings concerning key vault encryption for a configuration store. +type KeyVaultProperties struct { + IdentityClientId *string `json:"identityClientId,omitempty"` + KeyIdentifier *string `json:"keyIdentifier,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.KeyVaultProperties_STATUS +// Settings concerning key vault encryption for a configuration store. +type KeyVaultProperties_STATUS struct { + IdentityClientId *string `json:"identityClientId,omitempty"` + KeyIdentifier *string `json:"keyIdentifier,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.PrivateEndpoint_STATUS +// Private endpoint which a connection belongs to. +type PrivateEndpoint_STATUS struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.PrivateLinkServiceConnectionState_STATUS +// The state of a private link service connection. +type PrivateLinkServiceConnectionState_STATUS struct { + ActionsRequired *string `json:"actionsRequired,omitempty"` + Description *string `json:"description,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v20240601.UserAssignedIdentityDetails +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Reference genruntime.ResourceReference `armReference:"Reference" json:"reference,omitempty"` +} + +// Storage version of v20240601.UserIdentity_STATUS +// A resource identity that is managed by the user of the service. +type UserIdentity_STATUS struct { + ClientId *string `json:"clientId,omitempty"` + PrincipalId *string `json:"principalId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +func init() { + SchemeBuilder.Register(&ConfigurationStore{}, &ConfigurationStoreList{}) +} diff --git a/v2/api/appconfiguration/v20240601/storage/configuration_store_types_gen_test.go b/v2/api/appconfiguration/v20240601/storage/configuration_store_types_gen_test.go new file mode 100644 index 00000000000..e0e85b5b045 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/configuration_store_types_gen_test.go @@ -0,0 +1,1407 @@ +// 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_ConfigurationStore_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 ConfigurationStore via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore, ConfigurationStoreGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore runs a test to see if a specific instance of ConfigurationStore round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore(subject ConfigurationStore) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStore instances for property testing - lazily instantiated by ConfigurationStoreGenerator() +var configurationStoreGenerator gopter.Gen + +// ConfigurationStoreGenerator returns a generator of ConfigurationStore instances for property testing. +func ConfigurationStoreGenerator() gopter.Gen { + if configurationStoreGenerator != nil { + return configurationStoreGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForConfigurationStore(generators) + configurationStoreGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore{}), generators) + + return configurationStoreGenerator +} + +// AddRelatedPropertyGeneratorsForConfigurationStore is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore(gens map[string]gopter.Gen) { + gens["Spec"] = ConfigurationStore_SpecGenerator() + gens["Status"] = ConfigurationStore_STATUSGenerator() +} + +func Test_ConfigurationStoreOperatorSecrets_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 ConfigurationStoreOperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStoreOperatorSecrets, ConfigurationStoreOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStoreOperatorSecrets runs a test to see if a specific instance of ConfigurationStoreOperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStoreOperatorSecrets(subject ConfigurationStoreOperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStoreOperatorSecrets + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStoreOperatorSecrets instances for property testing - lazily instantiated by +// ConfigurationStoreOperatorSecretsGenerator() +var configurationStoreOperatorSecretsGenerator gopter.Gen + +// ConfigurationStoreOperatorSecretsGenerator returns a generator of ConfigurationStoreOperatorSecrets instances for property testing. +func ConfigurationStoreOperatorSecretsGenerator() gopter.Gen { + if configurationStoreOperatorSecretsGenerator != nil { + return configurationStoreOperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + configurationStoreOperatorSecretsGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreOperatorSecrets{}), generators) + + return configurationStoreOperatorSecretsGenerator +} + +func Test_ConfigurationStoreOperatorSpec_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 ConfigurationStoreOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStoreOperatorSpec, ConfigurationStoreOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStoreOperatorSpec runs a test to see if a specific instance of ConfigurationStoreOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStoreOperatorSpec(subject ConfigurationStoreOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStoreOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ConfigurationStoreOperatorSpec instances for property testing - lazily instantiated by +// ConfigurationStoreOperatorSpecGenerator() +var configurationStoreOperatorSpecGenerator gopter.Gen + +// ConfigurationStoreOperatorSpecGenerator returns a generator of ConfigurationStoreOperatorSpec instances for property testing. +func ConfigurationStoreOperatorSpecGenerator() gopter.Gen { + if configurationStoreOperatorSpecGenerator != nil { + return configurationStoreOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec(generators) + configurationStoreOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStoreOperatorSpec{}), generators) + + return configurationStoreOperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStoreOperatorSpec(gens map[string]gopter.Gen) { + gens["Secrets"] = gen.PtrOf(ConfigurationStoreOperatorSecretsGenerator()) +} + +func Test_ConfigurationStore_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 ConfigurationStore_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore_STATUS, ConfigurationStore_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore_STATUS runs a test to see if a specific instance of ConfigurationStore_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore_STATUS(subject ConfigurationStore_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore_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 ConfigurationStore_STATUS instances for property testing - lazily instantiated by +// ConfigurationStore_STATUSGenerator() +var configurationStore_STATUSGenerator gopter.Gen + +// ConfigurationStore_STATUSGenerator returns a generator of ConfigurationStore_STATUS instances for property testing. +// We first initialize configurationStore_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 ConfigurationStore_STATUSGenerator() gopter.Gen { + if configurationStore_STATUSGenerator != nil { + return configurationStore_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(generators) + configurationStore_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(generators) + AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(generators) + configurationStore_STATUSGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_STATUS{}), generators) + + return configurationStore_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStore_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStore_STATUS(gens map[string]gopter.Gen) { + gens["CreateMode"] = gen.PtrOf(gen.AlphaString()) + gens["CreationDate"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultKeyValueRevisionRetentionPeriodInSeconds"] = gen.PtrOf(gen.Int()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["EnablePurgeProtection"] = gen.PtrOf(gen.Bool()) + gens["Endpoint"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["SoftDeleteRetentionInDays"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStore_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore_STATUS(gens map[string]gopter.Gen) { + gens["DataPlaneProxy"] = gen.PtrOf(DataPlaneProxyProperties_STATUSGenerator()) + gens["Encryption"] = gen.PtrOf(EncryptionProperties_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(ResourceIdentity_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnectionReference_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_ConfigurationStore_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 ConfigurationStore_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForConfigurationStore_Spec, ConfigurationStore_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForConfigurationStore_Spec runs a test to see if a specific instance of ConfigurationStore_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForConfigurationStore_Spec(subject ConfigurationStore_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ConfigurationStore_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 ConfigurationStore_Spec instances for property testing - lazily instantiated by +// ConfigurationStore_SpecGenerator() +var configurationStore_SpecGenerator gopter.Gen + +// ConfigurationStore_SpecGenerator returns a generator of ConfigurationStore_Spec instances for property testing. +// We first initialize configurationStore_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 ConfigurationStore_SpecGenerator() gopter.Gen { + if configurationStore_SpecGenerator != nil { + return configurationStore_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_Spec(generators) + configurationStore_SpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForConfigurationStore_Spec(generators) + AddRelatedPropertyGeneratorsForConfigurationStore_Spec(generators) + configurationStore_SpecGenerator = gen.Struct(reflect.TypeOf(ConfigurationStore_Spec{}), generators) + + return configurationStore_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForConfigurationStore_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["CreateMode"] = gen.PtrOf(gen.AlphaString()) + gens["DefaultKeyValueRevisionRetentionPeriodInSeconds"] = gen.PtrOf(gen.Int()) + gens["DisableLocalAuth"] = gen.PtrOf(gen.Bool()) + gens["EnablePurgeProtection"] = gen.PtrOf(gen.Bool()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["SoftDeleteRetentionInDays"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForConfigurationStore_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForConfigurationStore_Spec(gens map[string]gopter.Gen) { + gens["DataPlaneProxy"] = gen.PtrOf(DataPlaneProxyPropertiesGenerator()) + gens["Encryption"] = gen.PtrOf(EncryptionPropertiesGenerator()) + gens["Identity"] = gen.PtrOf(ResourceIdentityGenerator()) + gens["OperatorSpec"] = gen.PtrOf(ConfigurationStoreOperatorSpecGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_DataPlaneProxyProperties_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 DataPlaneProxyProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneProxyProperties, DataPlaneProxyPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneProxyProperties runs a test to see if a specific instance of DataPlaneProxyProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneProxyProperties(subject DataPlaneProxyProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneProxyProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneProxyProperties instances for property testing - lazily instantiated by +// DataPlaneProxyPropertiesGenerator() +var dataPlaneProxyPropertiesGenerator gopter.Gen + +// DataPlaneProxyPropertiesGenerator returns a generator of DataPlaneProxyProperties instances for property testing. +func DataPlaneProxyPropertiesGenerator() gopter.Gen { + if dataPlaneProxyPropertiesGenerator != nil { + return dataPlaneProxyPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneProxyProperties(generators) + dataPlaneProxyPropertiesGenerator = gen.Struct(reflect.TypeOf(DataPlaneProxyProperties{}), generators) + + return dataPlaneProxyPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneProxyProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneProxyProperties(gens map[string]gopter.Gen) { + gens["AuthenticationMode"] = gen.PtrOf(gen.AlphaString()) + gens["PrivateLinkDelegation"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_DataPlaneProxyProperties_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 DataPlaneProxyProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneProxyProperties_STATUS, DataPlaneProxyProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneProxyProperties_STATUS runs a test to see if a specific instance of DataPlaneProxyProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneProxyProperties_STATUS(subject DataPlaneProxyProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneProxyProperties_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 DataPlaneProxyProperties_STATUS instances for property testing - lazily instantiated by +// DataPlaneProxyProperties_STATUSGenerator() +var dataPlaneProxyProperties_STATUSGenerator gopter.Gen + +// DataPlaneProxyProperties_STATUSGenerator returns a generator of DataPlaneProxyProperties_STATUS instances for property testing. +func DataPlaneProxyProperties_STATUSGenerator() gopter.Gen { + if dataPlaneProxyProperties_STATUSGenerator != nil { + return dataPlaneProxyProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS(generators) + dataPlaneProxyProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(DataPlaneProxyProperties_STATUS{}), generators) + + return dataPlaneProxyProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneProxyProperties_STATUS(gens map[string]gopter.Gen) { + gens["AuthenticationMode"] = gen.PtrOf(gen.AlphaString()) + gens["PrivateLinkDelegation"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_EncryptionProperties_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 EncryptionProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperties, EncryptionPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperties runs a test to see if a specific instance of EncryptionProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperties(subject EncryptionProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of EncryptionProperties instances for property testing - lazily instantiated by +// EncryptionPropertiesGenerator() +var encryptionPropertiesGenerator gopter.Gen + +// EncryptionPropertiesGenerator returns a generator of EncryptionProperties instances for property testing. +func EncryptionPropertiesGenerator() gopter.Gen { + if encryptionPropertiesGenerator != nil { + return encryptionPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForEncryptionProperties(generators) + encryptionPropertiesGenerator = gen.Struct(reflect.TypeOf(EncryptionProperties{}), generators) + + return encryptionPropertiesGenerator +} + +// AddRelatedPropertyGeneratorsForEncryptionProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperties(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) +} + +func Test_EncryptionProperties_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 EncryptionProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperties_STATUS, EncryptionProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperties_STATUS runs a test to see if a specific instance of EncryptionProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperties_STATUS(subject EncryptionProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperties_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 EncryptionProperties_STATUS instances for property testing - lazily instantiated by +// EncryptionProperties_STATUSGenerator() +var encryptionProperties_STATUSGenerator gopter.Gen + +// EncryptionProperties_STATUSGenerator returns a generator of EncryptionProperties_STATUS instances for property testing. +func EncryptionProperties_STATUSGenerator() gopter.Gen { + if encryptionProperties_STATUSGenerator != nil { + return encryptionProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(generators) + encryptionProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperties_STATUS{}), generators) + + return encryptionProperties_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperties_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) +} + +func Test_KeyVaultProperties_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 KeyVaultProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyVaultProperties, KeyVaultPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyVaultProperties runs a test to see if a specific instance of KeyVaultProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyVaultProperties(subject KeyVaultProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyVaultProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyVaultProperties instances for property testing - lazily instantiated by KeyVaultPropertiesGenerator() +var keyVaultPropertiesGenerator gopter.Gen + +// KeyVaultPropertiesGenerator returns a generator of KeyVaultProperties instances for property testing. +func KeyVaultPropertiesGenerator() gopter.Gen { + if keyVaultPropertiesGenerator != nil { + return keyVaultPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyVaultProperties(generators) + keyVaultPropertiesGenerator = gen.Struct(reflect.TypeOf(KeyVaultProperties{}), generators) + + return keyVaultPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForKeyVaultProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyVaultProperties(gens map[string]gopter.Gen) { + gens["IdentityClientId"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyVaultProperties_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 KeyVaultProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyVaultProperties_STATUS, KeyVaultProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyVaultProperties_STATUS runs a test to see if a specific instance of KeyVaultProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyVaultProperties_STATUS(subject KeyVaultProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyVaultProperties_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 KeyVaultProperties_STATUS instances for property testing - lazily instantiated by +// KeyVaultProperties_STATUSGenerator() +var keyVaultProperties_STATUSGenerator gopter.Gen + +// KeyVaultProperties_STATUSGenerator returns a generator of KeyVaultProperties_STATUS instances for property testing. +func KeyVaultProperties_STATUSGenerator() gopter.Gen { + if keyVaultProperties_STATUSGenerator != nil { + return keyVaultProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(generators) + keyVaultProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyVaultProperties_STATUS{}), generators) + + return keyVaultProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(gens map[string]gopter.Gen) { + gens["IdentityClientId"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS, PrivateEndpointConnectionReference_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS runs a test to see if a specific instance of PrivateEndpointConnectionReference_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnectionReference_STATUS(subject PrivateEndpointConnectionReference_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnectionReference_STATUSGenerator() +var privateEndpointConnectionReference_STATUSGenerator gopter.Gen + +// PrivateEndpointConnectionReference_STATUSGenerator returns a generator of PrivateEndpointConnectionReference_STATUS instances for property testing. +// We first initialize privateEndpointConnectionReference_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 PrivateEndpointConnectionReference_STATUSGenerator() gopter.Gen { + if privateEndpointConnectionReference_STATUSGenerator != nil { + return privateEndpointConnectionReference_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + privateEndpointConnectionReference_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionReference_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(generators) + privateEndpointConnectionReference_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnectionReference_STATUS{}), generators) + + return privateEndpointConnectionReference_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPrivateEndpointConnectionReference_STATUS(gens map[string]gopter.Gen) { + gens["PrivateEndpoint"] = gen.PtrOf(PrivateEndpoint_STATUSGenerator()) + gens["PrivateLinkServiceConnectionState"] = gen.PtrOf(PrivateLinkServiceConnectionState_STATUSGenerator()) +} + +func Test_PrivateEndpoint_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 PrivateEndpoint_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpoint_STATUS, PrivateEndpoint_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpoint_STATUS runs a test to see if a specific instance of PrivateEndpoint_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpoint_STATUS(subject PrivateEndpoint_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpoint_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 PrivateEndpoint_STATUS instances for property testing - lazily instantiated by +// PrivateEndpoint_STATUSGenerator() +var privateEndpoint_STATUSGenerator gopter.Gen + +// PrivateEndpoint_STATUSGenerator returns a generator of PrivateEndpoint_STATUS instances for property testing. +func PrivateEndpoint_STATUSGenerator() gopter.Gen { + if privateEndpoint_STATUSGenerator != nil { + return privateEndpoint_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS(generators) + privateEndpoint_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpoint_STATUS{}), generators) + + return privateEndpoint_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpoint_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_PrivateLinkServiceConnectionState_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 PrivateLinkServiceConnectionState_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS, PrivateLinkServiceConnectionState_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS runs a test to see if a specific instance of PrivateLinkServiceConnectionState_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateLinkServiceConnectionState_STATUS(subject PrivateLinkServiceConnectionState_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateLinkServiceConnectionState_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 PrivateLinkServiceConnectionState_STATUS instances for property testing - lazily instantiated by +// PrivateLinkServiceConnectionState_STATUSGenerator() +var privateLinkServiceConnectionState_STATUSGenerator gopter.Gen + +// PrivateLinkServiceConnectionState_STATUSGenerator returns a generator of PrivateLinkServiceConnectionState_STATUS instances for property testing. +func PrivateLinkServiceConnectionState_STATUSGenerator() gopter.Gen { + if privateLinkServiceConnectionState_STATUSGenerator != nil { + return privateLinkServiceConnectionState_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS(generators) + privateLinkServiceConnectionState_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateLinkServiceConnectionState_STATUS{}), generators) + + return privateLinkServiceConnectionState_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateLinkServiceConnectionState_STATUS(gens map[string]gopter.Gen) { + gens["ActionsRequired"] = gen.PtrOf(gen.AlphaString()) + gens["Description"] = gen.PtrOf(gen.AlphaString()) + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ResourceIdentity_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 ResourceIdentity via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceIdentity, ResourceIdentityGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceIdentity runs a test to see if a specific instance of ResourceIdentity round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceIdentity(subject ResourceIdentity) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceIdentity + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ResourceIdentity instances for property testing - lazily instantiated by ResourceIdentityGenerator() +var resourceIdentityGenerator gopter.Gen + +// ResourceIdentityGenerator returns a generator of ResourceIdentity instances for property testing. +// We first initialize resourceIdentityGenerator 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 ResourceIdentityGenerator() gopter.Gen { + if resourceIdentityGenerator != nil { + return resourceIdentityGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity(generators) + resourceIdentityGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity(generators) + AddRelatedPropertyGeneratorsForResourceIdentity(generators) + resourceIdentityGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity{}), generators) + + return resourceIdentityGenerator +} + +// AddIndependentPropertyGeneratorsForResourceIdentity is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForResourceIdentity is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceIdentity(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_ResourceIdentity_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 ResourceIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForResourceIdentity_STATUS, ResourceIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForResourceIdentity_STATUS runs a test to see if a specific instance of ResourceIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForResourceIdentity_STATUS(subject ResourceIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ResourceIdentity_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 ResourceIdentity_STATUS instances for property testing - lazily instantiated by +// ResourceIdentity_STATUSGenerator() +var resourceIdentity_STATUSGenerator gopter.Gen + +// ResourceIdentity_STATUSGenerator returns a generator of ResourceIdentity_STATUS instances for property testing. +// We first initialize resourceIdentity_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 ResourceIdentity_STATUSGenerator() gopter.Gen { + if resourceIdentity_STATUSGenerator != nil { + return resourceIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(generators) + resourceIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(generators) + AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(generators) + resourceIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(ResourceIdentity_STATUS{}), generators) + + return resourceIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForResourceIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForResourceIdentity_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForResourceIdentity_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserIdentity_STATUSGenerator()) +} + +func Test_Sku_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 Sku via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSku, SkuGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSku runs a test to see if a specific instance of Sku round trips to JSON and back losslessly +func RunJSONSerializationTestForSku(subject Sku) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Sku + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Sku instances for property testing - lazily instantiated by SkuGenerator() +var skuGenerator gopter.Gen + +// SkuGenerator returns a generator of Sku instances for property testing. +func SkuGenerator() gopter.Gen { + if skuGenerator != nil { + return skuGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSku(generators) + skuGenerator = gen.Struct(reflect.TypeOf(Sku{}), generators) + + return skuGenerator +} + +// AddIndependentPropertyGeneratorsForSku is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSku(gens map[string]gopter.Gen) { + gens["Name"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Sku_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 Sku_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSku_STATUS, Sku_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSku_STATUS runs a test to see if a specific instance of Sku_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSku_STATUS(subject Sku_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Sku_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 Sku_STATUS instances for property testing - lazily instantiated by Sku_STATUSGenerator() +var sku_STATUSGenerator gopter.Gen + +// Sku_STATUSGenerator returns a generator of Sku_STATUS instances for property testing. +func Sku_STATUSGenerator() gopter.Gen { + if sku_STATUSGenerator != nil { + return sku_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSku_STATUS(generators) + sku_STATUSGenerator = gen.Struct(reflect.TypeOf(Sku_STATUS{}), generators) + + return sku_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSku_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { + gens["Name"] = 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 +} + +func Test_UserIdentity_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 UserIdentity_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserIdentity_STATUS, UserIdentity_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserIdentity_STATUS runs a test to see if a specific instance of UserIdentity_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserIdentity_STATUS(subject UserIdentity_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserIdentity_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 UserIdentity_STATUS instances for property testing - lazily instantiated by +// UserIdentity_STATUSGenerator() +var userIdentity_STATUSGenerator gopter.Gen + +// UserIdentity_STATUSGenerator returns a generator of UserIdentity_STATUS instances for property testing. +func UserIdentity_STATUSGenerator() gopter.Gen { + if userIdentity_STATUSGenerator != nil { + return userIdentity_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserIdentity_STATUS(generators) + userIdentity_STATUSGenerator = gen.Struct(reflect.TypeOf(UserIdentity_STATUS{}), generators) + + return userIdentity_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserIdentity_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserIdentity_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/appconfiguration/v20240601/storage/groupversion_info_gen.go b/v2/api/appconfiguration/v20240601/storage/groupversion_info_gen.go new file mode 100644 index 00000000000..b6ffa9748f8 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/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 appconfiguration storage API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=appconfiguration.azure.com +// +versionName=v20240601storage +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: "appconfiguration.azure.com", Version: "v20240601storage"} + + // 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/appconfiguration/v20240601/storage/key_value_types_gen.go b/v2/api/appconfiguration/v20240601/storage/key_value_types_gen.go new file mode 100644 index 00000000000..ca12a9f8f1b --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/key_value_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=appconfiguration.azure.com,resources=keyvalues,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=appconfiguration.azure.com,resources={keyvalues/status,keyvalues/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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 v20240601.KeyValue +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/keyValues/{keyValueName} +type KeyValue struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec KeyValue_Spec `json:"spec,omitempty"` + Status KeyValue_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &KeyValue{} + +// GetConditions returns the conditions of the resource +func (value *KeyValue) GetConditions() conditions.Conditions { + return value.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (value *KeyValue) SetConditions(conditions conditions.Conditions) { + value.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &KeyValue{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (value *KeyValue) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if value.Spec.OperatorSpec == nil { + return nil + } + return value.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &KeyValue{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (value *KeyValue) SecretDestinationExpressions() []*core.DestinationExpression { + if value.Spec.OperatorSpec == nil { + return nil + } + return value.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &KeyValue{} + +// AzureName returns the Azure name of the resource +func (value *KeyValue) AzureName() string { + return value.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (value KeyValue) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (value *KeyValue) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (value *KeyValue) GetSpec() genruntime.ConvertibleSpec { + return &value.Spec +} + +// GetStatus returns the status of this resource +func (value *KeyValue) GetStatus() genruntime.ConvertibleStatus { + return &value.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (value *KeyValue) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/keyValues" +func (value *KeyValue) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/keyValues" +} + +// NewEmptyStatus returns a new empty (blank) status +func (value *KeyValue) NewEmptyStatus() genruntime.ConvertibleStatus { + return &KeyValue_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (value *KeyValue) Owner() *genruntime.ResourceReference { + if value.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(value.Spec) + return value.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (value *KeyValue) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*KeyValue_STATUS); ok { + value.Status = *st + return nil + } + + // Convert status to required version + var st KeyValue_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + value.Status = st + return nil +} + +// Hub marks that this KeyValue is the hub type for conversion +func (value *KeyValue) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (value *KeyValue) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: value.Spec.OriginalVersion, + Kind: "KeyValue", + } +} + +// +kubebuilder:object:root=true +// Storage version of v20240601.KeyValue +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/keyValues/{keyValueName} +type KeyValueList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []KeyValue `json:"items"` +} + +// Storage version of v20240601.KeyValue_Spec +type KeyValue_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"` + ContentType *string `json:"contentType,omitempty"` + OperatorSpec *KeyValueOperatorSpec `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 appconfiguration.azure.com/ConfigurationStore resource + Owner *genruntime.KnownResourceReference `group:"appconfiguration.azure.com" json:"owner,omitempty" kind:"ConfigurationStore"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &KeyValue_Spec{} + +// ConvertSpecFrom populates our KeyValue_Spec from the provided source +func (value *KeyValue_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == value { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(value) +} + +// ConvertSpecTo populates the provided destination from our KeyValue_Spec +func (value *KeyValue_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == value { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(value) +} + +// Storage version of v20240601.KeyValue_STATUS +type KeyValue_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + ContentType *string `json:"contentType,omitempty"` + ETag *string `json:"eTag,omitempty"` + Id *string `json:"id,omitempty"` + Key *string `json:"key,omitempty"` + Label *string `json:"label,omitempty"` + LastModified *string `json:"lastModified,omitempty"` + Locked *bool `json:"locked,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &KeyValue_STATUS{} + +// ConvertStatusFrom populates our KeyValue_STATUS from the provided source +func (value *KeyValue_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == value { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(value) +} + +// ConvertStatusTo populates the provided destination from our KeyValue_STATUS +func (value *KeyValue_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == value { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(value) +} + +// Storage version of v20240601.KeyValueOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type KeyValueOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&KeyValue{}, &KeyValueList{}) +} diff --git a/v2/api/appconfiguration/v20240601/storage/key_value_types_gen_test.go b/v2/api/appconfiguration/v20240601/storage/key_value_types_gen_test.go new file mode 100644 index 00000000000..378493d0dab --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/key_value_types_gen_test.go @@ -0,0 +1,286 @@ +// 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_KeyValue_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 KeyValue via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue, KeyValueGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue runs a test to see if a specific instance of KeyValue round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue(subject KeyValue) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValue instances for property testing - lazily instantiated by KeyValueGenerator() +var keyValueGenerator gopter.Gen + +// KeyValueGenerator returns a generator of KeyValue instances for property testing. +func KeyValueGenerator() gopter.Gen { + if keyValueGenerator != nil { + return keyValueGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForKeyValue(generators) + keyValueGenerator = gen.Struct(reflect.TypeOf(KeyValue{}), generators) + + return keyValueGenerator +} + +// AddRelatedPropertyGeneratorsForKeyValue is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForKeyValue(gens map[string]gopter.Gen) { + gens["Spec"] = KeyValue_SpecGenerator() + gens["Status"] = KeyValue_STATUSGenerator() +} + +func Test_KeyValueOperatorSpec_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 KeyValueOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueOperatorSpec, KeyValueOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueOperatorSpec runs a test to see if a specific instance of KeyValueOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueOperatorSpec(subject KeyValueOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValueOperatorSpec instances for property testing - lazily instantiated by +// KeyValueOperatorSpecGenerator() +var keyValueOperatorSpecGenerator gopter.Gen + +// KeyValueOperatorSpecGenerator returns a generator of KeyValueOperatorSpec instances for property testing. +func KeyValueOperatorSpecGenerator() gopter.Gen { + if keyValueOperatorSpecGenerator != nil { + return keyValueOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + keyValueOperatorSpecGenerator = gen.Struct(reflect.TypeOf(KeyValueOperatorSpec{}), generators) + + return keyValueOperatorSpecGenerator +} + +func Test_KeyValue_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 KeyValue_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue_STATUS, KeyValue_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue_STATUS runs a test to see if a specific instance of KeyValue_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue_STATUS(subject KeyValue_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue_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 KeyValue_STATUS instances for property testing - lazily instantiated by KeyValue_STATUSGenerator() +var keyValue_STATUSGenerator gopter.Gen + +// KeyValue_STATUSGenerator returns a generator of KeyValue_STATUS instances for property testing. +func KeyValue_STATUSGenerator() gopter.Gen { + if keyValue_STATUSGenerator != nil { + return keyValue_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_STATUS(generators) + keyValue_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValue_STATUS{}), generators) + + return keyValue_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValue_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValue_STATUS(gens map[string]gopter.Gen) { + gens["ContentType"] = gen.PtrOf(gen.AlphaString()) + gens["ETag"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) + gens["LastModified"] = gen.PtrOf(gen.AlphaString()) + gens["Locked"] = gen.PtrOf(gen.Bool()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyValue_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 KeyValue_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValue_Spec, KeyValue_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValue_Spec runs a test to see if a specific instance of KeyValue_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValue_Spec(subject KeyValue_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValue_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 KeyValue_Spec instances for property testing - lazily instantiated by KeyValue_SpecGenerator() +var keyValue_SpecGenerator gopter.Gen + +// KeyValue_SpecGenerator returns a generator of KeyValue_Spec instances for property testing. +// We first initialize keyValue_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 KeyValue_SpecGenerator() gopter.Gen { + if keyValue_SpecGenerator != nil { + return keyValue_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_Spec(generators) + keyValue_SpecGenerator = gen.Struct(reflect.TypeOf(KeyValue_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValue_Spec(generators) + AddRelatedPropertyGeneratorsForKeyValue_Spec(generators) + keyValue_SpecGenerator = gen.Struct(reflect.TypeOf(KeyValue_Spec{}), generators) + + return keyValue_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValue_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValue_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["ContentType"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForKeyValue_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForKeyValue_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(KeyValueOperatorSpecGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/storage/replica_types_gen.go b/v2/api/appconfiguration/v20240601/storage/replica_types_gen.go new file mode 100644 index 00000000000..f51b48b04d2 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/replica_types_gen.go @@ -0,0 +1,249 @@ +// 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=appconfiguration.azure.com,resources=replicas,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=appconfiguration.azure.com,resources={replicas/status,replicas/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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 v20240601.Replica +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/replicas/{replicaName} +type Replica struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Replica_Spec `json:"spec,omitempty"` + Status Replica_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Replica{} + +// GetConditions returns the conditions of the resource +func (replica *Replica) GetConditions() conditions.Conditions { + return replica.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (replica *Replica) SetConditions(conditions conditions.Conditions) { + replica.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &Replica{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (replica *Replica) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Replica{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (replica *Replica) SecretDestinationExpressions() []*core.DestinationExpression { + if replica.Spec.OperatorSpec == nil { + return nil + } + return replica.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &Replica{} + +// AzureName returns the Azure name of the resource +func (replica *Replica) AzureName() string { + return replica.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (replica Replica) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (replica *Replica) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (replica *Replica) GetSpec() genruntime.ConvertibleSpec { + return &replica.Spec +} + +// GetStatus returns the status of this resource +func (replica *Replica) GetStatus() genruntime.ConvertibleStatus { + return &replica.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (replica *Replica) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/replicas" +func (replica *Replica) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/replicas" +} + +// NewEmptyStatus returns a new empty (blank) status +func (replica *Replica) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Replica_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (replica *Replica) Owner() *genruntime.ResourceReference { + if replica.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(replica.Spec) + return replica.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (replica *Replica) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Replica_STATUS); ok { + replica.Status = *st + return nil + } + + // Convert status to required version + var st Replica_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + replica.Status = st + return nil +} + +// Hub marks that this Replica is the hub type for conversion +func (replica *Replica) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (replica *Replica) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: replica.Spec.OriginalVersion, + Kind: "Replica", + } +} + +// +kubebuilder:object:root=true +// Storage version of v20240601.Replica +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/replicas/{replicaName} +type ReplicaList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Replica `json:"items"` +} + +// Storage version of v20240601.Replica_Spec +type Replica_Spec struct { + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + Location *string `json:"location,omitempty"` + OperatorSpec *ReplicaOperatorSpec `json:"operatorSpec,omitempty"` + OriginalVersion string `json:"originalVersion,omitempty"` + + // +kubebuilder:validation:Required + // Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also + // controls the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a + // reference to a appconfiguration.azure.com/ConfigurationStore resource + Owner *genruntime.KnownResourceReference `group:"appconfiguration.azure.com" json:"owner,omitempty" kind:"ConfigurationStore"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &Replica_Spec{} + +// ConvertSpecFrom populates our Replica_Spec from the provided source +func (replica *Replica_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(replica) +} + +// ConvertSpecTo populates the provided destination from our Replica_Spec +func (replica *Replica_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(replica) +} + +// Storage version of v20240601.Replica_STATUS +type Replica_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + Endpoint *string `json:"endpoint,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Replica_STATUS{} + +// ConvertStatusFrom populates our Replica_STATUS from the provided source +func (replica *Replica_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(replica) +} + +// ConvertStatusTo populates the provided destination from our Replica_STATUS +func (replica *Replica_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == replica { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(replica) +} + +// Storage version of v20240601.ReplicaOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type ReplicaOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&Replica{}, &ReplicaList{}) +} diff --git a/v2/api/appconfiguration/v20240601/storage/replica_types_gen_test.go b/v2/api/appconfiguration/v20240601/storage/replica_types_gen_test.go new file mode 100644 index 00000000000..c675c4407ca --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/replica_types_gen_test.go @@ -0,0 +1,289 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_Replica_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 20 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica, ReplicaGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica runs a test to see if a specific instance of Replica round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica(subject Replica) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica instances for property testing - lazily instantiated by ReplicaGenerator() +var replicaGenerator gopter.Gen + +// ReplicaGenerator returns a generator of Replica instances for property testing. +func ReplicaGenerator() gopter.Gen { + if replicaGenerator != nil { + return replicaGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForReplica(generators) + replicaGenerator = gen.Struct(reflect.TypeOf(Replica{}), generators) + + return replicaGenerator +} + +// AddRelatedPropertyGeneratorsForReplica is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica(gens map[string]gopter.Gen) { + gens["Spec"] = Replica_SpecGenerator() + gens["Status"] = Replica_STATUSGenerator() +} + +func Test_ReplicaOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of ReplicaOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicaOperatorSpec, ReplicaOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicaOperatorSpec runs a test to see if a specific instance of ReplicaOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicaOperatorSpec(subject ReplicaOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicaOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicaOperatorSpec instances for property testing - lazily instantiated by +// ReplicaOperatorSpecGenerator() +var replicaOperatorSpecGenerator gopter.Gen + +// ReplicaOperatorSpecGenerator returns a generator of ReplicaOperatorSpec instances for property testing. +func ReplicaOperatorSpecGenerator() gopter.Gen { + if replicaOperatorSpecGenerator != nil { + return replicaOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + replicaOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ReplicaOperatorSpec{}), generators) + + return replicaOperatorSpecGenerator +} + +func Test_Replica_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_STATUS, Replica_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_STATUS runs a test to see if a specific instance of Replica_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_STATUS(subject Replica_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_STATUS instances for property testing - lazily instantiated by Replica_STATUSGenerator() +var replica_STATUSGenerator gopter.Gen + +// Replica_STATUSGenerator returns a generator of Replica_STATUS instances for property testing. +// We first initialize replica_STATUSGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_STATUSGenerator() gopter.Gen { + if replica_STATUSGenerator != nil { + return replica_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_STATUS(generators) + AddRelatedPropertyGeneratorsForReplica_STATUS(generators) + replica_STATUSGenerator = gen.Struct(reflect.TypeOf(Replica_STATUS{}), generators) + + return replica_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["Endpoint"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForReplica_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_STATUS(gens map[string]gopter.Gen) { + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_Replica_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of Replica_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplica_Spec, Replica_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplica_Spec runs a test to see if a specific instance of Replica_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForReplica_Spec(subject Replica_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Replica_Spec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Replica_Spec instances for property testing - lazily instantiated by Replica_SpecGenerator() +var replica_SpecGenerator gopter.Gen + +// Replica_SpecGenerator returns a generator of Replica_Spec instances for property testing. +// We first initialize replica_SpecGenerator with a simplified generator based on the +// fields with primitive types then replacing it with a more complex one that also handles complex fields +// to ensure any cycles in the object graph properly terminate. +func Replica_SpecGenerator() gopter.Gen { + if replica_SpecGenerator != nil { + return replica_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplica_Spec(generators) + AddRelatedPropertyGeneratorsForReplica_Spec(generators) + replica_SpecGenerator = gen.Struct(reflect.TypeOf(Replica_Spec{}), generators) + + return replica_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() +} + +// AddRelatedPropertyGeneratorsForReplica_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplica_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(ReplicaOperatorSpecGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/storage/snapshot_types_gen.go b/v2/api/appconfiguration/v20240601/storage/snapshot_types_gen.go new file mode 100644 index 00000000000..f7bd1d9185a --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/snapshot_types_gen.go @@ -0,0 +1,274 @@ +// 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=appconfiguration.azure.com,resources=snapshots,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=appconfiguration.azure.com,resources={snapshots/status,snapshots/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:resource:categories={azure,appconfiguration} +// +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 v20240601.Snapshot +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/snapshots/{snapshotName} +type Snapshot struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Snapshot_Spec `json:"spec,omitempty"` + Status Snapshot_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Snapshot{} + +// GetConditions returns the conditions of the resource +func (snapshot *Snapshot) GetConditions() conditions.Conditions { + return snapshot.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (snapshot *Snapshot) SetConditions(conditions conditions.Conditions) { + snapshot.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &Snapshot{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (snapshot *Snapshot) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if snapshot.Spec.OperatorSpec == nil { + return nil + } + return snapshot.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Snapshot{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (snapshot *Snapshot) SecretDestinationExpressions() []*core.DestinationExpression { + if snapshot.Spec.OperatorSpec == nil { + return nil + } + return snapshot.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &Snapshot{} + +// AzureName returns the Azure name of the resource +func (snapshot *Snapshot) AzureName() string { + return snapshot.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2024-06-01" +func (snapshot Snapshot) GetAPIVersion() string { + return "2024-06-01" +} + +// GetResourceScope returns the scope of the resource +func (snapshot *Snapshot) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (snapshot *Snapshot) GetSpec() genruntime.ConvertibleSpec { + return &snapshot.Spec +} + +// GetStatus returns the status of this resource +func (snapshot *Snapshot) GetStatus() genruntime.ConvertibleStatus { + return &snapshot.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (snapshot *Snapshot) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.AppConfiguration/configurationStores/snapshots" +func (snapshot *Snapshot) GetType() string { + return "Microsoft.AppConfiguration/configurationStores/snapshots" +} + +// NewEmptyStatus returns a new empty (blank) status +func (snapshot *Snapshot) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Snapshot_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (snapshot *Snapshot) Owner() *genruntime.ResourceReference { + if snapshot.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(snapshot.Spec) + return snapshot.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (snapshot *Snapshot) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Snapshot_STATUS); ok { + snapshot.Status = *st + return nil + } + + // Convert status to required version + var st Snapshot_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + snapshot.Status = st + return nil +} + +// Hub marks that this Snapshot is the hub type for conversion +func (snapshot *Snapshot) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (snapshot *Snapshot) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: snapshot.Spec.OriginalVersion, + Kind: "Snapshot", + } +} + +// +kubebuilder:object:root=true +// Storage version of v20240601.Snapshot +// Generator information: +// - Generated from: /appconfiguration/resource-manager/Microsoft.AppConfiguration/AppConfiguration/stable/2024-06-01/appconfiguration.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppConfiguration/configurationStores/{configStoreName}/snapshots/{snapshotName} +type SnapshotList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Snapshot `json:"items"` +} + +// Storage version of v20240601.Snapshot_Spec +type Snapshot_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"` + CompositionType *string `json:"compositionType,omitempty"` + Filters []KeyValueFilter `json:"filters,omitempty"` + OperatorSpec *SnapshotOperatorSpec `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 appconfiguration.azure.com/ConfigurationStore resource + Owner *genruntime.KnownResourceReference `group:"appconfiguration.azure.com" json:"owner,omitempty" kind:"ConfigurationStore"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + RetentionPeriod *int `json:"retentionPeriod,omitempty"` + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &Snapshot_Spec{} + +// ConvertSpecFrom populates our Snapshot_Spec from the provided source +func (snapshot *Snapshot_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == snapshot { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(snapshot) +} + +// ConvertSpecTo populates the provided destination from our Snapshot_Spec +func (snapshot *Snapshot_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == snapshot { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(snapshot) +} + +// Storage version of v20240601.Snapshot_STATUS +type Snapshot_STATUS struct { + CompositionType *string `json:"compositionType,omitempty"` + Conditions []conditions.Condition `json:"conditions,omitempty"` + Created *string `json:"created,omitempty"` + Etag *string `json:"etag,omitempty"` + Expires *string `json:"expires,omitempty"` + Filters []KeyValueFilter_STATUS `json:"filters,omitempty"` + Id *string `json:"id,omitempty"` + ItemsCount *int `json:"itemsCount,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + RetentionPeriod *int `json:"retentionPeriod,omitempty"` + Size *int `json:"size,omitempty"` + Status *string `json:"status,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Snapshot_STATUS{} + +// ConvertStatusFrom populates our Snapshot_STATUS from the provided source +func (snapshot *Snapshot_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == snapshot { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(snapshot) +} + +// ConvertStatusTo populates the provided destination from our Snapshot_STATUS +func (snapshot *Snapshot_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == snapshot { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(snapshot) +} + +// Storage version of v20240601.KeyValueFilter +// Enables filtering of key-values. +type KeyValueFilter struct { + Key *string `json:"key,omitempty"` + Label *string `json:"label,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.KeyValueFilter_STATUS +// Enables filtering of key-values. +type KeyValueFilter_STATUS struct { + Key *string `json:"key,omitempty"` + Label *string `json:"label,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v20240601.SnapshotOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type SnapshotOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&Snapshot{}, &SnapshotList{}) +} diff --git a/v2/api/appconfiguration/v20240601/storage/snapshot_types_gen_test.go b/v2/api/appconfiguration/v20240601/storage/snapshot_types_gen_test.go new file mode 100644 index 00000000000..5bced7fc2f8 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/snapshot_types_gen_test.go @@ -0,0 +1,426 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_KeyValueFilter_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 KeyValueFilter via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueFilter, KeyValueFilterGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueFilter runs a test to see if a specific instance of KeyValueFilter round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueFilter(subject KeyValueFilter) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueFilter + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of KeyValueFilter instances for property testing - lazily instantiated by KeyValueFilterGenerator() +var keyValueFilterGenerator gopter.Gen + +// KeyValueFilterGenerator returns a generator of KeyValueFilter instances for property testing. +func KeyValueFilterGenerator() gopter.Gen { + if keyValueFilterGenerator != nil { + return keyValueFilterGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueFilter(generators) + keyValueFilterGenerator = gen.Struct(reflect.TypeOf(KeyValueFilter{}), generators) + + return keyValueFilterGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueFilter is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueFilter(gens map[string]gopter.Gen) { + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_KeyValueFilter_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 KeyValueFilter_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForKeyValueFilter_STATUS, KeyValueFilter_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForKeyValueFilter_STATUS runs a test to see if a specific instance of KeyValueFilter_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForKeyValueFilter_STATUS(subject KeyValueFilter_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual KeyValueFilter_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 KeyValueFilter_STATUS instances for property testing - lazily instantiated by +// KeyValueFilter_STATUSGenerator() +var keyValueFilter_STATUSGenerator gopter.Gen + +// KeyValueFilter_STATUSGenerator returns a generator of KeyValueFilter_STATUS instances for property testing. +func KeyValueFilter_STATUSGenerator() gopter.Gen { + if keyValueFilter_STATUSGenerator != nil { + return keyValueFilter_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS(generators) + keyValueFilter_STATUSGenerator = gen.Struct(reflect.TypeOf(KeyValueFilter_STATUS{}), generators) + + return keyValueFilter_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForKeyValueFilter_STATUS(gens map[string]gopter.Gen) { + gens["Key"] = gen.PtrOf(gen.AlphaString()) + gens["Label"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Snapshot_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 Snapshot via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot, SnapshotGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot runs a test to see if a specific instance of Snapshot round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot(subject Snapshot) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Snapshot instances for property testing - lazily instantiated by SnapshotGenerator() +var snapshotGenerator gopter.Gen + +// SnapshotGenerator returns a generator of Snapshot instances for property testing. +func SnapshotGenerator() gopter.Gen { + if snapshotGenerator != nil { + return snapshotGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSnapshot(generators) + snapshotGenerator = gen.Struct(reflect.TypeOf(Snapshot{}), generators) + + return snapshotGenerator +} + +// AddRelatedPropertyGeneratorsForSnapshot is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot(gens map[string]gopter.Gen) { + gens["Spec"] = Snapshot_SpecGenerator() + gens["Status"] = Snapshot_STATUSGenerator() +} + +func Test_SnapshotOperatorSpec_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 SnapshotOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshotOperatorSpec, SnapshotOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshotOperatorSpec runs a test to see if a specific instance of SnapshotOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshotOperatorSpec(subject SnapshotOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SnapshotOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SnapshotOperatorSpec instances for property testing - lazily instantiated by +// SnapshotOperatorSpecGenerator() +var snapshotOperatorSpecGenerator gopter.Gen + +// SnapshotOperatorSpecGenerator returns a generator of SnapshotOperatorSpec instances for property testing. +func SnapshotOperatorSpecGenerator() gopter.Gen { + if snapshotOperatorSpecGenerator != nil { + return snapshotOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + snapshotOperatorSpecGenerator = gen.Struct(reflect.TypeOf(SnapshotOperatorSpec{}), generators) + + return snapshotOperatorSpecGenerator +} + +func Test_Snapshot_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 Snapshot_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot_STATUS, Snapshot_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot_STATUS runs a test to see if a specific instance of Snapshot_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot_STATUS(subject Snapshot_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot_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 Snapshot_STATUS instances for property testing - lazily instantiated by Snapshot_STATUSGenerator() +var snapshot_STATUSGenerator gopter.Gen + +// Snapshot_STATUSGenerator returns a generator of Snapshot_STATUS instances for property testing. +// We first initialize snapshot_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 Snapshot_STATUSGenerator() gopter.Gen { + if snapshot_STATUSGenerator != nil { + return snapshot_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_STATUS(generators) + snapshot_STATUSGenerator = gen.Struct(reflect.TypeOf(Snapshot_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_STATUS(generators) + AddRelatedPropertyGeneratorsForSnapshot_STATUS(generators) + snapshot_STATUSGenerator = gen.Struct(reflect.TypeOf(Snapshot_STATUS{}), generators) + + return snapshot_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshot_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshot_STATUS(gens map[string]gopter.Gen) { + gens["CompositionType"] = gen.PtrOf(gen.AlphaString()) + gens["Created"] = gen.PtrOf(gen.AlphaString()) + gens["Etag"] = gen.PtrOf(gen.AlphaString()) + gens["Expires"] = gen.PtrOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["ItemsCount"] = gen.PtrOf(gen.Int()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["RetentionPeriod"] = gen.PtrOf(gen.Int()) + gens["Size"] = gen.PtrOf(gen.Int()) + gens["Status"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshot_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot_STATUS(gens map[string]gopter.Gen) { + gens["Filters"] = gen.SliceOf(KeyValueFilter_STATUSGenerator()) +} + +func Test_Snapshot_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 Snapshot_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSnapshot_Spec, Snapshot_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSnapshot_Spec runs a test to see if a specific instance of Snapshot_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForSnapshot_Spec(subject Snapshot_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Snapshot_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 Snapshot_Spec instances for property testing - lazily instantiated by Snapshot_SpecGenerator() +var snapshot_SpecGenerator gopter.Gen + +// Snapshot_SpecGenerator returns a generator of Snapshot_Spec instances for property testing. +// We first initialize snapshot_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 Snapshot_SpecGenerator() gopter.Gen { + if snapshot_SpecGenerator != nil { + return snapshot_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_Spec(generators) + snapshot_SpecGenerator = gen.Struct(reflect.TypeOf(Snapshot_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSnapshot_Spec(generators) + AddRelatedPropertyGeneratorsForSnapshot_Spec(generators) + snapshot_SpecGenerator = gen.Struct(reflect.TypeOf(Snapshot_Spec{}), generators) + + return snapshot_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForSnapshot_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSnapshot_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["CompositionType"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["RetentionPeriod"] = gen.PtrOf(gen.Int()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForSnapshot_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSnapshot_Spec(gens map[string]gopter.Gen) { + gens["Filters"] = gen.SliceOf(KeyValueFilterGenerator()) + gens["OperatorSpec"] = gen.PtrOf(SnapshotOperatorSpecGenerator()) +} diff --git a/v2/api/appconfiguration/v20240601/storage/structure.txt b/v2/api/appconfiguration/v20240601/storage/structure.txt new file mode 100644 index 00000000000..17f9520488e --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/structure.txt @@ -0,0 +1,218 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage +--------------------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2024-06-01" + +ConfigurationStore: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (17 properties) +│ ├── AzureName: string +│ ├── CreateMode: *string +│ ├── DataPlaneProxy: *Object (3 properties) +│ │ ├── AuthenticationMode: *string +│ │ ├── PrivateLinkDelegation: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── DefaultKeyValueRevisionRetentionPeriodInSeconds: *int +│ ├── DisableLocalAuth: *bool +│ ├── EnablePurgeProtection: *bool +│ ├── Encryption: *Object (2 properties) +│ │ ├── KeyVaultProperties: *Object (3 properties) +│ │ │ ├── IdentityClientId: *string +│ │ │ ├── KeyIdentifier: *string +│ │ │ └── PropertyBag: genruntime.PropertyBag +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── Identity: *Object (3 properties) +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── Type: *string +│ │ └── UserAssignedIdentities: Object (2 properties)[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Reference: genruntime.ResourceReference +│ ├── Location: *string +│ ├── OperatorSpec: *Object (4 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── SecretExpressions: *core.DestinationExpression[] +│ │ └── Secrets: *Object (13 properties) +│ │ ├── PrimaryConnectionString: *genruntime.SecretDestination +│ │ ├── PrimaryKey: *genruntime.SecretDestination +│ │ ├── PrimaryKeyID: *genruntime.SecretDestination +│ │ ├── PrimaryReadOnlyConnectionString: *genruntime.SecretDestination +│ │ ├── PrimaryReadOnlyKey: *genruntime.SecretDestination +│ │ ├── PrimaryReadOnlyKeyID: *genruntime.SecretDestination +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── SecondaryConnectionString: *genruntime.SecretDestination +│ │ ├── SecondaryKey: *genruntime.SecretDestination +│ │ ├── SecondaryKeyID: *genruntime.SecretDestination +│ │ ├── SecondaryReadOnlyConnectionString: *genruntime.SecretDestination +│ │ ├── SecondaryReadOnlyKey: *genruntime.SecretDestination +│ │ └── SecondaryReadOnlyKeyID: *genruntime.SecretDestination +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── PublicNetworkAccess: *string +│ ├── Sku: *Object (2 properties) +│ │ ├── Name: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── SoftDeleteRetentionInDays: *int +│ └── Tags: map[string]string +└── Status: Object (22 properties) + ├── Conditions: conditions.Condition[] + ├── CreateMode: *string + ├── CreationDate: *string + ├── DataPlaneProxy: *Object (3 properties) + │ ├── AuthenticationMode: *string + │ ├── PrivateLinkDelegation: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── DefaultKeyValueRevisionRetentionPeriodInSeconds: *int + ├── DisableLocalAuth: *bool + ├── EnablePurgeProtection: *bool + ├── Encryption: *Object (2 properties) + │ ├── KeyVaultProperties: *Object (3 properties) + │ │ ├── IdentityClientId: *string + │ │ ├── KeyIdentifier: *string + │ │ └── PropertyBag: genruntime.PropertyBag + │ └── PropertyBag: genruntime.PropertyBag + ├── Endpoint: *string + ├── Id: *string + ├── Identity: *Object (5 properties) + │ ├── PrincipalId: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── TenantId: *string + │ ├── Type: *string + │ └── UserAssignedIdentities: map[string]Object (3 properties) + │ ├── ClientId: *string + │ ├── PrincipalId: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Location: *string + ├── Name: *string + ├── PrivateEndpointConnections: Object (7 properties)[] + │ ├── Id: *string + │ ├── Name: *string + │ ├── PrivateEndpoint: *Object (2 properties) + │ │ ├── Id: *string + │ │ └── PropertyBag: genruntime.PropertyBag + │ ├── PrivateLinkServiceConnectionState: *Object (4 properties) + │ │ ├── ActionsRequired: *string + │ │ ├── Description: *string + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Status: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── ProvisioningState: *string + │ └── Type: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── PublicNetworkAccess: *string + ├── Sku: *Object (2 properties) + │ ├── Name: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── SoftDeleteRetentionInDays: *int + ├── 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 + +KeyValue: Resource +├── Owner: appconfiguration/v20240601.ConfigurationStore +├── Spec: Object (8 properties) +│ ├── AzureName: string +│ ├── ContentType: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── Tags: map[string]string +│ └── Value: *string +└── Status: Object (13 properties) + ├── Conditions: conditions.Condition[] + ├── ContentType: *string + ├── ETag: *string + ├── Id: *string + ├── Key: *string + ├── Label: *string + ├── LastModified: *string + ├── Locked: *bool + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── Tags: map[string]string + ├── Type: *string + └── Value: *string + +Replica: Resource +├── Owner: appconfiguration/v20240601.ConfigurationStore +├── Spec: Object (6 properties) +│ ├── AzureName: string +│ ├── Location: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ └── PropertyBag: genruntime.PropertyBag +└── Status: Object (9 properties) + ├── Conditions: conditions.Condition[] + ├── Endpoint: *string + ├── Id: *string + ├── Location: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + └── Type: *string + +Snapshot: Resource +├── Owner: appconfiguration/v20240601.ConfigurationStore +├── Spec: Object (9 properties) +│ ├── AzureName: string +│ ├── CompositionType: *string +│ ├── Filters: Object (3 properties)[] +│ │ ├── Key: *string +│ │ ├── Label: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── RetentionPeriod: *int +│ └── Tags: map[string]string +└── Status: Object (16 properties) + ├── CompositionType: *string + ├── Conditions: conditions.Condition[] + ├── Created: *string + ├── Etag: *string + ├── Expires: *string + ├── Filters: Object (3 properties)[] + │ ├── Key: *string + │ ├── Label: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Id: *string + ├── ItemsCount: *int + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── RetentionPeriod: *int + ├── Size: *int + ├── Status: *string + ├── Tags: map[string]string + └── Type: *string + diff --git a/v2/api/appconfiguration/v20240601/storage/zz_generated.deepcopy.go b/v2/api/appconfiguration/v20240601/storage/zz_generated.deepcopy.go new file mode 100644 index 00000000000..82727c818bc --- /dev/null +++ b/v2/api/appconfiguration/v20240601/storage/zz_generated.deepcopy.go @@ -0,0 +1,1739 @@ +//go:build !ignore_autogenerated + +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package storage + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationStore) DeepCopyInto(out *ConfigurationStore) { + *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 ConfigurationStore. +func (in *ConfigurationStore) DeepCopy() *ConfigurationStore { + if in == nil { + return nil + } + out := new(ConfigurationStore) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigurationStore) 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 *ConfigurationStoreList) DeepCopyInto(out *ConfigurationStoreList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigurationStore, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStoreList. +func (in *ConfigurationStoreList) DeepCopy() *ConfigurationStoreList { + if in == nil { + return nil + } + out := new(ConfigurationStoreList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigurationStoreList) 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 *ConfigurationStoreOperatorSecrets) DeepCopyInto(out *ConfigurationStoreOperatorSecrets) { + *out = *in + if in.PrimaryConnectionString != nil { + in, out := &in.PrimaryConnectionString, &out.PrimaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryKey != nil { + in, out := &in.PrimaryKey, &out.PrimaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryKeyID != nil { + in, out := &in.PrimaryKeyID, &out.PrimaryKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryReadOnlyConnectionString != nil { + in, out := &in.PrimaryReadOnlyConnectionString, &out.PrimaryReadOnlyConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryReadOnlyKey != nil { + in, out := &in.PrimaryReadOnlyKey, &out.PrimaryReadOnlyKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryReadOnlyKeyID != nil { + in, out := &in.PrimaryReadOnlyKeyID, &out.PrimaryReadOnlyKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecondaryConnectionString != nil { + in, out := &in.SecondaryConnectionString, &out.SecondaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryKey != nil { + in, out := &in.SecondaryKey, &out.SecondaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryKeyID != nil { + in, out := &in.SecondaryKeyID, &out.SecondaryKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryReadOnlyConnectionString != nil { + in, out := &in.SecondaryReadOnlyConnectionString, &out.SecondaryReadOnlyConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryReadOnlyKey != nil { + in, out := &in.SecondaryReadOnlyKey, &out.SecondaryReadOnlyKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryReadOnlyKeyID != nil { + in, out := &in.SecondaryReadOnlyKeyID, &out.SecondaryReadOnlyKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStoreOperatorSecrets. +func (in *ConfigurationStoreOperatorSecrets) DeepCopy() *ConfigurationStoreOperatorSecrets { + if in == nil { + return nil + } + out := new(ConfigurationStoreOperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationStoreOperatorSpec) DeepCopyInto(out *ConfigurationStoreOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = new(ConfigurationStoreOperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStoreOperatorSpec. +func (in *ConfigurationStoreOperatorSpec) DeepCopy() *ConfigurationStoreOperatorSpec { + if in == nil { + return nil + } + out := new(ConfigurationStoreOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationStore_STATUS) DeepCopyInto(out *ConfigurationStore_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.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(string) + **out = **in + } + if in.CreationDate != nil { + in, out := &in.CreationDate, &out.CreationDate + *out = new(string) + **out = **in + } + if in.DataPlaneProxy != nil { + in, out := &in.DataPlaneProxy, &out.DataPlaneProxy + *out = new(DataPlaneProxyProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + in, out := &in.DefaultKeyValueRevisionRetentionPeriodInSeconds, &out.DefaultKeyValueRevisionRetentionPeriodInSeconds + *out = new(int) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.EnablePurgeProtection != nil { + in, out := &in.EnablePurgeProtection, &out.EnablePurgeProtection + *out = new(bool) + **out = **in + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ResourceIdentity_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnectionReference_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.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(Sku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SoftDeleteRetentionInDays != nil { + in, out := &in.SoftDeleteRetentionInDays, &out.SoftDeleteRetentionInDays + *out = new(int) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStore_STATUS. +func (in *ConfigurationStore_STATUS) DeepCopy() *ConfigurationStore_STATUS { + if in == nil { + return nil + } + out := new(ConfigurationStore_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 *ConfigurationStore_Spec) DeepCopyInto(out *ConfigurationStore_Spec) { + *out = *in + if in.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(string) + **out = **in + } + if in.DataPlaneProxy != nil { + in, out := &in.DataPlaneProxy, &out.DataPlaneProxy + *out = new(DataPlaneProxyProperties) + (*in).DeepCopyInto(*out) + } + if in.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + in, out := &in.DefaultKeyValueRevisionRetentionPeriodInSeconds, &out.DefaultKeyValueRevisionRetentionPeriodInSeconds + *out = new(int) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.EnablePurgeProtection != nil { + in, out := &in.EnablePurgeProtection, &out.EnablePurgeProtection + *out = new(bool) + **out = **in + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperties) + (*in).DeepCopyInto(*out) + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ResourceIdentity) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(ConfigurationStoreOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(string) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(Sku) + (*in).DeepCopyInto(*out) + } + if in.SoftDeleteRetentionInDays != nil { + in, out := &in.SoftDeleteRetentionInDays, &out.SoftDeleteRetentionInDays + *out = new(int) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStore_Spec. +func (in *ConfigurationStore_Spec) DeepCopy() *ConfigurationStore_Spec { + if in == nil { + return nil + } + out := new(ConfigurationStore_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 *DataPlaneProxyProperties) DeepCopyInto(out *DataPlaneProxyProperties) { + *out = *in + if in.AuthenticationMode != nil { + in, out := &in.AuthenticationMode, &out.AuthenticationMode + *out = new(string) + **out = **in + } + if in.PrivateLinkDelegation != nil { + in, out := &in.PrivateLinkDelegation, &out.PrivateLinkDelegation + *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 DataPlaneProxyProperties. +func (in *DataPlaneProxyProperties) DeepCopy() *DataPlaneProxyProperties { + if in == nil { + return nil + } + out := new(DataPlaneProxyProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneProxyProperties_STATUS) DeepCopyInto(out *DataPlaneProxyProperties_STATUS) { + *out = *in + if in.AuthenticationMode != nil { + in, out := &in.AuthenticationMode, &out.AuthenticationMode + *out = new(string) + **out = **in + } + if in.PrivateLinkDelegation != nil { + in, out := &in.PrivateLinkDelegation, &out.PrivateLinkDelegation + *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 DataPlaneProxyProperties_STATUS. +func (in *DataPlaneProxyProperties_STATUS) DeepCopy() *DataPlaneProxyProperties_STATUS { + if in == nil { + return nil + } + out := new(DataPlaneProxyProperties_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 *EncryptionProperties) DeepCopyInto(out *EncryptionProperties) { + *out = *in + if in.KeyVaultProperties != nil { + in, out := &in.KeyVaultProperties, &out.KeyVaultProperties + *out = new(KeyVaultProperties) + (*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 + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionProperties. +func (in *EncryptionProperties) DeepCopy() *EncryptionProperties { + if in == nil { + return nil + } + out := new(EncryptionProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionProperties_STATUS) DeepCopyInto(out *EncryptionProperties_STATUS) { + *out = *in + if in.KeyVaultProperties != nil { + in, out := &in.KeyVaultProperties, &out.KeyVaultProperties + *out = new(KeyVaultProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionProperties_STATUS. +func (in *EncryptionProperties_STATUS) DeepCopy() *EncryptionProperties_STATUS { + if in == nil { + return nil + } + out := new(EncryptionProperties_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 *KeyValue) DeepCopyInto(out *KeyValue) { + *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 KeyValue. +func (in *KeyValue) DeepCopy() *KeyValue { + if in == nil { + return nil + } + out := new(KeyValue) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *KeyValue) 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 *KeyValueFilter) DeepCopyInto(out *KeyValueFilter) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *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 KeyValueFilter. +func (in *KeyValueFilter) DeepCopy() *KeyValueFilter { + if in == nil { + return nil + } + out := new(KeyValueFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyValueFilter_STATUS) DeepCopyInto(out *KeyValueFilter_STATUS) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *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 KeyValueFilter_STATUS. +func (in *KeyValueFilter_STATUS) DeepCopy() *KeyValueFilter_STATUS { + if in == nil { + return nil + } + out := new(KeyValueFilter_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 *KeyValueList) DeepCopyInto(out *KeyValueList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyValue, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyValueList. +func (in *KeyValueList) DeepCopy() *KeyValueList { + if in == nil { + return nil + } + out := new(KeyValueList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *KeyValueList) 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 *KeyValueOperatorSpec) DeepCopyInto(out *KeyValueOperatorSpec) { + *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 KeyValueOperatorSpec. +func (in *KeyValueOperatorSpec) DeepCopy() *KeyValueOperatorSpec { + if in == nil { + return nil + } + out := new(KeyValueOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyValue_STATUS) DeepCopyInto(out *KeyValue_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.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.ETag != nil { + in, out := &in.ETag, &out.ETag + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.LastModified != nil { + in, out := &in.LastModified, &out.LastModified + *out = new(string) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **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.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.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 KeyValue_STATUS. +func (in *KeyValue_STATUS) DeepCopy() *KeyValue_STATUS { + if in == nil { + return nil + } + out := new(KeyValue_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 *KeyValue_Spec) DeepCopyInto(out *KeyValue_Spec) { + *out = *in + if in.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(KeyValueOperatorSpec) + (*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.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.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 KeyValue_Spec. +func (in *KeyValue_Spec) DeepCopy() *KeyValue_Spec { + if in == nil { + return nil + } + out := new(KeyValue_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 *KeyVaultProperties) DeepCopyInto(out *KeyVaultProperties) { + *out = *in + if in.IdentityClientId != nil { + in, out := &in.IdentityClientId, &out.IdentityClientId + *out = new(string) + **out = **in + } + if in.KeyIdentifier != nil { + in, out := &in.KeyIdentifier, &out.KeyIdentifier + *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 KeyVaultProperties. +func (in *KeyVaultProperties) DeepCopy() *KeyVaultProperties { + if in == nil { + return nil + } + out := new(KeyVaultProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyVaultProperties_STATUS) DeepCopyInto(out *KeyVaultProperties_STATUS) { + *out = *in + if in.IdentityClientId != nil { + in, out := &in.IdentityClientId, &out.IdentityClientId + *out = new(string) + **out = **in + } + if in.KeyIdentifier != nil { + in, out := &in.KeyIdentifier, &out.KeyIdentifier + *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 KeyVaultProperties_STATUS. +func (in *KeyVaultProperties_STATUS) DeepCopy() *KeyVaultProperties_STATUS { + if in == nil { + return nil + } + out := new(KeyVaultProperties_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 *PrivateEndpointConnectionReference_STATUS) DeepCopyInto(out *PrivateEndpointConnectionReference_STATUS) { + *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.PrivateEndpoint != nil { + in, out := &in.PrivateEndpoint, &out.PrivateEndpoint + *out = new(PrivateEndpoint_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateLinkServiceConnectionState != nil { + in, out := &in.PrivateLinkServiceConnectionState, &out.PrivateLinkServiceConnectionState + *out = new(PrivateLinkServiceConnectionState_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *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 PrivateEndpointConnectionReference_STATUS. +func (in *PrivateEndpointConnectionReference_STATUS) DeepCopy() *PrivateEndpointConnectionReference_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointConnectionReference_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 *PrivateEndpoint_STATUS) DeepCopyInto(out *PrivateEndpoint_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 PrivateEndpoint_STATUS. +func (in *PrivateEndpoint_STATUS) DeepCopy() *PrivateEndpoint_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpoint_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 *PrivateLinkServiceConnectionState_STATUS) DeepCopyInto(out *PrivateLinkServiceConnectionState_STATUS) { + *out = *in + if in.ActionsRequired != nil { + in, out := &in.ActionsRequired, &out.ActionsRequired + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *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.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLinkServiceConnectionState_STATUS. +func (in *PrivateLinkServiceConnectionState_STATUS) DeepCopy() *PrivateLinkServiceConnectionState_STATUS { + if in == nil { + return nil + } + out := new(PrivateLinkServiceConnectionState_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica) DeepCopyInto(out *Replica) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica. +func (in *Replica) DeepCopy() *Replica { + if in == nil { + return nil + } + out := new(Replica) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Replica) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaList) DeepCopyInto(out *ReplicaList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Replica, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaList. +func (in *ReplicaList) DeepCopy() *ReplicaList { + if in == nil { + return nil + } + out := new(ReplicaList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaOperatorSpec) DeepCopyInto(out *ReplicaOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaOperatorSpec. +func (in *ReplicaOperatorSpec) DeepCopy() *ReplicaOperatorSpec { + if in == nil { + return nil + } + out := new(ReplicaOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_STATUS) DeepCopyInto(out *Replica_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.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 Replica_STATUS. +func (in *Replica_STATUS) DeepCopy() *Replica_STATUS { + if in == nil { + return nil + } + out := new(Replica_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_Spec) DeepCopyInto(out *Replica_Spec) { + *out = *in + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(ReplicaOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_Spec. +func (in *Replica_Spec) DeepCopy() *Replica_Spec { + if in == nil { + return nil + } + out := new(Replica_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceIdentity) DeepCopyInto(out *ResourceIdentity) { + *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 ResourceIdentity. +func (in *ResourceIdentity) DeepCopy() *ResourceIdentity { + if in == nil { + return nil + } + out := new(ResourceIdentity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceIdentity_STATUS) DeepCopyInto(out *ResourceIdentity_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]UserIdentity_STATUS, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceIdentity_STATUS. +func (in *ResourceIdentity_STATUS) DeepCopy() *ResourceIdentity_STATUS { + if in == nil { + return nil + } + out := new(ResourceIdentity_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 *Sku) DeepCopyInto(out *Sku) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sku. +func (in *Sku) DeepCopy() *Sku { + if in == nil { + return nil + } + out := new(Sku) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Sku_STATUS) DeepCopyInto(out *Sku_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 + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sku_STATUS. +func (in *Sku_STATUS) DeepCopy() *Sku_STATUS { + if in == nil { + return nil + } + out := new(Sku_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 *Snapshot) DeepCopyInto(out *Snapshot) { + *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 Snapshot. +func (in *Snapshot) DeepCopy() *Snapshot { + if in == nil { + return nil + } + out := new(Snapshot) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Snapshot) 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 *SnapshotList) DeepCopyInto(out *SnapshotList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Snapshot, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotList. +func (in *SnapshotList) DeepCopy() *SnapshotList { + if in == nil { + return nil + } + out := new(SnapshotList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SnapshotList) 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 *SnapshotOperatorSpec) DeepCopyInto(out *SnapshotOperatorSpec) { + *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 SnapshotOperatorSpec. +func (in *SnapshotOperatorSpec) DeepCopy() *SnapshotOperatorSpec { + if in == nil { + return nil + } + out := new(SnapshotOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Snapshot_STATUS) DeepCopyInto(out *Snapshot_STATUS) { + *out = *in + if in.CompositionType != nil { + in, out := &in.CompositionType, &out.CompositionType + *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.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.Etag != nil { + in, out := &in.Etag, &out.Etag + *out = new(string) + **out = **in + } + if in.Expires != nil { + in, out := &in.Expires, &out.Expires + *out = new(string) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]KeyValueFilter_STATUS, 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.ItemsCount != nil { + in, out := &in.ItemsCount, &out.ItemsCount + *out = new(int) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.RetentionPeriod != nil { + in, out := &in.RetentionPeriod, &out.RetentionPeriod + *out = new(int) + **out = **in + } + if in.Size != nil { + in, out := &in.Size, &out.Size + *out = new(int) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot_STATUS. +func (in *Snapshot_STATUS) DeepCopy() *Snapshot_STATUS { + if in == nil { + return nil + } + out := new(Snapshot_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 *Snapshot_Spec) DeepCopyInto(out *Snapshot_Spec) { + *out = *in + if in.CompositionType != nil { + in, out := &in.CompositionType, &out.CompositionType + *out = new(string) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]KeyValueFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(SnapshotOperatorSpec) + (*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.RetentionPeriod != nil { + in, out := &in.RetentionPeriod, &out.RetentionPeriod + *out = new(int) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot_Spec. +func (in *Snapshot_Spec) DeepCopy() *Snapshot_Spec { + if in == nil { + return nil + } + out := new(Snapshot_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SystemData_STATUS) DeepCopyInto(out *SystemData_STATUS) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByType != nil { + in, out := &in.CreatedByType, &out.CreatedByType + *out = new(string) + **out = **in + } + if in.LastModifiedAt != nil { + in, out := &in.LastModifiedAt, &out.LastModifiedAt + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(string) + **out = **in + } + if in.LastModifiedByType != nil { + in, out := &in.LastModifiedByType, &out.LastModifiedByType + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData_STATUS. +func (in *SystemData_STATUS) DeepCopy() *SystemData_STATUS { + if in == nil { + return nil + } + out := new(SystemData_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAssignedIdentityDetails) DeepCopyInto(out *UserAssignedIdentityDetails) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + out.Reference = in.Reference +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAssignedIdentityDetails. +func (in *UserAssignedIdentityDetails) DeepCopy() *UserAssignedIdentityDetails { + if in == nil { + return nil + } + out := new(UserAssignedIdentityDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserIdentity_STATUS) DeepCopyInto(out *UserIdentity_STATUS) { + *out = *in + if in.ClientId != nil { + in, out := &in.ClientId, &out.ClientId + *out = new(string) + **out = **in + } + if in.PrincipalId != nil { + in, out := &in.PrincipalId, &out.PrincipalId + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserIdentity_STATUS. +func (in *UserIdentity_STATUS) DeepCopy() *UserIdentity_STATUS { + if in == nil { + return nil + } + out := new(UserIdentity_STATUS) + in.DeepCopyInto(out) + return out +} diff --git a/v2/api/appconfiguration/v20240601/structure.txt b/v2/api/appconfiguration/v20240601/structure.txt new file mode 100644 index 00000000000..24d7abb436e --- /dev/null +++ b/v2/api/appconfiguration/v20240601/structure.txt @@ -0,0 +1,267 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601 +------------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2024-06-01" + +ConfigurationStore: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (15 properties) +│ ├── AzureName: Validated (3 rules) +│ │ ├── Rule 0: MaxLength: 50 +│ │ ├── Rule 1: MinLength: 5 +│ │ └── Rule 2: Pattern: "^[a-zA-Z0-9_-]*$" +│ ├── CreateMode: *Enum (2 values) +│ │ ├── "Default" +│ │ └── "Recover" +│ ├── DataPlaneProxy: *Object (2 properties) +│ │ ├── AuthenticationMode: *Enum (2 values) +│ │ │ ├── "Local" +│ │ │ └── "Pass-through" +│ │ └── PrivateLinkDelegation: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── DefaultKeyValueRevisionRetentionPeriodInSeconds: *int +│ ├── DisableLocalAuth: *bool +│ ├── EnablePurgeProtection: *bool +│ ├── Encryption: *Object (1 property) +│ │ └── KeyVaultProperties: *Object (2 properties) +│ │ ├── IdentityClientId: *string +│ │ └── KeyIdentifier: *string +│ ├── Identity: *Object (2 properties) +│ │ ├── Type: *Enum (4 values) +│ │ │ ├── "None" +│ │ │ ├── "SystemAssigned" +│ │ │ ├── "SystemAssigned, UserAssigned" +│ │ │ └── "UserAssigned" +│ │ └── UserAssignedIdentities: Object (1 property)[] +│ │ └── Reference: genruntime.ResourceReference +│ ├── Location: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── SecretExpressions: *core.DestinationExpression[] +│ │ └── Secrets: *Object (12 properties) +│ │ ├── PrimaryConnectionString: *genruntime.SecretDestination +│ │ ├── PrimaryKey: *genruntime.SecretDestination +│ │ ├── PrimaryKeyID: *genruntime.SecretDestination +│ │ ├── PrimaryReadOnlyConnectionString: *genruntime.SecretDestination +│ │ ├── PrimaryReadOnlyKey: *genruntime.SecretDestination +│ │ ├── PrimaryReadOnlyKeyID: *genruntime.SecretDestination +│ │ ├── SecondaryConnectionString: *genruntime.SecretDestination +│ │ ├── SecondaryKey: *genruntime.SecretDestination +│ │ ├── SecondaryKeyID: *genruntime.SecretDestination +│ │ ├── SecondaryReadOnlyConnectionString: *genruntime.SecretDestination +│ │ ├── SecondaryReadOnlyKey: *genruntime.SecretDestination +│ │ └── SecondaryReadOnlyKeyID: *genruntime.SecretDestination +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── Sku: *Object (1 property) +│ │ └── Name: *string +│ ├── SoftDeleteRetentionInDays: *int +│ └── Tags: map[string]string +└── Status: Object (21 properties) + ├── Conditions: conditions.Condition[] + ├── CreateMode: *Enum (2 values) + │ ├── "Default" + │ └── "Recover" + ├── CreationDate: *string + ├── DataPlaneProxy: *Object (2 properties) + │ ├── AuthenticationMode: *Enum (2 values) + │ │ ├── "Local" + │ │ └── "Pass-through" + │ └── PrivateLinkDelegation: *Enum (2 values) + │ ├── "Disabled" + │ └── "Enabled" + ├── DefaultKeyValueRevisionRetentionPeriodInSeconds: *int + ├── DisableLocalAuth: *bool + ├── EnablePurgeProtection: *bool + ├── Encryption: *Object (1 property) + │ └── KeyVaultProperties: *Object (2 properties) + │ ├── IdentityClientId: *string + │ └── KeyIdentifier: *string + ├── Endpoint: *string + ├── Id: *string + ├── Identity: *Object (4 properties) + │ ├── PrincipalId: *string + │ ├── TenantId: *string + │ ├── Type: *Enum (4 values) + │ │ ├── "None" + │ │ ├── "SystemAssigned" + │ │ ├── "SystemAssigned, UserAssigned" + │ │ └── "UserAssigned" + │ └── UserAssignedIdentities: map[string]Object (2 properties) + │ ├── ClientId: *string + │ └── PrincipalId: *string + ├── Location: *string + ├── Name: *string + ├── PrivateEndpointConnections: Object (6 properties)[] + │ ├── Id: *string + │ ├── Name: *string + │ ├── PrivateEndpoint: *Object (1 property) + │ │ └── Id: *string + │ ├── PrivateLinkServiceConnectionState: *Object (3 properties) + │ │ ├── ActionsRequired: *Enum (2 values) + │ │ │ ├── "None" + │ │ │ └── "Recreate" + │ │ ├── Description: *string + │ │ └── Status: *Enum (4 values) + │ │ ├── "Approved" + │ │ ├── "Disconnected" + │ │ ├── "Pending" + │ │ └── "Rejected" + │ ├── ProvisioningState: *Enum (6 values) + │ │ ├── "Canceled" + │ │ ├── "Creating" + │ │ ├── "Deleting" + │ │ ├── "Failed" + │ │ ├── "Succeeded" + │ │ └── "Updating" + │ └── Type: *string + ├── ProvisioningState: *Enum (6 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Succeeded" + │ └── "Updating" + ├── PublicNetworkAccess: *Enum (2 values) + │ ├── "Disabled" + │ └── "Enabled" + ├── Sku: *Object (1 property) + │ └── Name: *string + ├── SoftDeleteRetentionInDays: *int + ├── 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 + +KeyValue: Resource +├── Owner: ConfigurationStore +├── Spec: Object (6 properties) +│ ├── AzureName: string +│ ├── ContentType: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── Tags: map[string]string +│ └── Value: *string +└── Status: Object (12 properties) + ├── Conditions: conditions.Condition[] + ├── ContentType: *string + ├── ETag: *string + ├── Id: *string + ├── Key: *string + ├── Label: *string + ├── LastModified: *string + ├── Locked: *bool + ├── Name: *string + ├── Tags: map[string]string + ├── Type: *string + └── Value: *string + +Replica: Resource +├── Owner: ConfigurationStore +├── Spec: Object (4 properties) +│ ├── AzureName: string +│ ├── Location: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ └── Owner: *genruntime.KnownResourceReference +└── Status: Object (8 properties) + ├── Conditions: conditions.Condition[] + ├── Endpoint: *string + ├── Id: *string + ├── Location: *string + ├── Name: *string + ├── ProvisioningState: *Enum (5 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ └── "Succeeded" + ├── 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 + +Snapshot: Resource +├── Owner: ConfigurationStore +├── Spec: Object (7 properties) +│ ├── AzureName: Validated (1 rule) +│ │ └── Rule 0: Pattern: "^[^\\x00-\\x1F\\x7F]+$" +│ ├── CompositionType: *Enum (2 values) +│ │ ├── "Key" +│ │ └── "Key_Label" +│ ├── Filters: Validated (2 rules) +│ │ ├── Key: *string +│ │ ├── Label: *string +│ │ ├── Rule 0: MaxItems: 3 +│ │ └── Rule 1: MinItems: 1 +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── RetentionPeriod: Validated<*int> (2 rules) +│ │ ├── Rule 0: Maximum: 7776000 +│ │ └── Rule 1: Minimum: 3600 +│ └── Tags: map[string]string +└── Status: Object (15 properties) + ├── CompositionType: *Enum (2 values) + │ ├── "Key" + │ └── "Key_Label" + ├── Conditions: conditions.Condition[] + ├── Created: *string + ├── Etag: *string + ├── Expires: *string + ├── Filters: Object (2 properties)[] + │ ├── Key: *string + │ └── Label: *string + ├── Id: *string + ├── ItemsCount: *int + ├── Name: *string + ├── ProvisioningState: *Enum (6 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Succeeded" + │ └── "Updating" + ├── RetentionPeriod: *int + ├── Size: *int + ├── Status: *Enum (4 values) + │ ├── "Archived" + │ ├── "Failed" + │ ├── "Provisioning" + │ └── "Ready" + ├── Tags: map[string]string + └── Type: *string + diff --git a/v2/api/appconfiguration/v20240601/webhook/configuration_store_types_gen.go b/v2/api/appconfiguration/v20240601/webhook/configuration_store_types_gen.go new file mode 100644 index 00000000000..866ecf0201c --- /dev/null +++ b/v2/api/appconfiguration/v20240601/webhook/configuration_store_types_gen.go @@ -0,0 +1,201 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package webhook + +import ( + "context" + "fmt" + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + "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/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/webhook" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +type ConfigurationStore struct { +} + +// +kubebuilder:webhook:path=/mutate-appconfiguration-azure-com-v20240601-configurationstore,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=configurationstores,verbs=create;update,versions=v20240601,name=default.v20240601.configurationstores.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomDefaulter = &ConfigurationStore{} + +// Default applies defaults to the ConfigurationStore resource +func (store *ConfigurationStore) Default(ctx context.Context, obj runtime.Object) error { + resource, ok := obj.(*v20240601.ConfigurationStore) + if !ok { + return fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/ConfigurationStore, but got %T", obj) + } + err := store.defaultImpl(ctx, resource) + if err != nil { + return err + } + var temp any = store + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + err = runtimeDefaulter.CustomDefault(ctx, resource) + if err != nil { + return err + } + } + return nil +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (store *ConfigurationStore) defaultAzureName(ctx context.Context, obj *v20240601.ConfigurationStore) error { + if obj.Spec.AzureName == "" { + obj.Spec.AzureName = obj.Name + } + return nil +} + +// defaultImpl applies the code generated defaults to the ConfigurationStore resource +func (store *ConfigurationStore) defaultImpl(ctx context.Context, obj *v20240601.ConfigurationStore) error { + err := store.defaultAzureName(ctx, obj) + if err != nil { + return err + } + return nil +} + +// +kubebuilder:webhook:path=/validate-appconfiguration-azure-com-v20240601-configurationstore,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=configurationstores,verbs=create;update,versions=v20240601,name=validate.v20240601.configurationstores.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomValidator = &ConfigurationStore{} + +// ValidateCreate validates the creation of the resource +func (store *ConfigurationStore) ValidateCreate(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.ConfigurationStore) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/ConfigurationStore, but got %T", resource) + } + validations := store.createValidations() + var temp any = store + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.ConfigurationStore]); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(ctx, obj, validations) +} + +// ValidateDelete validates the deletion of the resource +func (store *ConfigurationStore) ValidateDelete(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.ConfigurationStore) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/ConfigurationStore, but got %T", resource) + } + validations := store.deleteValidations() + var temp any = store + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.ConfigurationStore]); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(ctx, obj, validations) +} + +// ValidateUpdate validates an update of the resource +func (store *ConfigurationStore) ValidateUpdate(ctx context.Context, oldResource runtime.Object, newResource runtime.Object) (admission.Warnings, error) { + newObj, ok := newResource.(*v20240601.ConfigurationStore) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/ConfigurationStore, but got %T", newResource) + } + oldObj, ok := oldResource.(*v20240601.ConfigurationStore) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/ConfigurationStore, but got %T", oldResource) + } + validations := store.updateValidations() + var temp any = store + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.ConfigurationStore]); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate( + ctx, + oldObj, + newObj, + validations) +} + +// createValidations validates the creation of the resource +func (store *ConfigurationStore) createValidations() []func(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return []func(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error){ + store.validateResourceReferences, + store.validateOwnerReference, + store.validateSecretDestinations, + store.validateConfigMapDestinations, + } +} + +// deleteValidations validates the deletion of the resource +func (store *ConfigurationStore) deleteValidations() []func(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (store *ConfigurationStore) updateValidations() []func(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return []func(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error){ + func(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return store.validateResourceReferences(ctx, newObj) + }, + store.validateWriteOnceProperties, + func(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return store.validateOwnerReference(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return store.validateSecretDestinations(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return store.validateConfigMapDestinations(ctx, newObj) + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (store *ConfigurationStore) validateConfigMapDestinations(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (store *ConfigurationStore) validateOwnerReference(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return genruntime.ValidateOwner(obj) +} + +// validateResourceReferences validates all resource references +func (store *ConfigurationStore) validateResourceReferences(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&obj.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (store *ConfigurationStore) validateSecretDestinations(ctx context.Context, obj *v20240601.ConfigurationStore) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + var toValidate []*genruntime.SecretDestination + if obj.Spec.OperatorSpec.Secrets != nil { + toValidate = []*genruntime.SecretDestination{ + obj.Spec.OperatorSpec.Secrets.PrimaryConnectionString, + obj.Spec.OperatorSpec.Secrets.PrimaryKey, + obj.Spec.OperatorSpec.Secrets.PrimaryKeyID, + obj.Spec.OperatorSpec.Secrets.PrimaryReadOnlyConnectionString, + obj.Spec.OperatorSpec.Secrets.PrimaryReadOnlyKey, + obj.Spec.OperatorSpec.Secrets.PrimaryReadOnlyKeyID, + obj.Spec.OperatorSpec.Secrets.SecondaryConnectionString, + obj.Spec.OperatorSpec.Secrets.SecondaryKey, + obj.Spec.OperatorSpec.Secrets.SecondaryKeyID, + obj.Spec.OperatorSpec.Secrets.SecondaryReadOnlyConnectionString, + obj.Spec.OperatorSpec.Secrets.SecondaryReadOnlyKey, + obj.Spec.OperatorSpec.Secrets.SecondaryReadOnlyKeyID, + } + } + return secrets.ValidateDestinations(obj, toValidate, obj.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (store *ConfigurationStore) validateWriteOnceProperties(ctx context.Context, oldObj *v20240601.ConfigurationStore, newObj *v20240601.ConfigurationStore) (admission.Warnings, error) { + return genruntime.ValidateWriteOnceProperties(oldObj, newObj) +} diff --git a/v2/api/appconfiguration/v20240601/webhook/key_value_types_gen.go b/v2/api/appconfiguration/v20240601/webhook/key_value_types_gen.go new file mode 100644 index 00000000000..987914436eb --- /dev/null +++ b/v2/api/appconfiguration/v20240601/webhook/key_value_types_gen.go @@ -0,0 +1,184 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package webhook + +import ( + "context" + "fmt" + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + "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/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/webhook" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +type KeyValue struct { +} + +// +kubebuilder:webhook:path=/mutate-appconfiguration-azure-com-v20240601-keyvalue,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=keyvalues,verbs=create;update,versions=v20240601,name=default.v20240601.keyvalues.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomDefaulter = &KeyValue{} + +// Default applies defaults to the KeyValue resource +func (value *KeyValue) Default(ctx context.Context, obj runtime.Object) error { + resource, ok := obj.(*v20240601.KeyValue) + if !ok { + return fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/KeyValue, but got %T", obj) + } + err := value.defaultImpl(ctx, resource) + if err != nil { + return err + } + var temp any = value + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + err = runtimeDefaulter.CustomDefault(ctx, resource) + if err != nil { + return err + } + } + return nil +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (value *KeyValue) defaultAzureName(ctx context.Context, obj *v20240601.KeyValue) error { + if obj.Spec.AzureName == "" { + obj.Spec.AzureName = obj.Name + } + return nil +} + +// defaultImpl applies the code generated defaults to the KeyValue resource +func (value *KeyValue) defaultImpl(ctx context.Context, obj *v20240601.KeyValue) error { + err := value.defaultAzureName(ctx, obj) + if err != nil { + return err + } + return nil +} + +// +kubebuilder:webhook:path=/validate-appconfiguration-azure-com-v20240601-keyvalue,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=keyvalues,verbs=create;update,versions=v20240601,name=validate.v20240601.keyvalues.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomValidator = &KeyValue{} + +// ValidateCreate validates the creation of the resource +func (value *KeyValue) ValidateCreate(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.KeyValue) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/KeyValue, but got %T", resource) + } + validations := value.createValidations() + var temp any = value + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.KeyValue]); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(ctx, obj, validations) +} + +// ValidateDelete validates the deletion of the resource +func (value *KeyValue) ValidateDelete(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.KeyValue) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/KeyValue, but got %T", resource) + } + validations := value.deleteValidations() + var temp any = value + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.KeyValue]); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(ctx, obj, validations) +} + +// ValidateUpdate validates an update of the resource +func (value *KeyValue) ValidateUpdate(ctx context.Context, oldResource runtime.Object, newResource runtime.Object) (admission.Warnings, error) { + newObj, ok := newResource.(*v20240601.KeyValue) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/KeyValue, but got %T", newResource) + } + oldObj, ok := oldResource.(*v20240601.KeyValue) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/KeyValue, but got %T", oldResource) + } + validations := value.updateValidations() + var temp any = value + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.KeyValue]); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate( + ctx, + oldObj, + newObj, + validations) +} + +// createValidations validates the creation of the resource +func (value *KeyValue) createValidations() []func(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error) { + return []func(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error){ + value.validateResourceReferences, + value.validateOwnerReference, + value.validateSecretDestinations, + value.validateConfigMapDestinations, + } +} + +// deleteValidations validates the deletion of the resource +func (value *KeyValue) deleteValidations() []func(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (value *KeyValue) updateValidations() []func(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error) { + return []func(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error){ + func(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error) { + return value.validateResourceReferences(ctx, newObj) + }, + value.validateWriteOnceProperties, + func(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error) { + return value.validateOwnerReference(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error) { + return value.validateSecretDestinations(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error) { + return value.validateConfigMapDestinations(ctx, newObj) + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (value *KeyValue) validateConfigMapDestinations(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (value *KeyValue) validateOwnerReference(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error) { + return genruntime.ValidateOwner(obj) +} + +// validateResourceReferences validates all resource references +func (value *KeyValue) validateResourceReferences(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&obj.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (value *KeyValue) validateSecretDestinations(ctx context.Context, obj *v20240601.KeyValue) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (value *KeyValue) validateWriteOnceProperties(ctx context.Context, oldObj *v20240601.KeyValue, newObj *v20240601.KeyValue) (admission.Warnings, error) { + return genruntime.ValidateWriteOnceProperties(oldObj, newObj) +} diff --git a/v2/api/appconfiguration/v20240601/webhook/replica_types_gen.go b/v2/api/appconfiguration/v20240601/webhook/replica_types_gen.go new file mode 100644 index 00000000000..6823c184bee --- /dev/null +++ b/v2/api/appconfiguration/v20240601/webhook/replica_types_gen.go @@ -0,0 +1,184 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package webhook + +import ( + "context" + "fmt" + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + "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/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/webhook" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +type Replica struct { +} + +// +kubebuilder:webhook:path=/mutate-appconfiguration-azure-com-v20240601-replica,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=replicas,verbs=create;update,versions=v20240601,name=default.v20240601.replicas.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomDefaulter = &Replica{} + +// Default applies defaults to the Replica resource +func (replica *Replica) Default(ctx context.Context, obj runtime.Object) error { + resource, ok := obj.(*v20240601.Replica) + if !ok { + return fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Replica, but got %T", obj) + } + err := replica.defaultImpl(ctx, resource) + if err != nil { + return err + } + var temp any = replica + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + err = runtimeDefaulter.CustomDefault(ctx, resource) + if err != nil { + return err + } + } + return nil +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (replica *Replica) defaultAzureName(ctx context.Context, obj *v20240601.Replica) error { + if obj.Spec.AzureName == "" { + obj.Spec.AzureName = obj.Name + } + return nil +} + +// defaultImpl applies the code generated defaults to the Replica resource +func (replica *Replica) defaultImpl(ctx context.Context, obj *v20240601.Replica) error { + err := replica.defaultAzureName(ctx, obj) + if err != nil { + return err + } + return nil +} + +// +kubebuilder:webhook:path=/validate-appconfiguration-azure-com-v20240601-replica,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=replicas,verbs=create;update,versions=v20240601,name=validate.v20240601.replicas.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomValidator = &Replica{} + +// ValidateCreate validates the creation of the resource +func (replica *Replica) ValidateCreate(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.Replica) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Replica, but got %T", resource) + } + validations := replica.createValidations() + var temp any = replica + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.Replica]); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(ctx, obj, validations) +} + +// ValidateDelete validates the deletion of the resource +func (replica *Replica) ValidateDelete(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.Replica) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Replica, but got %T", resource) + } + validations := replica.deleteValidations() + var temp any = replica + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.Replica]); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(ctx, obj, validations) +} + +// ValidateUpdate validates an update of the resource +func (replica *Replica) ValidateUpdate(ctx context.Context, oldResource runtime.Object, newResource runtime.Object) (admission.Warnings, error) { + newObj, ok := newResource.(*v20240601.Replica) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Replica, but got %T", newResource) + } + oldObj, ok := oldResource.(*v20240601.Replica) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Replica, but got %T", oldResource) + } + validations := replica.updateValidations() + var temp any = replica + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.Replica]); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate( + ctx, + oldObj, + newObj, + validations) +} + +// createValidations validates the creation of the resource +func (replica *Replica) createValidations() []func(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error) { + return []func(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error){ + replica.validateResourceReferences, + replica.validateOwnerReference, + replica.validateSecretDestinations, + replica.validateConfigMapDestinations, + } +} + +// deleteValidations validates the deletion of the resource +func (replica *Replica) deleteValidations() []func(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (replica *Replica) updateValidations() []func(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error) { + return []func(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error){ + func(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error) { + return replica.validateResourceReferences(ctx, newObj) + }, + replica.validateWriteOnceProperties, + func(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error) { + return replica.validateOwnerReference(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error) { + return replica.validateSecretDestinations(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error) { + return replica.validateConfigMapDestinations(ctx, newObj) + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (replica *Replica) validateConfigMapDestinations(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (replica *Replica) validateOwnerReference(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error) { + return genruntime.ValidateOwner(obj) +} + +// validateResourceReferences validates all resource references +func (replica *Replica) validateResourceReferences(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&obj.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (replica *Replica) validateSecretDestinations(ctx context.Context, obj *v20240601.Replica) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (replica *Replica) validateWriteOnceProperties(ctx context.Context, oldObj *v20240601.Replica, newObj *v20240601.Replica) (admission.Warnings, error) { + return genruntime.ValidateWriteOnceProperties(oldObj, newObj) +} diff --git a/v2/api/appconfiguration/v20240601/webhook/snapshot_types_gen.go b/v2/api/appconfiguration/v20240601/webhook/snapshot_types_gen.go new file mode 100644 index 00000000000..5603a6727e6 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/webhook/snapshot_types_gen.go @@ -0,0 +1,184 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package webhook + +import ( + "context" + "fmt" + v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + "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/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/controller-runtime/pkg/webhook" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +type Snapshot struct { +} + +// +kubebuilder:webhook:path=/mutate-appconfiguration-azure-com-v20240601-snapshot,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=snapshots,verbs=create;update,versions=v20240601,name=default.v20240601.snapshots.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomDefaulter = &Snapshot{} + +// Default applies defaults to the Snapshot resource +func (snapshot *Snapshot) Default(ctx context.Context, obj runtime.Object) error { + resource, ok := obj.(*v20240601.Snapshot) + if !ok { + return fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Snapshot, but got %T", obj) + } + err := snapshot.defaultImpl(ctx, resource) + if err != nil { + return err + } + var temp any = snapshot + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + err = runtimeDefaulter.CustomDefault(ctx, resource) + if err != nil { + return err + } + } + return nil +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (snapshot *Snapshot) defaultAzureName(ctx context.Context, obj *v20240601.Snapshot) error { + if obj.Spec.AzureName == "" { + obj.Spec.AzureName = obj.Name + } + return nil +} + +// defaultImpl applies the code generated defaults to the Snapshot resource +func (snapshot *Snapshot) defaultImpl(ctx context.Context, obj *v20240601.Snapshot) error { + err := snapshot.defaultAzureName(ctx, obj) + if err != nil { + return err + } + return nil +} + +// +kubebuilder:webhook:path=/validate-appconfiguration-azure-com-v20240601-snapshot,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=appconfiguration.azure.com,resources=snapshots,verbs=create;update,versions=v20240601,name=validate.v20240601.snapshots.appconfiguration.azure.com,admissionReviewVersions=v1 + +var _ webhook.CustomValidator = &Snapshot{} + +// ValidateCreate validates the creation of the resource +func (snapshot *Snapshot) ValidateCreate(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.Snapshot) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Snapshot, but got %T", resource) + } + validations := snapshot.createValidations() + var temp any = snapshot + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.Snapshot]); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(ctx, obj, validations) +} + +// ValidateDelete validates the deletion of the resource +func (snapshot *Snapshot) ValidateDelete(ctx context.Context, resource runtime.Object) (admission.Warnings, error) { + obj, ok := resource.(*v20240601.Snapshot) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Snapshot, but got %T", resource) + } + validations := snapshot.deleteValidations() + var temp any = snapshot + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.Snapshot]); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(ctx, obj, validations) +} + +// ValidateUpdate validates an update of the resource +func (snapshot *Snapshot) ValidateUpdate(ctx context.Context, oldResource runtime.Object, newResource runtime.Object) (admission.Warnings, error) { + newObj, ok := newResource.(*v20240601.Snapshot) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Snapshot, but got %T", newResource) + } + oldObj, ok := oldResource.(*v20240601.Snapshot) + if !ok { + return nil, fmt.Errorf("expected github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/Snapshot, but got %T", oldResource) + } + validations := snapshot.updateValidations() + var temp any = snapshot + if runtimeValidator, ok := temp.(genruntime.Validator[*v20240601.Snapshot]); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate( + ctx, + oldObj, + newObj, + validations) +} + +// createValidations validates the creation of the resource +func (snapshot *Snapshot) createValidations() []func(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error) { + return []func(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error){ + snapshot.validateResourceReferences, + snapshot.validateOwnerReference, + snapshot.validateSecretDestinations, + snapshot.validateConfigMapDestinations, + } +} + +// deleteValidations validates the deletion of the resource +func (snapshot *Snapshot) deleteValidations() []func(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (snapshot *Snapshot) updateValidations() []func(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error) { + return []func(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error){ + func(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error) { + return snapshot.validateResourceReferences(ctx, newObj) + }, + snapshot.validateWriteOnceProperties, + func(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error) { + return snapshot.validateOwnerReference(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error) { + return snapshot.validateSecretDestinations(ctx, newObj) + }, + func(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error) { + return snapshot.validateConfigMapDestinations(ctx, newObj) + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (snapshot *Snapshot) validateConfigMapDestinations(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (snapshot *Snapshot) validateOwnerReference(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error) { + return genruntime.ValidateOwner(obj) +} + +// validateResourceReferences validates all resource references +func (snapshot *Snapshot) validateResourceReferences(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&obj.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (snapshot *Snapshot) validateSecretDestinations(ctx context.Context, obj *v20240601.Snapshot) (admission.Warnings, error) { + if obj.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(obj, nil, obj.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (snapshot *Snapshot) validateWriteOnceProperties(ctx context.Context, oldObj *v20240601.Snapshot, newObj *v20240601.Snapshot) (admission.Warnings, error) { + return genruntime.ValidateWriteOnceProperties(oldObj, newObj) +} diff --git a/v2/api/appconfiguration/v20240601/webhook/structure.txt b/v2/api/appconfiguration/v20240601/webhook/structure.txt new file mode 100644 index 00000000000..74678035aa6 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/webhook/structure.txt @@ -0,0 +1,11 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/webhook +--------------------------------------------------------------------------------- +ConfigurationStore: Object (0 properties) + +KeyValue: Object (0 properties) + +Replica: Object (0 properties) + +Snapshot: Object (0 properties) + diff --git a/v2/api/appconfiguration/v20240601/zz_generated.deepcopy.go b/v2/api/appconfiguration/v20240601/zz_generated.deepcopy.go new file mode 100644 index 00000000000..50e501aa6f5 --- /dev/null +++ b/v2/api/appconfiguration/v20240601/zz_generated.deepcopy.go @@ -0,0 +1,1520 @@ +//go:build !ignore_autogenerated + +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v20240601 + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationStore) DeepCopyInto(out *ConfigurationStore) { + *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 ConfigurationStore. +func (in *ConfigurationStore) DeepCopy() *ConfigurationStore { + if in == nil { + return nil + } + out := new(ConfigurationStore) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigurationStore) 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 *ConfigurationStoreList) DeepCopyInto(out *ConfigurationStoreList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigurationStore, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStoreList. +func (in *ConfigurationStoreList) DeepCopy() *ConfigurationStoreList { + if in == nil { + return nil + } + out := new(ConfigurationStoreList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigurationStoreList) 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 *ConfigurationStoreOperatorSecrets) DeepCopyInto(out *ConfigurationStoreOperatorSecrets) { + *out = *in + if in.PrimaryConnectionString != nil { + in, out := &in.PrimaryConnectionString, &out.PrimaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryKey != nil { + in, out := &in.PrimaryKey, &out.PrimaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryKeyID != nil { + in, out := &in.PrimaryKeyID, &out.PrimaryKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryReadOnlyConnectionString != nil { + in, out := &in.PrimaryReadOnlyConnectionString, &out.PrimaryReadOnlyConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryReadOnlyKey != nil { + in, out := &in.PrimaryReadOnlyKey, &out.PrimaryReadOnlyKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PrimaryReadOnlyKeyID != nil { + in, out := &in.PrimaryReadOnlyKeyID, &out.PrimaryReadOnlyKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryConnectionString != nil { + in, out := &in.SecondaryConnectionString, &out.SecondaryConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryKey != nil { + in, out := &in.SecondaryKey, &out.SecondaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryKeyID != nil { + in, out := &in.SecondaryKeyID, &out.SecondaryKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryReadOnlyConnectionString != nil { + in, out := &in.SecondaryReadOnlyConnectionString, &out.SecondaryReadOnlyConnectionString + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryReadOnlyKey != nil { + in, out := &in.SecondaryReadOnlyKey, &out.SecondaryReadOnlyKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.SecondaryReadOnlyKeyID != nil { + in, out := &in.SecondaryReadOnlyKeyID, &out.SecondaryReadOnlyKeyID + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStoreOperatorSecrets. +func (in *ConfigurationStoreOperatorSecrets) DeepCopy() *ConfigurationStoreOperatorSecrets { + if in == nil { + return nil + } + out := new(ConfigurationStoreOperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationStoreOperatorSpec) DeepCopyInto(out *ConfigurationStoreOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = new(ConfigurationStoreOperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStoreOperatorSpec. +func (in *ConfigurationStoreOperatorSpec) DeepCopy() *ConfigurationStoreOperatorSpec { + if in == nil { + return nil + } + out := new(ConfigurationStoreOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigurationStore_STATUS) DeepCopyInto(out *ConfigurationStore_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.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(ConfigurationStoreProperties_CreateMode_STATUS) + **out = **in + } + if in.CreationDate != nil { + in, out := &in.CreationDate, &out.CreationDate + *out = new(string) + **out = **in + } + if in.DataPlaneProxy != nil { + in, out := &in.DataPlaneProxy, &out.DataPlaneProxy + *out = new(DataPlaneProxyProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + in, out := &in.DefaultKeyValueRevisionRetentionPeriodInSeconds, &out.DefaultKeyValueRevisionRetentionPeriodInSeconds + *out = new(int) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.EnablePurgeProtection != nil { + in, out := &in.EnablePurgeProtection, &out.EnablePurgeProtection + *out = new(bool) + **out = **in + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ResourceIdentity_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnectionReference_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ConfigurationStoreProperties_ProvisioningState_STATUS) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(ConfigurationStoreProperties_PublicNetworkAccess_STATUS) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(Sku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SoftDeleteRetentionInDays != nil { + in, out := &in.SoftDeleteRetentionInDays, &out.SoftDeleteRetentionInDays + *out = new(int) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStore_STATUS. +func (in *ConfigurationStore_STATUS) DeepCopy() *ConfigurationStore_STATUS { + if in == nil { + return nil + } + out := new(ConfigurationStore_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 *ConfigurationStore_Spec) DeepCopyInto(out *ConfigurationStore_Spec) { + *out = *in + if in.CreateMode != nil { + in, out := &in.CreateMode, &out.CreateMode + *out = new(ConfigurationStoreProperties_CreateMode) + **out = **in + } + if in.DataPlaneProxy != nil { + in, out := &in.DataPlaneProxy, &out.DataPlaneProxy + *out = new(DataPlaneProxyProperties) + (*in).DeepCopyInto(*out) + } + if in.DefaultKeyValueRevisionRetentionPeriodInSeconds != nil { + in, out := &in.DefaultKeyValueRevisionRetentionPeriodInSeconds, &out.DefaultKeyValueRevisionRetentionPeriodInSeconds + *out = new(int) + **out = **in + } + if in.DisableLocalAuth != nil { + in, out := &in.DisableLocalAuth, &out.DisableLocalAuth + *out = new(bool) + **out = **in + } + if in.EnablePurgeProtection != nil { + in, out := &in.EnablePurgeProtection, &out.EnablePurgeProtection + *out = new(bool) + **out = **in + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperties) + (*in).DeepCopyInto(*out) + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(ResourceIdentity) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(ConfigurationStoreOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(ConfigurationStoreProperties_PublicNetworkAccess) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(Sku) + (*in).DeepCopyInto(*out) + } + if in.SoftDeleteRetentionInDays != nil { + in, out := &in.SoftDeleteRetentionInDays, &out.SoftDeleteRetentionInDays + *out = new(int) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationStore_Spec. +func (in *ConfigurationStore_Spec) DeepCopy() *ConfigurationStore_Spec { + if in == nil { + return nil + } + out := new(ConfigurationStore_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 *DataPlaneProxyProperties) DeepCopyInto(out *DataPlaneProxyProperties) { + *out = *in + if in.AuthenticationMode != nil { + in, out := &in.AuthenticationMode, &out.AuthenticationMode + *out = new(DataPlaneProxyProperties_AuthenticationMode) + **out = **in + } + if in.PrivateLinkDelegation != nil { + in, out := &in.PrivateLinkDelegation, &out.PrivateLinkDelegation + *out = new(DataPlaneProxyProperties_PrivateLinkDelegation) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneProxyProperties. +func (in *DataPlaneProxyProperties) DeepCopy() *DataPlaneProxyProperties { + if in == nil { + return nil + } + out := new(DataPlaneProxyProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneProxyProperties_STATUS) DeepCopyInto(out *DataPlaneProxyProperties_STATUS) { + *out = *in + if in.AuthenticationMode != nil { + in, out := &in.AuthenticationMode, &out.AuthenticationMode + *out = new(DataPlaneProxyProperties_AuthenticationMode_STATUS) + **out = **in + } + if in.PrivateLinkDelegation != nil { + in, out := &in.PrivateLinkDelegation, &out.PrivateLinkDelegation + *out = new(DataPlaneProxyProperties_PrivateLinkDelegation_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneProxyProperties_STATUS. +func (in *DataPlaneProxyProperties_STATUS) DeepCopy() *DataPlaneProxyProperties_STATUS { + if in == nil { + return nil + } + out := new(DataPlaneProxyProperties_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 *EncryptionProperties) DeepCopyInto(out *EncryptionProperties) { + *out = *in + if in.KeyVaultProperties != nil { + in, out := &in.KeyVaultProperties, &out.KeyVaultProperties + *out = new(KeyVaultProperties) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionProperties. +func (in *EncryptionProperties) DeepCopy() *EncryptionProperties { + if in == nil { + return nil + } + out := new(EncryptionProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionProperties_STATUS) DeepCopyInto(out *EncryptionProperties_STATUS) { + *out = *in + if in.KeyVaultProperties != nil { + in, out := &in.KeyVaultProperties, &out.KeyVaultProperties + *out = new(KeyVaultProperties_STATUS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionProperties_STATUS. +func (in *EncryptionProperties_STATUS) DeepCopy() *EncryptionProperties_STATUS { + if in == nil { + return nil + } + out := new(EncryptionProperties_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 *KeyValue) DeepCopyInto(out *KeyValue) { + *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 KeyValue. +func (in *KeyValue) DeepCopy() *KeyValue { + if in == nil { + return nil + } + out := new(KeyValue) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *KeyValue) 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 *KeyValueFilter) DeepCopyInto(out *KeyValueFilter) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyValueFilter. +func (in *KeyValueFilter) DeepCopy() *KeyValueFilter { + if in == nil { + return nil + } + out := new(KeyValueFilter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyValueFilter_STATUS) DeepCopyInto(out *KeyValueFilter_STATUS) { + *out = *in + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyValueFilter_STATUS. +func (in *KeyValueFilter_STATUS) DeepCopy() *KeyValueFilter_STATUS { + if in == nil { + return nil + } + out := new(KeyValueFilter_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 *KeyValueList) DeepCopyInto(out *KeyValueList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyValue, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyValueList. +func (in *KeyValueList) DeepCopy() *KeyValueList { + if in == nil { + return nil + } + out := new(KeyValueList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *KeyValueList) 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 *KeyValueOperatorSpec) DeepCopyInto(out *KeyValueOperatorSpec) { + *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 KeyValueOperatorSpec. +func (in *KeyValueOperatorSpec) DeepCopy() *KeyValueOperatorSpec { + if in == nil { + return nil + } + out := new(KeyValueOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyValue_STATUS) DeepCopyInto(out *KeyValue_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.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.ETag != nil { + in, out := &in.ETag, &out.ETag + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Key != nil { + in, out := &in.Key, &out.Key + *out = new(string) + **out = **in + } + if in.Label != nil { + in, out := &in.Label, &out.Label + *out = new(string) + **out = **in + } + if in.LastModified != nil { + in, out := &in.LastModified, &out.LastModified + *out = new(string) + **out = **in + } + if in.Locked != nil { + in, out := &in.Locked, &out.Locked + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + 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.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 KeyValue_STATUS. +func (in *KeyValue_STATUS) DeepCopy() *KeyValue_STATUS { + if in == nil { + return nil + } + out := new(KeyValue_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 *KeyValue_Spec) DeepCopyInto(out *KeyValue_Spec) { + *out = *in + if in.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(KeyValueOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + 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.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 KeyValue_Spec. +func (in *KeyValue_Spec) DeepCopy() *KeyValue_Spec { + if in == nil { + return nil + } + out := new(KeyValue_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 *KeyVaultProperties) DeepCopyInto(out *KeyVaultProperties) { + *out = *in + if in.IdentityClientId != nil { + in, out := &in.IdentityClientId, &out.IdentityClientId + *out = new(string) + **out = **in + } + if in.KeyIdentifier != nil { + in, out := &in.KeyIdentifier, &out.KeyIdentifier + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyVaultProperties. +func (in *KeyVaultProperties) DeepCopy() *KeyVaultProperties { + if in == nil { + return nil + } + out := new(KeyVaultProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KeyVaultProperties_STATUS) DeepCopyInto(out *KeyVaultProperties_STATUS) { + *out = *in + if in.IdentityClientId != nil { + in, out := &in.IdentityClientId, &out.IdentityClientId + *out = new(string) + **out = **in + } + if in.KeyIdentifier != nil { + in, out := &in.KeyIdentifier, &out.KeyIdentifier + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KeyVaultProperties_STATUS. +func (in *KeyVaultProperties_STATUS) DeepCopy() *KeyVaultProperties_STATUS { + if in == nil { + return nil + } + out := new(KeyVaultProperties_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 *PrivateEndpointConnectionReference_STATUS) DeepCopyInto(out *PrivateEndpointConnectionReference_STATUS) { + *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.PrivateEndpoint != nil { + in, out := &in.PrivateEndpoint, &out.PrivateEndpoint + *out = new(PrivateEndpoint_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateLinkServiceConnectionState != nil { + in, out := &in.PrivateLinkServiceConnectionState, &out.PrivateLinkServiceConnectionState + *out = new(PrivateLinkServiceConnectionState_STATUS) + (*in).DeepCopyInto(*out) + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(PrivateEndpointConnectionProperties_ProvisioningState_STATUS) + **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 PrivateEndpointConnectionReference_STATUS. +func (in *PrivateEndpointConnectionReference_STATUS) DeepCopy() *PrivateEndpointConnectionReference_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointConnectionReference_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 *PrivateEndpoint_STATUS) DeepCopyInto(out *PrivateEndpoint_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 PrivateEndpoint_STATUS. +func (in *PrivateEndpoint_STATUS) DeepCopy() *PrivateEndpoint_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpoint_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 *PrivateLinkServiceConnectionState_STATUS) DeepCopyInto(out *PrivateLinkServiceConnectionState_STATUS) { + *out = *in + if in.ActionsRequired != nil { + in, out := &in.ActionsRequired, &out.ActionsRequired + *out = new(PrivateLinkServiceConnectionState_ActionsRequired_STATUS) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(PrivateLinkServiceConnectionState_Status_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateLinkServiceConnectionState_STATUS. +func (in *PrivateLinkServiceConnectionState_STATUS) DeepCopy() *PrivateLinkServiceConnectionState_STATUS { + if in == nil { + return nil + } + out := new(PrivateLinkServiceConnectionState_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica) DeepCopyInto(out *Replica) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica. +func (in *Replica) DeepCopy() *Replica { + if in == nil { + return nil + } + out := new(Replica) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Replica) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaList) DeepCopyInto(out *ReplicaList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Replica, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaList. +func (in *ReplicaList) DeepCopy() *ReplicaList { + if in == nil { + return nil + } + out := new(ReplicaList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ReplicaList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReplicaOperatorSpec) DeepCopyInto(out *ReplicaOperatorSpec) { + *out = *in + if in.ConfigMapExpressions != nil { + in, out := &in.ConfigMapExpressions, &out.ConfigMapExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } + if in.SecretExpressions != nil { + in, out := &in.SecretExpressions, &out.SecretExpressions + *out = make([]*core.DestinationExpression, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(core.DestinationExpression) + **out = **in + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicaOperatorSpec. +func (in *ReplicaOperatorSpec) DeepCopy() *ReplicaOperatorSpec { + if in == nil { + return nil + } + out := new(ReplicaOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_STATUS) DeepCopyInto(out *Replica_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ReplicaProperties_ProvisioningState_STATUS) + **out = **in + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_STATUS. +func (in *Replica_STATUS) DeepCopy() *Replica_STATUS { + if in == nil { + return nil + } + out := new(Replica_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Replica_Spec) DeepCopyInto(out *Replica_Spec) { + *out = *in + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(ReplicaOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Replica_Spec. +func (in *Replica_Spec) DeepCopy() *Replica_Spec { + if in == nil { + return nil + } + out := new(Replica_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceIdentity) DeepCopyInto(out *ResourceIdentity) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(ResourceIdentity_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 ResourceIdentity. +func (in *ResourceIdentity) DeepCopy() *ResourceIdentity { + if in == nil { + return nil + } + out := new(ResourceIdentity) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceIdentity_STATUS) DeepCopyInto(out *ResourceIdentity_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(ResourceIdentity_Type_STATUS) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make(map[string]UserIdentity_STATUS, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceIdentity_STATUS. +func (in *ResourceIdentity_STATUS) DeepCopy() *ResourceIdentity_STATUS { + if in == nil { + return nil + } + out := new(ResourceIdentity_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 *Sku) DeepCopyInto(out *Sku) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sku. +func (in *Sku) DeepCopy() *Sku { + if in == nil { + return nil + } + out := new(Sku) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Sku_STATUS) DeepCopyInto(out *Sku_STATUS) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sku_STATUS. +func (in *Sku_STATUS) DeepCopy() *Sku_STATUS { + if in == nil { + return nil + } + out := new(Sku_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 *Snapshot) DeepCopyInto(out *Snapshot) { + *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 Snapshot. +func (in *Snapshot) DeepCopy() *Snapshot { + if in == nil { + return nil + } + out := new(Snapshot) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Snapshot) 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 *SnapshotList) DeepCopyInto(out *SnapshotList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Snapshot, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotList. +func (in *SnapshotList) DeepCopy() *SnapshotList { + if in == nil { + return nil + } + out := new(SnapshotList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SnapshotList) 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 *SnapshotOperatorSpec) DeepCopyInto(out *SnapshotOperatorSpec) { + *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 SnapshotOperatorSpec. +func (in *SnapshotOperatorSpec) DeepCopy() *SnapshotOperatorSpec { + if in == nil { + return nil + } + out := new(SnapshotOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Snapshot_STATUS) DeepCopyInto(out *Snapshot_STATUS) { + *out = *in + if in.CompositionType != nil { + in, out := &in.CompositionType, &out.CompositionType + *out = new(SnapshotProperties_CompositionType_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.Created != nil { + in, out := &in.Created, &out.Created + *out = new(string) + **out = **in + } + if in.Etag != nil { + in, out := &in.Etag, &out.Etag + *out = new(string) + **out = **in + } + if in.Expires != nil { + in, out := &in.Expires, &out.Expires + *out = new(string) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]KeyValueFilter_STATUS, 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.ItemsCount != nil { + in, out := &in.ItemsCount, &out.ItemsCount + *out = new(int) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(SnapshotProperties_ProvisioningState_STATUS) + **out = **in + } + if in.RetentionPeriod != nil { + in, out := &in.RetentionPeriod, &out.RetentionPeriod + *out = new(int) + **out = **in + } + if in.Size != nil { + in, out := &in.Size, &out.Size + *out = new(int) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(SnapshotProperties_Status_STATUS) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot_STATUS. +func (in *Snapshot_STATUS) DeepCopy() *Snapshot_STATUS { + if in == nil { + return nil + } + out := new(Snapshot_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 *Snapshot_Spec) DeepCopyInto(out *Snapshot_Spec) { + *out = *in + if in.CompositionType != nil { + in, out := &in.CompositionType, &out.CompositionType + *out = new(SnapshotProperties_CompositionType) + **out = **in + } + if in.Filters != nil { + in, out := &in.Filters, &out.Filters + *out = make([]KeyValueFilter, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(SnapshotOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.RetentionPeriod != nil { + in, out := &in.RetentionPeriod, &out.RetentionPeriod + *out = new(int) + **out = **in + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot_Spec. +func (in *Snapshot_Spec) DeepCopy() *Snapshot_Spec { + if in == nil { + return nil + } + out := new(Snapshot_Spec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SystemData_STATUS) DeepCopyInto(out *SystemData_STATUS) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByType != nil { + in, out := &in.CreatedByType, &out.CreatedByType + *out = new(SystemData_CreatedByType_STATUS) + **out = **in + } + if in.LastModifiedAt != nil { + in, out := &in.LastModifiedAt, &out.LastModifiedAt + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(string) + **out = **in + } + if in.LastModifiedByType != nil { + in, out := &in.LastModifiedByType, &out.LastModifiedByType + *out = new(SystemData_LastModifiedByType_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData_STATUS. +func (in *SystemData_STATUS) DeepCopy() *SystemData_STATUS { + if in == nil { + return nil + } + out := new(SystemData_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserAssignedIdentityDetails) DeepCopyInto(out *UserAssignedIdentityDetails) { + *out = *in + out.Reference = in.Reference +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserAssignedIdentityDetails. +func (in *UserAssignedIdentityDetails) DeepCopy() *UserAssignedIdentityDetails { + if in == nil { + return nil + } + out := new(UserAssignedIdentityDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserIdentity_STATUS) DeepCopyInto(out *UserIdentity_STATUS) { + *out = *in + if in.ClientId != nil { + in, out := &in.ClientId, &out.ClientId + *out = new(string) + **out = **in + } + if in.PrincipalId != nil { + in, out := &in.PrincipalId, &out.PrincipalId + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserIdentity_STATUS. +func (in *UserIdentity_STATUS) DeepCopy() *UserIdentity_STATUS { + if in == nil { + return nil + } + out := new(UserIdentity_STATUS) + in.DeepCopyInto(out) + return out +} diff --git a/v2/api/appconfiguration/versions_matrix.md b/v2/api/appconfiguration/versions_matrix.md index ba2bb22dd06..db97496a31e 100644 --- a/v2/api/appconfiguration/versions_matrix.md +++ b/v2/api/appconfiguration/versions_matrix.md @@ -1,32 +1,62 @@ -| Type Definitions in package "appconfiguration" | v1api20220501 | -|---------------------------------------------------------|---------------| -| APIVersion | v1api20220501 | -| ConfigurationStore | v1api20220501 | -| ConfigurationStoreProperties | v1api20220501 | -| ConfigurationStoreProperties_CreateMode | v1api20220501 | -| ConfigurationStoreProperties_CreateMode_STATUS | v1api20220501 | -| ConfigurationStoreProperties_ProvisioningState_STATUS | v1api20220501 | -| ConfigurationStoreProperties_PublicNetworkAccess | v1api20220501 | -| ConfigurationStoreProperties_PublicNetworkAccess_STATUS | v1api20220501 | -| ConfigurationStoreProperties_STATUS | v1api20220501 | -| ConfigurationStore_STATUS | v1api20220501 | -| ConfigurationStore_Spec | v1api20220501 | -| EncryptionProperties | v1api20220501 | -| EncryptionProperties_STATUS | v1api20220501 | -| KeyVaultProperties | v1api20220501 | -| KeyVaultProperties_STATUS | v1api20220501 | -| PrivateEndpointConnectionReference_STATUS | v1api20220501 | -| ResourceIdentity | v1api20220501 | -| ResourceIdentity_STATUS | v1api20220501 | -| ResourceIdentity_Type | v1api20220501 | -| ResourceIdentity_Type_STATUS | v1api20220501 | -| Sku | v1api20220501 | -| Sku_STATUS | v1api20220501 | -| SystemData | v1api20220501 | -| SystemData_CreatedByType | v1api20220501 | -| SystemData_CreatedByType_STATUS | v1api20220501 | -| SystemData_LastModifiedByType | v1api20220501 | -| SystemData_LastModifiedByType_STATUS | v1api20220501 | -| SystemData_STATUS | v1api20220501 | -| UserAssignedIdentityDetails | v1api20220501 | -| UserIdentity_STATUS | v1api20220501 | +| Type Definitions in package "appconfiguration" | v1api20220501 | v20240601 | +|--------------------------------------------------------------|---------------|-----------| +| APIVersion | v1api20220501 | v20240601 | +| ConfigurationStore | v1api20220501 | v20240601 | +| ConfigurationStoreProperties | v1api20220501 | v20240601 | +| ConfigurationStoreProperties_CreateMode | v1api20220501 | v20240601 | +| ConfigurationStoreProperties_CreateMode_STATUS | v1api20220501 | v20240601 | +| ConfigurationStoreProperties_ProvisioningState_STATUS | v1api20220501 | v20240601 | +| ConfigurationStoreProperties_PublicNetworkAccess | v1api20220501 | v20240601 | +| ConfigurationStoreProperties_PublicNetworkAccess_STATUS | v1api20220501 | v20240601 | +| ConfigurationStoreProperties_STATUS | v1api20220501 | v20240601 | +| ConfigurationStore_STATUS | v1api20220501 | v20240601 | +| ConfigurationStore_Spec | v1api20220501 | v20240601 | +| DataPlaneProxyProperties | | v20240601 | +| DataPlaneProxyProperties_AuthenticationMode | | v20240601 | +| DataPlaneProxyProperties_AuthenticationMode_STATUS | | v20240601 | +| DataPlaneProxyProperties_PrivateLinkDelegation | | v20240601 | +| DataPlaneProxyProperties_PrivateLinkDelegation_STATUS | | v20240601 | +| DataPlaneProxyProperties_STATUS | | v20240601 | +| EncryptionProperties | v1api20220501 | v20240601 | +| EncryptionProperties_STATUS | v1api20220501 | v20240601 | +| KeyValue | | v20240601 | +| KeyValueFilter | | v20240601 | +| KeyValueFilter_STATUS | | v20240601 | +| KeyValueProperties | | v20240601 | +| KeyValueProperties_STATUS | | v20240601 | +| KeyValue_STATUS | | v20240601 | +| KeyValue_Spec | | v20240601 | +| KeyVaultProperties | v1api20220501 | v20240601 | +| KeyVaultProperties_STATUS | v1api20220501 | v20240601 | +| PrivateEndpointConnectionProperties_ProvisioningState_STATUS | | v20240601 | +| PrivateEndpointConnectionProperties_STATUS | | v20240601 | +| PrivateEndpointConnectionReference_STATUS | v1api20220501 | v20240601 | +| PrivateEndpoint_STATUS | | v20240601 | +| PrivateLinkServiceConnectionState_ActionsRequired_STATUS | | v20240601 | +| PrivateLinkServiceConnectionState_STATUS | | v20240601 | +| PrivateLinkServiceConnectionState_Status_STATUS | | v20240601 | +| Replica | | v20240601 | +| ReplicaProperties_ProvisioningState_STATUS | | v20240601 | +| ReplicaProperties_STATUS | | v20240601 | +| Replica_STATUS | | v20240601 | +| Replica_Spec | | v20240601 | +| ResourceIdentity | v1api20220501 | v20240601 | +| ResourceIdentity_STATUS | v1api20220501 | v20240601 | +| ResourceIdentity_Type | v1api20220501 | v20240601 | +| ResourceIdentity_Type_STATUS | v1api20220501 | v20240601 | +| Sku | v1api20220501 | v20240601 | +| Sku_STATUS | v1api20220501 | v20240601 | +| Snapshot | | v20240601 | +| SnapshotProperties | | v20240601 | +| SnapshotProperties_CompositionType | | v20240601 | +| SnapshotProperties_CompositionType_STATUS | | v20240601 | +| SnapshotProperties_ProvisioningState_STATUS | | v20240601 | +| SnapshotProperties_STATUS | | v20240601 | +| SnapshotProperties_Status_STATUS | | v20240601 | +| Snapshot_STATUS | | v20240601 | +| Snapshot_Spec | | v20240601 | +| SystemData_CreatedByType_STATUS | v1api20220501 | v20240601 | +| SystemData_LastModifiedByType_STATUS | v1api20220501 | v20240601 | +| SystemData_STATUS | v1api20220501 | v20240601 | +| UserAssignedIdentityDetails | v1api20220501 | v20240601 | +| UserIdentity_STATUS | v1api20220501 | v20240601 | diff --git a/v2/azure-arm.yaml b/v2/azure-arm.yaml index d793ecee11d..62a159d7978 100644 --- a/v2/azure-arm.yaml +++ b/v2/azure-arm.yaml @@ -364,6 +364,12 @@ typeTransformers: remove: true because: This property should be marked readonly in Swagger + - group: appconfiguration + name: ConfigurationStore_Spec + property: SystemData + remove: true + because: This property should be marked readonly in Swagger + - name: IotHub_Spec group: devices property: Etag @@ -1505,6 +1511,32 @@ objectModelConfiguration: # This is a subresource but it's not labelled as one in their Swagger, instead there's a duplicate entity # shaped the same called PrivateEndpointConnection which is labelled as a resource. We want to prune this. $isResource: true + 2024-06-01: + ConfigurationStore: + $exportAs: ConfigurationStore + $supportedFrom: v2.17.0 + $azureGeneratedSecrets: + - PrimaryKeyID + - PrimaryKey + - PrimaryConnectionString + - SecondaryKeyID + - SecondaryKey + - SecondaryConnectionString + - PrimaryReadOnlyKeyID + - PrimaryReadOnlyKey + - PrimaryReadOnlyConnectionString + - SecondaryReadOnlyKeyID + - SecondaryReadOnlyKey + - SecondaryReadOnlyConnectionString + ConfigurationStores_KeyValue: + $exportAs: KeyValue + $supportedFrom: v2.17.0 + ConfigurationStores_Replica: + $exportAs: Replica + $supportedFrom: v2.17.0 + ConfigurationStores_Snapshot: + $exportAs: Snapshot + $supportedFrom: v2.17.0 authorization: 2020-08-01-preview: RoleAssignment: diff --git a/v2/internal/controllers/appconfiguration_keyvalue_v1api20240601_crud_test.go b/v2/internal/controllers/appconfiguration_keyvalue_v1api20240601_crud_test.go new file mode 100644 index 00000000000..d259d7dff19 --- /dev/null +++ b/v2/internal/controllers/appconfiguration_keyvalue_v1api20240601_crud_test.go @@ -0,0 +1,174 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +package controllers_test + +import ( + "testing" + + . "github.com/onsi/gomega" + + appconfig "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + "github.com/Azure/azure-service-operator/v2/internal/testcommon" + "github.com/Azure/azure-service-operator/v2/internal/util/to" +) + +func Test_AppConfiguration_KeyValue_v1api20240601_CRUD(t *testing.T) { + t.Parallel() + + if *isLive { + t.Skip("can't run in live mode, as ConfigurationStore retains the name after deletion which results in conflicts") + } + + tc := globalTestContext.ForTest(t) + + rg := tc.CreateTestResourceGroupAndWait() + + // Create ConfigurationStore + cs := &appconfig.ConfigurationStore{ + ObjectMeta: tc.MakeObjectMeta("confstore"), + Spec: appconfig.ConfigurationStore_Spec{ + CreateMode: to.Ptr(appconfig.ConfigurationStoreProperties_CreateMode_Default), + Location: tc.AzureRegion, + Owner: testcommon.AsOwner(rg), + Sku: &appconfig.Sku{ + Name: to.Ptr("standard"), + }, + PublicNetworkAccess: to.Ptr(appconfig.ConfigurationStoreProperties_PublicNetworkAccess_Enabled), + }, + } + + tc.CreateResourceAndWait(cs) + + tc.RunParallelSubtests( + testcommon.Subtest{ + Name: "AppConfiguration KeyValue CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + AppConfiguration_KeyValue_v1api20240601_CRUD(tc, cs) + }, + }, + testcommon.Subtest{ + Name: "AppConfiguration Replica CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + AppConfiguration_Replica_v1api20240601_CRUD(tc, cs) + }, + }, + testcommon.Subtest{ + Name: "AppConfiguration Snapshot CRUD", + Test: func(tc *testcommon.KubePerTestContext) { + AppConfiguration_Snapshot_v1api20240601_CRUD(tc, cs) + }, + }) + + tc.DeleteResourceAndWait(cs) +} + +func AppConfiguration_KeyValue_v1api20240601_CRUD(tc *testcommon.KubePerTestContext, cs *appconfig.ConfigurationStore) { + tc.LogSectionf("Creating KeyValue") + + keyValueName := tc.Namer.GenerateName("keyvalue") + keyValue := &appconfig.KeyValue{ + ObjectMeta: tc.MakeObjectMetaWithName(keyValueName), + Spec: appconfig.KeyValue_Spec{ + AzureName: "MyApp:Settings:TestKey", + Owner: testcommon.AsOwner(cs), + Value: to.Ptr("TestValue"), + ContentType: to.Ptr("text/plain"), + Tags: map[string]string{ + "Environment": "Test", + "Team": "Backend", + }, + }, + } + + tc.CreateResourceAndWait(keyValue) + + armId := *keyValue.Status.Id + tc.Expect(keyValue.Status.Key).ToNot(BeNil()) + tc.Expect(*keyValue.Status.Key).To(Equal("MyApp:Settings:TestKey")) + tc.Expect(keyValue.Status.Value).ToNot(BeNil()) + tc.Expect(*keyValue.Status.Value).To(Equal("TestValue")) + + // Update the value + old := keyValue.DeepCopy() + keyValue.Spec.Value = to.Ptr("UpdatedTestValue") + tc.PatchResourceAndWait(old, keyValue) + tc.Expect(*keyValue.Status.Value).To(Equal("UpdatedTestValue")) + + tc.DeleteResourceAndWait(keyValue) + + // Ensure that the resource was really deleted in Azure + exists, _, err := tc.AzureClient.CheckExistenceWithGetByID( + tc.Ctx, + armId, + string(appconfig.APIVersion_Value)) + tc.Expect(err).ToNot(HaveOccurred()) + tc.Expect(exists).To(BeFalse()) +} + +func AppConfiguration_Replica_v1api20240601_CRUD(tc *testcommon.KubePerTestContext, cs *appconfig.ConfigurationStore) { + tc.LogSectionf("Creating Replica") + + replicaName := tc.Namer.GenerateName("replica") + replica := &appconfig.Replica{ + ObjectMeta: tc.MakeObjectMetaWithName(replicaName), + Spec: appconfig.Replica_Spec{ + AzureName: "eastus2replica", + Owner: testcommon.AsOwner(cs), + Location: to.Ptr("eastus2"), + }, + } + + tc.CreateResourceAndWait(replica) + + armId := *replica.Status.Id + tc.Expect(replica.Status.Location).ToNot(BeNil()) + tc.Expect(*replica.Status.Location).To(Equal("eastus2")) + tc.Expect(replica.Status.Endpoint).ToNot(BeNil()) + tc.Expect(replica.Status.ProvisioningState).ToNot(BeNil()) + + tc.DeleteResourceAndWait(replica) + + // Ensure that the resource was really deleted in Azure + exists, _, err := tc.AzureClient.CheckExistenceWithGetByID( + tc.Ctx, + armId, + string(appconfig.APIVersion_Value)) + tc.Expect(err).ToNot(HaveOccurred()) + tc.Expect(exists).To(BeFalse()) +} + +func AppConfiguration_Snapshot_v1api20240601_CRUD(tc *testcommon.KubePerTestContext, cs *appconfig.ConfigurationStore) { + tc.LogSectionf("Creating Snapshot") + + snapshotName := tc.Namer.GenerateName("snapshot") + snapshot := &appconfig.Snapshot{ + ObjectMeta: tc.MakeObjectMetaWithName(snapshotName), + Spec: appconfig.Snapshot_Spec{ + AzureName: "test-snapshot", + Owner: testcommon.AsOwner(cs), + CompositionType: to.Ptr(appconfig.SnapshotProperties_CompositionType_Key), + Filters: []appconfig.KeyValueFilter{ + { + Key: to.Ptr("MyApp:*"), + }, + }, + RetentionPeriod: to.Ptr(60 * 60 * 24 * 30), // 30 days + Tags: map[string]string{ + "Environment": "Test", + "Purpose": "Testing", + }, + }, + } + + tc.CreateResourceAndWait(snapshot) + + tc.Expect(snapshot.Status.CompositionType).ToNot(BeNil()) + tc.Expect(snapshot.Status.ProvisioningState).ToNot(BeNil()) + tc.Expect(snapshot.Status.ItemsCount).ToNot(BeNil()) + + // Snapshots can't be directly deleted + // tc.DeleteResourceAndWait(snapshot) +} diff --git a/v2/internal/controllers/controller_resources_gen.go b/v2/internal/controllers/controller_resources_gen.go index 2f12451d180..296352cc4d3 100644 --- a/v2/internal/controllers/controller_resources_gen.go +++ b/v2/internal/controllers/controller_resources_gen.go @@ -32,6 +32,9 @@ import ( appconfiguration_v20220501 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501" appconfiguration_v20220501s "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/storage" appconfiguration_v20220501w "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v1api20220501/webhook" + appconfiguration_v20240601 "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601" + appconfiguration_v20240601s "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/storage" + appconfiguration_v20240601w "github.com/Azure/azure-service-operator/v2/api/appconfiguration/v20240601/webhook" authorization_customizations "github.com/Azure/azure-service-operator/v2/api/authorization/customizations" authorization_v20200801p "github.com/Azure/azure-service-operator/v2/api/authorization/v1api20200801preview" authorization_v20200801ps "github.com/Azure/azure-service-operator/v2/api/authorization/v1api20200801preview/storage" @@ -692,7 +695,10 @@ func getKnownStorageTypes() []*registration.StorageType { }, }, }) - result = append(result, ®istration.StorageType{Obj: new(appconfiguration_v20220501s.ConfigurationStore)}) + result = append(result, ®istration.StorageType{Obj: new(appconfiguration_v20240601s.ConfigurationStore)}) + result = append(result, ®istration.StorageType{Obj: new(appconfiguration_v20240601s.KeyValue)}) + result = append(result, ®istration.StorageType{Obj: new(appconfiguration_v20240601s.Replica)}) + result = append(result, ®istration.StorageType{Obj: new(appconfiguration_v20240601s.Snapshot)}) result = append(result, ®istration.StorageType{ Obj: new(authorization_v20220401s.RoleAssignment), Indexes: []registration.Index{ @@ -3154,6 +3160,34 @@ func getKnownTypes() []*registration.KnownType { Validator: &appconfiguration_v20220501w.ConfigurationStore{}, }) result = append(result, ®istration.KnownType{Obj: new(appconfiguration_v20220501s.ConfigurationStore)}) + result = append( + result, + ®istration.KnownType{ + Obj: new(appconfiguration_v20240601.ConfigurationStore), + Defaulter: &appconfiguration_v20240601w.ConfigurationStore{}, + Validator: &appconfiguration_v20240601w.ConfigurationStore{}, + }, + ®istration.KnownType{ + Obj: new(appconfiguration_v20240601.KeyValue), + Defaulter: &appconfiguration_v20240601w.KeyValue{}, + Validator: &appconfiguration_v20240601w.KeyValue{}, + }, + ®istration.KnownType{ + Obj: new(appconfiguration_v20240601.Replica), + Defaulter: &appconfiguration_v20240601w.Replica{}, + Validator: &appconfiguration_v20240601w.Replica{}, + }, + ®istration.KnownType{ + Obj: new(appconfiguration_v20240601.Snapshot), + Defaulter: &appconfiguration_v20240601w.Snapshot{}, + Validator: &appconfiguration_v20240601w.Snapshot{}, + }) + result = append( + result, + ®istration.KnownType{Obj: new(appconfiguration_v20240601s.ConfigurationStore)}, + ®istration.KnownType{Obj: new(appconfiguration_v20240601s.KeyValue)}, + ®istration.KnownType{Obj: new(appconfiguration_v20240601s.Replica)}, + ®istration.KnownType{Obj: new(appconfiguration_v20240601s.Snapshot)}) result = append(result, ®istration.KnownType{ Obj: new(authorization_v20200801p.RoleAssignment), Defaulter: &authorization_v20200801pw.RoleAssignment{}, @@ -5863,6 +5897,8 @@ func createScheme() *runtime.Scheme { _ = app_v20250101s.AddToScheme(scheme) _ = appconfiguration_v20220501.AddToScheme(scheme) _ = appconfiguration_v20220501s.AddToScheme(scheme) + _ = appconfiguration_v20240601.AddToScheme(scheme) + _ = appconfiguration_v20240601s.AddToScheme(scheme) _ = authorization_v20200801p.AddToScheme(scheme) _ = authorization_v20200801ps.AddToScheme(scheme) _ = authorization_v20220401.AddToScheme(scheme) @@ -6108,6 +6144,9 @@ func getResourceExtensions() []genruntime.ResourceExtension { result = append(result, &app_customizations.JobExtension{}) result = append(result, &app_customizations.ManagedEnvironmentExtension{}) result = append(result, &appconfiguration_customizations.ConfigurationStoreExtension{}) + result = append(result, &appconfiguration_customizations.KeyValueExtension{}) + result = append(result, &appconfiguration_customizations.ReplicaExtension{}) + result = append(result, &appconfiguration_customizations.SnapshotExtension{}) result = append(result, &authorization_customizations.RoleAssignmentExtension{}) result = append(result, &authorization_customizations.RoleDefinitionExtension{}) result = append(result, &batch_customizations.BatchAccountExtension{}) diff --git a/v2/internal/controllers/recordings/Test_AppConfiguration_KeyValue_v1api20240601_CRUD.yaml b/v2/internal/controllers/recordings/Test_AppConfiguration_KeyValue_v1api20240601_CRUD.yaml new file mode 100644 index 00000000000..d6746407e98 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_AppConfiguration_KeyValue_v1api20240601_CRUD.yaml @@ -0,0 +1,2249 @@ +--- +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-rqzupz","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - ca99429cef1cb9b8c7222ba88c02881ab8a38b0ddcf2837ec3b005b5b638bd6c + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz?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-rqzupz","name":"asotest-rg-rqzupz","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: 639F09F4600546EDA73F186BC76FC6C5 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:09Z' + status: 201 Created + code: 201 + duration: 3.105033296s + - 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-rqzupz?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-rqzupz","name":"asotest-rg-rqzupz","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: EEF852D895E24EDE94F452420AC7F9B6 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:15Z' + status: 200 OK + code: 200 + duration: 256.57165ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 152 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotest-confstore-voggjk","properties":{"createMode":"Default","publicNetworkAccess":"Enabled"},"sku":{"name":"standard"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "152" + Content-Type: + - application/json + Test-Request-Hash: + - ba19fb351c5b0045477bdb110bc23892e2048321c69fb84df211e6fd124381fd + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 668 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores","location":"westus2","properties":{"provisioningState":"Creating","creationDate":"2025-12-01T00:50:19.8314156+00:00","endpoint":null,"encryption":null,"privateEndpointConnections":null,"disableLocalAuth":null,"softDeleteRetentionInDays":null,"defaultKeyValueRevisionRetentionPeriodInSeconds":null,"enablePurgeProtection":null,"dataPlaneProxy":null},"sku":{"name":"standard"},"systemData":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk","name":"asotest-confstore-voggjk","tags":{}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470199873655&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=P7iusFSfcp_kQGOUz0JDN9CgwA06kOq-vSTyRXdia3hO9BxBPB1Z9D2rFk_M2i2QB4ro7iDRSochAk8vWweTuEHs7jhSPZcgzAasohgqxZgqhdAo_gAb83qe_ikAMS1XEcgvWArqUWBoO4NLAyyriro5DZvfBfsv3V-XsBzJ3HbPa3ZlLBCXAjYdsM7sUXJk-P8tXC9a5TG1I23g1E1cisRqokyol8MvfILzDd7fBjEgjaEBkwROzeieQpt3f9hfIJ3n6lSDxmRzGUTq9O-Tc10FMfvDM89MpjvW3TZw0WfVofbKFxbUVy-2quepdkOeNg8w-m5PxnQXq83J0plluw&h=FIolBdGvOaC_2bBH0GY6gnWBXmPwv4_Qnmo4Iq9xz54 + Cache-Control: + - no-cache + Content-Length: + - "668" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/13d2d7c1-48be-4516-ab50-8d22079ece67 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 27203AE70EB5407ABDFBF1C6A9122901 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:19Z' + status: 201 Created + code: 201 + duration: 701.272912ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470199873655&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=P7iusFSfcp_kQGOUz0JDN9CgwA06kOq-vSTyRXdia3hO9BxBPB1Z9D2rFk_M2i2QB4ro7iDRSochAk8vWweTuEHs7jhSPZcgzAasohgqxZgqhdAo_gAb83qe_ikAMS1XEcgvWArqUWBoO4NLAyyriro5DZvfBfsv3V-XsBzJ3HbPa3ZlLBCXAjYdsM7sUXJk-P8tXC9a5TG1I23g1E1cisRqokyol8MvfILzDd7fBjEgjaEBkwROzeieQpt3f9hfIJ3n6lSDxmRzGUTq9O-Tc10FMfvDM89MpjvW3TZw0WfVofbKFxbUVy-2quepdkOeNg8w-m5PxnQXq83J0plluw&h=FIolBdGvOaC_2bBH0GY6gnWBXmPwv4_Qnmo4Iq9xz54 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","name":"m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470231239946&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=psEECkRUxPazDXxYqSonEhzii4BH_Ayq4BjZLSeAkceCO9d_oV-hC3hyjIar2KNpVg31vEzZs0CNzzz11-q12QWuY88p1e7o4yWm8rvIVYgWp5locojrOKNxzXtZyzQ1ZMGANI4yW9e6ALcmg835H6wSp5osMYHeS2lBBsLDFNJvEM9VRT56j9zKaM78dUIONFzXCyrJx1SN5PfRc2Bg8lOtezVg_pYL8yjGGlVolVlTbnlNMnOjgjIGnbtHQi0WLCYMXsveOCmwhOZmYvuQSiSNb4Y1hUsK1JtdHmj7YlEOFtd29-N_zDo9jSH0Bf4gZ3A8WToberZbREqwBdwyIA&h=wR8El3gsKe3MZWhevn-ercX7jEsHcM9_HHo92Xrmee4 + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/3e5bb9d5-dd7b-43c7-bd5e-f2b8d769ef01 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 8161D63FB65B45A6B1B554AFE9EFE0F7 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:22Z' + status: 200 OK + code: 200 + duration: 298.888107ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470199873655&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=P7iusFSfcp_kQGOUz0JDN9CgwA06kOq-vSTyRXdia3hO9BxBPB1Z9D2rFk_M2i2QB4ro7iDRSochAk8vWweTuEHs7jhSPZcgzAasohgqxZgqhdAo_gAb83qe_ikAMS1XEcgvWArqUWBoO4NLAyyriro5DZvfBfsv3V-XsBzJ3HbPa3ZlLBCXAjYdsM7sUXJk-P8tXC9a5TG1I23g1E1cisRqokyol8MvfILzDd7fBjEgjaEBkwROzeieQpt3f9hfIJ3n6lSDxmRzGUTq9O-Tc10FMfvDM89MpjvW3TZw0WfVofbKFxbUVy-2quepdkOeNg8w-m5PxnQXq83J0plluw&h=FIolBdGvOaC_2bBH0GY6gnWBXmPwv4_Qnmo4Iq9xz54 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","name":"m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470344659360&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=VUD5G_p4n33Y-In0G82IH20F8CzKeVBogb16ZufK_94_vEyX4oej4coUs6yf1BX98wvx4HOoIwzgHrI_Op8_61gdbzAGVaPuXZRPRZnJLPZk4WZpeyKlJ1xsFmjuC4D_PVqola3rhQjTSLKcUQ9UjGJDA5fSSZpoOkgCU0BIEBkpPgnK3BW8ZNyCWuLCLxsFaR2L5H9ZY3ByyV1JPVXQVgk2wFV07itIhiDYKJdJUFdToa9BlfHIfqwap1gvyip6nSKdXUEGonJsf22cXrOkRUcABjk8-TQWnw3fMEFI-N99r9_k3fxDiiQaWBES8Mccb0OKOF1V70ABE_eB5ymHWQ&h=ZN4Hfn8xiD7nwNJR2OjH4qzMtd3LxiuXsoP10xTz29E + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/08c0f56c-13d7-4d49-8ff5-5bedaf45097a + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 2B4AD8752617417397F5F64FB667BEC3 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:33Z' + status: 200 OK + code: 200 + duration: 737.215384ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470199873655&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=P7iusFSfcp_kQGOUz0JDN9CgwA06kOq-vSTyRXdia3hO9BxBPB1Z9D2rFk_M2i2QB4ro7iDRSochAk8vWweTuEHs7jhSPZcgzAasohgqxZgqhdAo_gAb83qe_ikAMS1XEcgvWArqUWBoO4NLAyyriro5DZvfBfsv3V-XsBzJ3HbPa3ZlLBCXAjYdsM7sUXJk-P8tXC9a5TG1I23g1E1cisRqokyol8MvfILzDd7fBjEgjaEBkwROzeieQpt3f9hfIJ3n6lSDxmRzGUTq9O-Tc10FMfvDM89MpjvW3TZw0WfVofbKFxbUVy-2quepdkOeNg8w-m5PxnQXq83J0plluw&h=FIolBdGvOaC_2bBH0GY6gnWBXmPwv4_Qnmo4Iq9xz54 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","name":"m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470461875358&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=RfREbVOzQIz_HOrveCfw_rSLhxa6XG76edG5icswMhhaONF75JuFOCcovwA-mbVk_EeXMP276UMLsEuoOdHicE6UyuOv9-zmHZ2U4EQarYs4juKVq8MF0J8uwnmZ9m6RfbOGkTctrXmNBGJc5-n2-v_uDTUq6eTQ_LJV_QZRw9gu0Hdn9MHuwwKxz6fFN2HCskg2iFGOe7ltmpgzKKb_UUnNtzc3bo0qV9Cjmo3JZNRp0Pif9q2IP1pN8YN50VP7bCyqLOBI4AgfYdVWtr58CuTjg7suzstoe3HyqobPlnFz-hwJzmE1IWgl0SAnwMo92w96MlAGR8DMJ115IY7YoA&h=mCdXpt1vTBvObgxEUz5Bnaz19Ij-rNTPS0kMa6ciieM + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/3a2ed9da-0b03-4b98-9faf-a139b297917f + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 2639B2BC596C4EF08EEDB32C899D8279 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:45Z' + status: 200 OK + code: 200 + duration: 759.232859ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470199873655&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=P7iusFSfcp_kQGOUz0JDN9CgwA06kOq-vSTyRXdia3hO9BxBPB1Z9D2rFk_M2i2QB4ro7iDRSochAk8vWweTuEHs7jhSPZcgzAasohgqxZgqhdAo_gAb83qe_ikAMS1XEcgvWArqUWBoO4NLAyyriro5DZvfBfsv3V-XsBzJ3HbPa3ZlLBCXAjYdsM7sUXJk-P8tXC9a5TG1I23g1E1cisRqokyol8MvfILzDd7fBjEgjaEBkwROzeieQpt3f9hfIJ3n6lSDxmRzGUTq9O-Tc10FMfvDM89MpjvW3TZw0WfVofbKFxbUVy-2quepdkOeNg8w-m5PxnQXq83J0plluw&h=FIolBdGvOaC_2bBH0GY6gnWBXmPwv4_Qnmo4Iq9xz54 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","name":"m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.m_yK0QcbdWEk6y9Qvs2bWfZcyl-Fkva6sjeLYxbes-M?api-version=2024-06-01&t=639001470578927605&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=jZembTIIY9MCr3ZFrLNZDeZ9pzPBTH6q7BjY5ZP0cSNqvOTob8RMTwLPe8G5v0yLJAKY7su2uOBmsw-R2vMaGcRilDnxqqOMJJlBHeKAaTj9oD2KaB78uY3WJphSd_9Yw4FoQ8IzGSGRdtf5jjeIxxDjVDr94YUi5pghKv-6onS0cDc0L7tz3E76W7yAzfAashm6iCnpmnZ9vFRiJaWPrSJ1PSq78ND9FstEK6hP6yobdbyKtiCwbptZDsIgCv-EOUKqdZgnIPz_nM0eUT1OlnBHGQmCY5cR9PubWfESPLE5-cXnbedVeRNQScNI0p3CueqXyI5m8V1V7XuA9ahbrA&h=X6U1dO574FjLYH7YhigfRnj-HxWmAtaTve_eZeVlbuI + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/8872e209-8ab1-4e12-a1b2-07b05377c2f4 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 8D83F4CE211D4C449E3A4970DB6841FA Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:57Z' + status: 200 OK + code: 200 + duration: 730.345003ms + - 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-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1029 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores","location":"westus2","properties":{"provisioningState":"Succeeded","creationDate":"2025-12-01T00:50:19+00:00","endpoint":"https://asotest-confstore-voggjk.azconfig.io","encryption":{"keyVaultProperties":null},"privateEndpointConnections":null,"publicNetworkAccess":"Enabled","disableLocalAuth":false,"softDeleteRetentionInDays":7,"defaultKeyValueRevisionRetentionPeriodInSeconds":2592000,"enablePurgeProtection":false,"dataPlaneProxy":{"authenticationMode":"Local","privateLinkDelegation":"Disabled"}},"sku":{"name":"standard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T00:50:19+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T00:50:19+00:00"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk","name":"asotest-confstore-voggjk","tags":{}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1029" + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"1004fdb9-0000-0800-0000-692ce64d0000"' + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16498" + X-Msedge-Ref: + - 'Ref A: BEB82BBA498E43F88A52959A50F6F2F9 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:58Z' + status: 200 OK + code: 200 + duration: 429.144133ms + - 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-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1029 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores","location":"westus2","properties":{"provisioningState":"Succeeded","creationDate":"2025-12-01T00:50:19+00:00","endpoint":"https://asotest-confstore-voggjk.azconfig.io","encryption":{"keyVaultProperties":null},"privateEndpointConnections":null,"publicNetworkAccess":"Enabled","disableLocalAuth":false,"softDeleteRetentionInDays":7,"defaultKeyValueRevisionRetentionPeriodInSeconds":2592000,"enablePurgeProtection":false,"dataPlaneProxy":{"authenticationMode":"Local","privateLinkDelegation":"Disabled"}},"sku":{"name":"standard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T00:50:19+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T00:50:19+00:00"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk","name":"asotest-confstore-voggjk","tags":{}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1029" + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"1004fdb9-0000-0800-0000-692ce64d0000"' + 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: 8A43EE7256A84EAB80B9438ED87B3902 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:50:59Z' + status: 200 OK + code: 200 + duration: 262.948722ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 142 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"MyApp:Settings:TestKey","properties":{"contentType":"text/plain","tags":{"Environment":"Test","Team":"Backend"},"value":"TestValue"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "142" + Content-Type: + - application/json + Test-Request-Hash: + - 6bcf34ba2e8909ea79a1b42e1b0142bca01f163ecb5025df0ae6c665bdb888ba + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 570 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/keyValues","properties":{"key":"MyApp:Settings:TestKey","label":null,"value":"TestValue","contentType":"text/plain","eTag":"JS27hLwdpIbMraVPTtvw1BLlCxKj5pg3EtrV9HbY4A0","lastModified":"2025-12-01T00:51:06+00:00","locked":false,"tags":{"Environment":"Test","Team":"Backend"}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey","name":"MyApp:Settings:TestKey"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "570" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/cfd41ddf-e842-40bf-bd51-12b194293d88 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: A0831574EDDE48D696F31CCC354FA89B Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:05Z' + status: 200 OK + code: 200 + duration: 809.310638ms + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 46 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"eastus2","name":"eastus2replica"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "46" + Content-Type: + - application/json + Test-Request-Hash: + - 270788344f58e98c2ca91bffeee538ece12051f5e03ac253f553945b93b12435 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 389 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica","name":"eastus2replica","type":"Microsoft.AppConfiguration/configurationStores/replicas","location":"eastus2","properties":{"endpoint":null,"provisioningState":"Creating"},"systemData":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + Cache-Control: + - no-cache + Content-Length: + - "389" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/5748aebc-6635-4e1d-8209-c2fa93a0dd92 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 0CF3CD78CD684DE781AFC23768FCB3AB Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:05Z' + status: 201 Created + code: 201 + duration: 830.467526ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 169 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"test-snapshot","properties":{"compositionType":"Key","filters":[{"key":"MyApp:*"}],"retentionPeriod":2592000,"tags":{"Environment":"Test","Purpose":"Testing"}}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "169" + Content-Type: + - application/json + Test-Request-Hash: + - d8d4d707568f198f04a0443d31986ca314e13ad2d64f8580b8f29cdd33d1b601 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 575 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/snapshots","properties":{"provisioningState":"Creating","status":"Provisioning","filters":[{"key":"MyApp:*","label":null}],"compositionType":"Key","created":"0001-01-01T00:00:00+00:00","retentionPeriod":2592000,"size":0,"itemsCount":0,"tags":{"Environment":"Test","Purpose":"Testing"},"etag":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot","name":"test-snapshot"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470661512555&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OTxNNSI2E6OVsQfU7IqFiDh2b-oj-Pc37CaUMRNG3vM7wwZvM0wK0vArve4R9mBaSn0bT_C2U6vxApHbjRVhswwPaOqc788B2ZlyZA21l3W53o1L31gaCchcnBtZfpIGrYWDkH_-qAdpI-N5vYvCpSAhrVWLGdmZoho281tDb8KJEynj_9MxtleK4Xzyxtl602fTwEWSLy2xDHKyHn4pjsVrcf55MOQb3eg_ZjVJpkf1qNFmv1O-6fYeSIYwuFj2R2gD22QKzzSme5WkG3z5ovrQHKerhndWpyCCtAM5d4ivqqJKCJjD6I4NRbCh-pdWtwywyplGz1YOHOa5AQFy0Q&h=y9g84Zjf2uf8Dm_7UsnJ7wcqMd_aH92HKwvt8ubF704 + Cache-Control: + - no-cache + Content-Length: + - "575" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/d1a944e3-86f5-4442-9840-8c58bbbe1f73 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 6766B9AAF9DA43B6972844B9408A11A7 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:05Z' + status: 201 Created + code: 201 + duration: 869.309378ms + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 570 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/keyValues","properties":{"key":"MyApp:Settings:TestKey","label":null,"value":"TestValue","contentType":"text/plain","eTag":"JS27hLwdpIbMraVPTtvw1BLlCxKj5pg3EtrV9HbY4A0","lastModified":"2025-12-01T00:51:06+00:00","locked":false,"tags":{"Environment":"Test","Team":"Backend"}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey","name":"MyApp:Settings:TestKey"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "570" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/f4ddc80d-9865-43a5-8f55-b31e4728709a + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11998" + X-Msedge-Ref: + - 'Ref A: C74CA0743FE442F59B4A01F10A487FF8 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:07Z' + status: 200 OK + code: 200 + duration: 341.232196ms + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","name":"opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470692763755&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=NqWFz7cuWlZnXmue6a54t63BmYLzPWU2g4c8mIyiQSBCCOcBuevn7b1vtBTjIEUUyYOjZbWP7zxbWxK1PAewyFzcpXyjvWyyP8sYPN88q23mf7TdZ73V2JTVqVu_Dzp7XZmLDXa1x_lNnlKyRsfd1yn_NnYkv8w6B7VNCqNB9HS55spssiHqo1P9TkitCCbGCQvX0h9K5z4jMxJDpx3mtOvKYBw-5NI9widcrehvkuLIieC3SXsTwDytk2HLxqdrF_vN2UHmPv49wR9bFnhqvky4oGF4uLtW1v8eJaXBvHdue6dnGaZiOd2wPO2yRa-GOwDyBMvpgIl2Ek6Co7iwxg&h=PWFxE6QOAd7i-7AOeD04wtKZ6WqHEKpj-5RIw65AwJw + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/bc19506d-fe33-4ff9-bd8f-34b9911ef146 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 14AE742A128C4EAC955E1E6D69D2805B Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:09Z' + status: 200 OK + code: 200 + duration: 253.789664ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470661512555&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OTxNNSI2E6OVsQfU7IqFiDh2b-oj-Pc37CaUMRNG3vM7wwZvM0wK0vArve4R9mBaSn0bT_C2U6vxApHbjRVhswwPaOqc788B2ZlyZA21l3W53o1L31gaCchcnBtZfpIGrYWDkH_-qAdpI-N5vYvCpSAhrVWLGdmZoho281tDb8KJEynj_9MxtleK4Xzyxtl602fTwEWSLy2xDHKyHn4pjsVrcf55MOQb3eg_ZjVJpkf1qNFmv1O-6fYeSIYwuFj2R2gD22QKzzSme5WkG3z5ovrQHKerhndWpyCCtAM5d4ivqqJKCJjD6I4NRbCh-pdWtwywyplGz1YOHOa5AQFy0Q&h=y9g84Zjf2uf8Dm_7UsnJ7wcqMd_aH92HKwvt8ubF704 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","name":"5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470693858294&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OwVbC8cyxOOw4AT13s2whAKXOIvxsLuVooWCk4UIxq215IX8teU1fYcoXr6NWXoniAF5TIlPwdhpwvwh0yonDTVqRXe0Ueef6CVz4eKLRop1-JY3di_-0cAFwPYnI_A-Zfdb6gLJo2j_zCMkvERNIBTzbPUJU_lPv_X303bbtGRl6p_feHbq5Ip7VCFhACfAqZPdbCpYg6oNGhR538bW-THiLqSPXTynm_yPVgf3at6_SyK-F3qd4SQoTRIr-GOM0yoq861gK7UIa3o5LWDLshr_2PuuAwa8D38jMIH8r6AEtbPEdNS1Hl9dNovW2CxZgMCIMeTykVbFnwsf2JsdBw&h=TitOK8KJREyaIDrLjbFkKJJpq_3VrZ6wgcA4LDRFy2Y + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/e42d78ba-4f29-493f-a5af-f70494999be4 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: BC2BD1F3966C4F39A03B8BF85ADA79DC Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:09Z' + status: 200 OK + code: 200 + duration: 288.188795ms + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 149 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"MyApp:Settings:TestKey","properties":{"contentType":"text/plain","tags":{"Environment":"Test","Team":"Backend"},"value":"UpdatedTestValue"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "149" + Content-Type: + - application/json + Test-Request-Hash: + - 94730b540f7179357fb4f05f78a78f479a214d130db7f03e1634645e949807fe + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 577 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/keyValues","properties":{"key":"MyApp:Settings:TestKey","label":null,"value":"UpdatedTestValue","contentType":"text/plain","eTag":"J99PEddrczfQ4YxKwPIQq-VecBwHBc-5XfgWuhRaMbs","lastModified":"2025-12-01T00:51:10+00:00","locked":false,"tags":{"Environment":"Test","Team":"Backend"}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey","name":"MyApp:Settings:TestKey"}' + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/33697b5f-c363-4ed9-b392-9eafd21f197a + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: DDE1CB4543D1443CA52C185166D9AB12 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:09Z' + status: 200 OK + code: 200 + duration: 1.490574467s + - 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-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 577 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/keyValues","properties":{"key":"MyApp:Settings:TestKey","label":null,"value":"UpdatedTestValue","contentType":"text/plain","eTag":"J99PEddrczfQ4YxKwPIQq-VecBwHBc-5XfgWuhRaMbs","lastModified":"2025-12-01T00:51:10+00:00","locked":false,"tags":{"Environment":"Test","Team":"Backend"}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey","name":"MyApp:Settings:TestKey"}' + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/df95d541-f28c-4216-a69e-dad3fb796e87 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 08B5A0794F734E53A900B8D1EA2C52E9 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:12Z' + status: 200 OK + code: 200 + duration: 321.440212ms + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey?api-version=2024-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/bb18db16-6598-450c-8ed7-ff6d7cc78024 + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 58F933A3096F4FAE9B4E7B7178628F3C Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:14Z' + status: 204 No Content + code: 204 + duration: 362.308633ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","name":"opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470799794649&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=lxjKdF23-Ex3FHiO8rsWFyblcNpK_p65PKeSbh_eBWxpNK5TQj8CF-FKEpZdqa6fdlmDkHUp3HQfsITKP3rZBZq4QYZI9LWz-GCFjhuy5TSt_rFdTyZ5Pm6L3Yx6cLXtrI31slmjCNHMQREF5aO7XZo9zlKUdkTU1u3cMRrYnvPJkNH88_pfAQMgk8-VP6qp1iuqm-mdjWijsTwdjg-5deVX_V5my6mveu3y9L-ZAcbYxusz-d7ObVIrfrHeK5wjODSjMAzV_0U4RoZ7NDmWyAjRoArZCAWMq1O0E9UwB3swWTfnqi0HATmeMEcJ4n2nSsvNxPE7w4usvegYgL_QWQ&h=XlTMy6PfVoGJe8OmoOFYD20gd8bV9l11nfzT8TdeD3A + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/c6052020-b298-40e9-bf4e-570ea1eb9fbf + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: CD226E288BC042C0A83060B555160F17 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:19Z' + status: 200 OK + code: 200 + duration: 242.535723ms + - id: 19 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/keyValues/MyApp:Settings:TestKey?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 210 + uncompressed: false + body: '{"error":{"code":"EntityNotFound","message":"The resource with id ''MyApp:Settings:TestKey'' was not found.","additionalInfo":[{"type":"ActivityId","info":{"activityId":"697fe0ea-74e0-4b7d-a209-978f9395733b"}}]}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "210" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/205f86ba-6db6-416d-a42f-5d210f5a5383 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 62A89396AAE545669E37DEEAEE5DE062 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:19Z' + status: 404 Not Found + code: 404 + duration: 364.415639ms + - id: 20 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470661512555&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OTxNNSI2E6OVsQfU7IqFiDh2b-oj-Pc37CaUMRNG3vM7wwZvM0wK0vArve4R9mBaSn0bT_C2U6vxApHbjRVhswwPaOqc788B2ZlyZA21l3W53o1L31gaCchcnBtZfpIGrYWDkH_-qAdpI-N5vYvCpSAhrVWLGdmZoho281tDb8KJEynj_9MxtleK4Xzyxtl602fTwEWSLy2xDHKyHn4pjsVrcf55MOQb3eg_ZjVJpkf1qNFmv1O-6fYeSIYwuFj2R2gD22QKzzSme5WkG3z5ovrQHKerhndWpyCCtAM5d4ivqqJKCJjD6I4NRbCh-pdWtwywyplGz1YOHOa5AQFy0Q&h=y9g84Zjf2uf8Dm_7UsnJ7wcqMd_aH92HKwvt8ubF704 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","name":"5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470802727028&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=dpsEG7KYydtxVyd7ekpgvvTe3GydDBLuZ4cwnFz1C0zE5diUsNjtZsazYxPsKIcVD3cCUbFis9c5VAADhaDOuI_z5D0O83bff-u7eZ0TxDEJJN6RuUJVmxKCZ6xXMOtXiM5J79nDSNFPFJXszgd3nXEhOowS62zj2QfX610dIVWC0BAr20OSj1D5OYtKf_sFpccKedVmAoh_-aKfvt8X-N3IN3q3vGi2tER-6Wbk6WytxCrikAzJjKpaoP71JX9GZiWza70Zy863jU8Y3Dtj5cAFmaa6ER8TL6IYMwOUJHMkHPmwE9_y1q1Y39vc7RjKa4A2sm0mBTjMSqS4onQExw&h=VqYl47sFR3zCpE0YhAOlx4Mla7VvE3AZ44TCLdft20s + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/4f52170e-8afc-48c9-8f4c-44305417996d + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 35BD330473F34EEB8F996DB48961E2CD Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:20Z' + status: 200 OK + code: 200 + duration: 367.721654ms + - id: 21 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","name":"opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470912801024&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=j3tZJ559cQIaarSZJSeKMgBFkoQq2WXJP-ezrbBdIYx-d6cKtghQ-90SSWWHBYM9RMbCNLK36k58gf74_3OG00zQAJpwTWeKfQuJUiBUMulQuYm-7n-hnWbemHofdQQ_BJLlL76q--XR9iR4sSDPFUK2GL3eYtJM9GBnQ3UxSOVINvJH8hSCtOFZe9V-pbnF2LWG2-V6ujyz0VdDH0KWveazTvUB-wKixvKmYBsuBfZxOalFFkWgnU4yhAaDjfGOxGEOkDi6PWqlpmC7i8m0_1aSu4Mx6CKr2jrX16MSs0bqcjG5ZapnB3Ug-i_h1DFpQ7t5QVxF_bDHNRSsoYFXBQ&h=xy8cNe9tv5_4Yiw4tV0mXBytxh9JGqR0a9R1Tml7R-s + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/edd52a79-0fd2-45a1-88e3-e65a6230abca + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 736B896A869E4FFAB1CBAE3134B5AADA Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:30Z' + status: 200 OK + code: 200 + duration: 756.620668ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470661512555&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OTxNNSI2E6OVsQfU7IqFiDh2b-oj-Pc37CaUMRNG3vM7wwZvM0wK0vArve4R9mBaSn0bT_C2U6vxApHbjRVhswwPaOqc788B2ZlyZA21l3W53o1L31gaCchcnBtZfpIGrYWDkH_-qAdpI-N5vYvCpSAhrVWLGdmZoho281tDb8KJEynj_9MxtleK4Xzyxtl602fTwEWSLy2xDHKyHn4pjsVrcf55MOQb3eg_ZjVJpkf1qNFmv1O-6fYeSIYwuFj2R2gD22QKzzSme5WkG3z5ovrQHKerhndWpyCCtAM5d4ivqqJKCJjD6I4NRbCh-pdWtwywyplGz1YOHOa5AQFy0Q&h=y9g84Zjf2uf8Dm_7UsnJ7wcqMd_aH92HKwvt8ubF704 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","name":"5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470916535163&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=hRp1KM3YwV3KvbgiINKis8cp9qrSRkAmvAiGO68sNGMpqzlrNg1lIySOWbHGujDPOwXPIWHk0q0_xTAOPEhu7Yhldbo7o81icE1D3NcFsH-ZhSBOr58ZwLAqqrzmZRAA7kXVtGXUYcMPQVf5P-XLZi0SN00aBNnnaoIVyVerwtWZ7XIbHYu-zaLiac3eXEc0SNWusqtZ5Szuxrrzy4u4zTuaX2trHLMV0ZNwB_9SooLsMZwfMJk5kCPnEwwX0sY6-x01xzcjGpu58APYmKxI1lpiExW2oWIBoEuqvGtto7MB_vFnkLWRI0H-HsU8A76jFJZW9lLJgjsYIGLMTvqZ4Q&h=t-3J3Q6xkUD6-QntpjOb9j6ZG2JepGUY1A5qck3gsCI + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/7bc96434-700a-4658-9ac7-84b165ab80a4 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: F208E1F5CC834D2B8B98A4990688938D Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:30Z' + status: 200 OK + code: 200 + duration: 734.835249ms + - 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: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","name":"opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001471030215090&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=McYbY7b0ITZjii2L-ie-w2D10TNMnkGWJKEXHJdK7y4jg7HzWrv00S65id5xWLsk9VEJxE6OVRq1cYTxkV6ZITF9XN7ZUBIpNhpN0dNy4bWQr1bhSBNUMQM7z69dvVR0_mNPkEI-Mjamy75gQWtawNPSc71g3iWvxMFHLEBD7Ny5hx-ByY0ainEC36dYocQSBzTOLKFaf5aleA8Vd2xi_ckOA42AOClQxkJcwpxvGR9cu1f-wNMTyK1ARvdLEsVgsfLT6zV_bqhHXp8_f51fRWYL_Unad4_92IuTNPyNYlNZ-wnmnYWCqhHRlAXLHTtlcPpOOCToTjoKt6po-C7xYg&h=WJtnjOG3UNwbtlG_SsXfwKWtnbWHOiu6ge0Znc8LnbA + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/716f7567-f73e-4159-8e56-f459cd28d33a + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 43308896BFBF4CA8B7AD8D54CB82A896 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:42Z' + status: 200 OK + code: 200 + duration: 772.853979ms + - id: 24 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470661512555&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OTxNNSI2E6OVsQfU7IqFiDh2b-oj-Pc37CaUMRNG3vM7wwZvM0wK0vArve4R9mBaSn0bT_C2U6vxApHbjRVhswwPaOqc788B2ZlyZA21l3W53o1L31gaCchcnBtZfpIGrYWDkH_-qAdpI-N5vYvCpSAhrVWLGdmZoho281tDb8KJEynj_9MxtleK4Xzyxtl602fTwEWSLy2xDHKyHn4pjsVrcf55MOQb3eg_ZjVJpkf1qNFmv1O-6fYeSIYwuFj2R2gD22QKzzSme5WkG3z5ovrQHKerhndWpyCCtAM5d4ivqqJKCJjD6I4NRbCh-pdWtwywyplGz1YOHOa5AQFy0Q&h=y9g84Zjf2uf8Dm_7UsnJ7wcqMd_aH92HKwvt8ubF704 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","name":"5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001471034006493&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=jV5bQd9UWUKXVIqLGf1zzWfFC-Dg5nbau0WzRigpOLt2Vf0NbaUtaH2dmYZ36beKb_BL4H3_W9Q5KM2WzB6g_FFdNtXuAJqIrY4HAp74p_CXahSeNDPyfcsHVve-az7_qfHStwHRgYXCmkMtBdwrTuESDVc_V01c2QafD63q1QMI8fP1A5JSjm5LL5mp1hxFBmx6n_daJU2yBJoYpNWO4NnQy50mdlcw6g12hxboy6zJz8uoQQrzCFgojhdD-CmuMukAHg_8qm7ghehlq8uH6ktpbdm0NLdAUPxcOulyTFaF8mDHz4ZLGSWcgaS1JR9n-NekrIXTyF9kQ15rlLL5sg&h=IYTRyGvMuGL_SBAM-SH_pJE4m9g93inYAX36UY1PGMs + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/c45ca204-1bb9-41f0-b6cc-b9caca098a1c + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E75EA3DACCA04AD79B09E2F956C5AE07 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:42Z' + status: 200 OK + code: 200 + duration: 765.972507ms + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","name":"opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001471150816137&c=MIIHpTCCBo2gAwIBAgITfwY4bQpvZ-3UQ9PLGwAEBjhtCjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUxMDIyMTAxMjIwWhcNMjYwNDIwMTAxMjIwWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMaQSdCUIqvIkvEGIgMUg15jRi4qSIt3RGDa6yLcclWqaFkkCDEVcRupdPhOlRkN6_E3yo4YLLGkk1yPFnLWRhUZHwHiDKT6kkup3lKHZhP_OZZAqFdVWprwthZHF-BYk9YMe2W22XJhXoSZLgzIkUryKSJYKOZMhFTY42AV2fW-S9_x3qtEhNVPU2m0kOQY_HHAeAxwowfSBBqagAU-CoINXO6dMtUZuTPeaa-NHT0X14SZXpbVahGFznKQT-nmC16nWOWIa-GdGD373URA_OnGtouzXYDfrmibw4aa12BIoEl8JmzCPoqBQhBQb4X1GHlECJJxlk-HRf5eYK24DNUCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQeaTkfZWRjzEotwUrxyQBBqrSy8zAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBACBHvZIB_7k2R61QYN_Aqz7zXJYpgwvV2uwNITnRjGGHZL-qoWmXZ8CD-fFJ0urRW2XuO491uR4hyWb19ROtPuikBt3wUNXSb0hXgIjYGrTwyyA7D4MMxLHw_fMs4O-kHVlqm5upXlY4gagzeHI216sXEj6731olX8EQiX6GCl49vk-wfUOe-LslO9TtSFl3KxH8S4ybX_YateNmqbXKR7JVhTSM9xLuWN4rFOUof3ZSZa0_pdouneaG-JRIf6YpBzT34lCJC5EHyonADIffShMBnEWdFQXQEozjZCihAaevPUloOrnR2KyMJENBvvbU8oiXZXsnN1cSraAe54sJZYI&s=MvUqcJQj4UyhcavLAJgUzIePDGgiSsn4CX8LHKFx_reRO3S5QxeodUqzAmCtYnc6LGGKey3-23qc0DV47oGI2CPin2UMv0o9tDoDzzxixAz5ICiQQUV9culOJj0s0iWC2EBd_dbtUmwnDFJLpRwnn6pmedkKam2LWDHcJ2hKBBBVJo45v_H4wrD7sCEy3PhqPetWiOD8FD_l-8_4x0vbdrmA2wmQ2NSHXy0x3vXuopDsgQSjDd4wlzdb18LYpaWhTZ7wNHii3v8U9Q8REI1z-6CkA2zXUK2dXyfL9vEt7cI7I3qeba86TEW76DxYmMmZu8F4XgAvYmYNRfd1LvZzlQ&h=jHsw_CnrUzvWOuqkewnqmfzKwLzxbTyGfIFO4dNpH_0 + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiacentral2/65698637-a044-4ce7-8775-ed97ca39bed0 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: DB64C85332D14203887B48032A6FAF01 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:54Z' + status: 200 OK + code: 200 + duration: 1.038097236s + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001470661512555&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=OTxNNSI2E6OVsQfU7IqFiDh2b-oj-Pc37CaUMRNG3vM7wwZvM0wK0vArve4R9mBaSn0bT_C2U6vxApHbjRVhswwPaOqc788B2ZlyZA21l3W53o1L31gaCchcnBtZfpIGrYWDkH_-qAdpI-N5vYvCpSAhrVWLGdmZoho281tDb8KJEynj_9MxtleK4Xzyxtl602fTwEWSLy2xDHKyHn4pjsVrcf55MOQb3eg_ZjVJpkf1qNFmv1O-6fYeSIYwuFj2R2gD22QKzzSme5WkG3z5ovrQHKerhndWpyCCtAM5d4ivqqJKCJjD6I4NRbCh-pdWtwywyplGz1YOHOa5AQFy0Q&h=y9g84Zjf2uf8Dm_7UsnJ7wcqMd_aH92HKwvt8ubF704 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","name":"5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.5UH4SyGKuC8U4X4I4YC-Ab-79U2FVynBYN5O5gJXVLM?api-version=2024-06-01&t=639001471153234570&c=MIIHpTCCBo2gAwIBAgITfwY4bQpvZ-3UQ9PLGwAEBjhtCjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUxMDIyMTAxMjIwWhcNMjYwNDIwMTAxMjIwWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMaQSdCUIqvIkvEGIgMUg15jRi4qSIt3RGDa6yLcclWqaFkkCDEVcRupdPhOlRkN6_E3yo4YLLGkk1yPFnLWRhUZHwHiDKT6kkup3lKHZhP_OZZAqFdVWprwthZHF-BYk9YMe2W22XJhXoSZLgzIkUryKSJYKOZMhFTY42AV2fW-S9_x3qtEhNVPU2m0kOQY_HHAeAxwowfSBBqagAU-CoINXO6dMtUZuTPeaa-NHT0X14SZXpbVahGFznKQT-nmC16nWOWIa-GdGD373URA_OnGtouzXYDfrmibw4aa12BIoEl8JmzCPoqBQhBQb4X1GHlECJJxlk-HRf5eYK24DNUCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQeaTkfZWRjzEotwUrxyQBBqrSy8zAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBACBHvZIB_7k2R61QYN_Aqz7zXJYpgwvV2uwNITnRjGGHZL-qoWmXZ8CD-fFJ0urRW2XuO491uR4hyWb19ROtPuikBt3wUNXSb0hXgIjYGrTwyyA7D4MMxLHw_fMs4O-kHVlqm5upXlY4gagzeHI216sXEj6731olX8EQiX6GCl49vk-wfUOe-LslO9TtSFl3KxH8S4ybX_YateNmqbXKR7JVhTSM9xLuWN4rFOUof3ZSZa0_pdouneaG-JRIf6YpBzT34lCJC5EHyonADIffShMBnEWdFQXQEozjZCihAaevPUloOrnR2KyMJENBvvbU8oiXZXsnN1cSraAe54sJZYI&s=wmQ4gz_bW_jL2KQynYNVzSXL6RiiNSMzr_DATqGCsOKdEuxYVzBja5GkCuEfQTrrQrfvkEshm9xk-r7XLAlQVjuUp7cWFNM6BhcDcZzqXgPbGAdyR79Bjp6-OxzknoqcC1hgPxC4j8DJ6swcSME4eEyRA3_kwATNzym1T_Z0t8qz-0grae_AIZs-sjzdy_-Pkfq6Vi0UOvzwjDtI62YZ9EBLIeDH9HDK0LFC9ahtwDq-c11BX3CQsfgPhkqj9UBdoj3vZnFyR8Lp4obJuYRER1Mumh9QB6lgO1O4JSKv3T6PDgqGYxLIdUSpUAC-hlCdxKMRu-KQgaJKnLZbRbkttA&h=9P8R5ZNNhPxGxcugG5Z9bMxBRfV44UE87f3ZzoVS_b8 + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiacentral2/6b71217f-470c-413a-8a2a-10b5ae3df45f + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: A298BBE1AAAA44AEBE1A0B9F8043BAE3 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:54Z' + status: 200 OK + code: 200 + duration: 926.803337ms + - 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/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 613 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/snapshots","properties":{"provisioningState":"Succeeded","status":"Ready","filters":[{"key":"MyApp:*","label":null}],"compositionType":"Key","created":"2025-12-01T00:51:06+00:00","retentionPeriod":2592000,"size":1000,"itemsCount":1,"tags":{"Environment":"Test","Purpose":"Testing"},"etag":"YX5CeBtIIbS-XxLEVb8FwpfmHtJlsUlblIILg7xY3nw"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot","name":"test-snapshot"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "613" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/066887f2-dc0f-4d34-94f0-491783486f0b + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: FCC45FDB6A94402A96B2416DF45282DC Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:56Z' + status: 200 OK + code: 200 + duration: 1.139088817s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 613 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/snapshots","properties":{"provisioningState":"Succeeded","status":"Ready","filters":[{"key":"MyApp:*","label":null}],"compositionType":"Key","created":"2025-12-01T00:51:06+00:00","retentionPeriod":2592000,"size":1000,"itemsCount":1,"tags":{"Environment":"Test","Purpose":"Testing"},"etag":"YX5CeBtIIbS-XxLEVb8FwpfmHtJlsUlblIILg7xY3nw"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot","name":"test-snapshot"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "613" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/430033d9-7c96-4d51-95dd-100010fd26a0 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 958C56CCD2C4408B9DA975A315F127C7 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:51:58Z' + status: 200 OK + code: 200 + duration: 436.223794ms + - 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: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001470660970815&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=d_soOx2e4_I0vkuoCr3sLUIHQqPPCiX_k1N-ziivTZ45tQgdMPg6_G2tczk_5HC0sbDYd-uRKC6DxRmaq7E6GNROhLBZCIY6KCn0IkZPQNeii-sAUCrJImFg3GoltqgyFfgjB75QyMVkhq1NbyRAvAZBvuuNcpacr4oyDArdbS-_g6grpfnq_Qcd_HW2lV1p8pyZC2DfeJGd384ocr_sCBjMfPIstgmYEc4DKm42IoX08eQQ9eAe-pEQfjoYAcGddYtmo-3oYHqRVwm0OSiHJcsQKLbf_bZgtNZHcnlvUS-R0HhXnVODoo9cRVg971ret-mEEe7taWRVZHi3BuPkZg&h=9AjH-86EgzU85qf8pI6IfBugSleh_UzZD5NncXXYMPc + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","name":"opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.opNK9hH2JJ1sb5KHjm9BX41i-fPLtanSmTFnjh5f87Q?api-version=2024-06-01&t=639001471265269129&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=nW7ow8BA_ucerEy8RA15gnHWkj9009Kl0vNvtndyYOOuXM_TPEIJzSGXBLyu4xKIFEQDFtjnH4qNnW9LQ9I5sqnUuDQ7ZRKIwE8EEl_ALnPvEE861NDcRS0pKlF0l54csZlYZRyabA4EbHm77oWrTdlA1t8iI5bOywVhRWKb-epChpBibLEIGJUMwtA8HmRJSr2WxFCBC7NgG5UWQrHyR3VdecEJB2TCMtYkIMLQN0ytyJ0cjPWVJw9gGCWU4B9ba0IuLydAFNHVhHfVwDbxy8hZR3yHRJ8s3u9hMP8pLjGjxBPN62ybOPTC9nhE6JS5wzZwko5xmJwY9CNFMC_uew&h=QTcelUMNXcWQv5sq3I20ax1LKb_o1UTzUVmbktELpoo + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/b3cbe612-3d2b-4adc-881a-d8f1ca0bfa73 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 536AB349D94D4F4A8AA471A86068E67A Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:06Z' + status: 200 OK + code: 200 + duration: 312.994127ms + - id: 30 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 655 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica","name":"eastus2replica","type":"Microsoft.AppConfiguration/configurationStores/replicas","location":"eastus2","properties":{"endpoint":"https://asotest-confstore-voggjk-eastus2replica.azconfig.io","provisioningState":"Succeeded"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T00:51:09+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T00:51:09+00:00"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "655" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/b2750add-d8a9-48bb-ae90-0129388b2e77 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 738C1794BED64BE99CC8F2303E5337A8 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:07Z' + status: 200 OK + code: 200 + duration: 896.433873ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 655 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica","name":"eastus2replica","type":"Microsoft.AppConfiguration/configurationStores/replicas","location":"eastus2","properties":{"endpoint":"https://asotest-confstore-voggjk-eastus2replica.azconfig.io","provisioningState":"Succeeded"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T00:51:09+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T00:51:09+00:00"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "655" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/4ee61e8c-3a45-4e51-b31b-9e22035a205d + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 4247D7E8C68F4FA0B3907F13415EE20C Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:08Z' + status: 200 OK + code: 200 + duration: 270.574044ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica?api-version=2024-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: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.OgwU_o96FGCuR05sVsjHMlqlxGkq2Fd7xl60TmZyOCM?api-version=2024-06-01&t=639001471308703388&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ElQT9tjM7Sa3A2zbv6QmQO27E9-aTQUh7cvrPpNLaxzFTgtFMrgIY_Ma0LTC7uh4LM8kuPmeLqZ1L9742S2OGYo9Qcjj5A0rw1AWiKdTXLe_VqVDgf0Htk6aCpAO36FI6uLQXxfu3LKeX78_xDjQD47N8rnGO9wLtDlKOVc9EI6qPyqKPvMOp1jL_TJ5zuYTguHf3KWFruHXgJah1I539UrJ7x_aYGagtu_ObpwmA5FzBpMt8Ed4itrIk63tXGPm9zdYT8ZQHiVYzZKOiK1qBufl9RiHdpH_aY_QwY7StZssL_k3DnQQtO-9sqSGhQhgluyfbBD4rctBzPp_nJ0Ajg&h=lezpOB_9C3d2uggev89pIwae2O8qy_9g7_NRprvt7-M + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationResults/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.OgwU_o96FGCuR05sVsjHMlqlxGkq2Fd7xl60TmZyOCM?api-version=2024-06-01&t=639001471308859989&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=D5Pz6lTBrDdUYgGI2z6eFG6RNtOzhKJbLx4ksBITzoB2A3XtK849d9AG3pWPNmfM5G6RFELZkcSoxByqNKO0Q89U1cvXIbzcS9aWU9ul76gqKsrv7KgX9QMZ97Up6MHfnVaSD1_rfV13k2gfAH6-FkGgue-MbSpO5RMMflE8VZp_U4DpphjA1YmHThIClV3j4zyq31UGpPrsedCP-dTRxHGxcauLVZTInrB207ll1jegozLqRl_VaRIFcjfGpAA5rKH020JLS7PcX8SqwAhvfJz9GTTOX0fBhi81HIS_sD-AWyZCszmiU3hEQwj4HvwUAHbkPEX-vznk__rWq5pubg&h=7528X3mO-kU3GkEzgBUgNEhpmXoXqACzZTxGMchTv6Q + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/87c5e748-f764-40aa-ab29-4e5ef0437286 + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 6416CD90B29743299E7A59FF0B0033B4 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:10Z' + status: 202 Accepted + code: 202 + duration: 361.685153ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.OgwU_o96FGCuR05sVsjHMlqlxGkq2Fd7xl60TmZyOCM?api-version=2024-06-01&t=639001471308703388&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ElQT9tjM7Sa3A2zbv6QmQO27E9-aTQUh7cvrPpNLaxzFTgtFMrgIY_Ma0LTC7uh4LM8kuPmeLqZ1L9742S2OGYo9Qcjj5A0rw1AWiKdTXLe_VqVDgf0Htk6aCpAO36FI6uLQXxfu3LKeX78_xDjQD47N8rnGO9wLtDlKOVc9EI6qPyqKPvMOp1jL_TJ5zuYTguHf3KWFruHXgJah1I539UrJ7x_aYGagtu_ObpwmA5FzBpMt8Ed4itrIk63tXGPm9zdYT8ZQHiVYzZKOiK1qBufl9RiHdpH_aY_QwY7StZssL_k3DnQQtO-9sqSGhQhgluyfbBD4rctBzPp_nJ0Ajg&h=lezpOB_9C3d2uggev89pIwae2O8qy_9g7_NRprvt7-M + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/OgwU_o96FGCuR05sVsjHMlqlxGkq2Fd7xl60TmZyOCM","name":"OgwU_o96FGCuR05sVsjHMlqlxGkq2Fd7xl60TmZyOCM","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.OgwU_o96FGCuR05sVsjHMlqlxGkq2Fd7xl60TmZyOCM?api-version=2024-06-01&t=639001471417495548&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=eqQuJ-FeCdw19ajP6rxfwQL9PI5oc9B01IHLPOt-itw7tJDd5L7Vnl9ZeaosnZKdlOoRw0nWcRXWazlTEnoqoSYKJAD7B2YswesSRcNfhSWjMUQ3wLPxHZUuANEowNn7sAG032MRvn_hLl-9Pv-Uy9IYuAMdrAnGJYuirk9JrbltCbpUYUnGGovdPwV-Q-TYPf7_b274LkqrUIfZyEXYN7IiSX9EwObkplZAzh5Fr2GcLLW6hWXsSKoNVWfygMJrZnm-m6zDkI1itrUjBxnnoW9SAml1psSbAa1pAFUv0QFxoOcXa0-mnbSH7XUYjz9GYWZOfK7UVg4X5L4Od7q6Xg&h=vkEIFCn5ZAkimgsJQEaoMRcIe78SL5KZiapVqRmqwgA + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/96ba2ce9-b19d-415f-9b60-36a2e3006a69 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: D837C84F5BB04C9EA9F9A9C4E8700E2E Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:21Z' + status: 200 OK + code: 200 + duration: 258.957562ms + - id: 34 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/replicas/eastus2replica?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 202 + uncompressed: false + body: '{"error":{"code":"EntityNotFound","message":"The resource with id ''eastus2replica'' was not found.","additionalInfo":[{"type":"ActivityId","info":{"activityId":"553147fb-71d3-4f57-8db3-e5999dc736f9"}}]}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "202" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/a1596f3f-9323-427f-b9f0-8b9c24d4e1e1 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 0C8DDFB0AA68483C9C636AED1D0C333B Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:25Z' + status: 404 Not Found + code: 404 + duration: 886.132257ms + - id: 35 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk?api-version=2024-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: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.KT5fXxbNwL46uDAEN4hDSY_m-7J0rsKdLxUN3gsD3M8?api-version=2024-06-01&t=639001471480199386&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=KyBc8EYWZWFxsffNNG5JVZYrjpl5R2r9gX08_Kc21_uhzXWd-j-d6fILEKGBPAAFySTAhu8yzvPyqvxrI67KaJ5ig7gjsYvDodI36TlRcr6RPbH_kY7k7wi3AcdBNYXJwyxM-LEavluaV86179GwzMuqEd54Cn9igI3LXbsMEh6PXjI_Nw9x4fURthy-QOt_LUdd8g4sygpxL9bVcfsIjedvmqZxX_xZabdWL_B4OBXjeoTCWzLR9eank3MV48CygXaa5z5D6xDhg6IYKiPTbORXeZUMzSCsDB7_xxWR6gXYptEngYMGAYkiiNoTFOwvaAFfuqZgltgt5wymnZ82Lg&h=pj5CMZ2Tz0nk6cl1bO0iZllTlMYgpJWTn09Svyy-Lnk + Cache-Control: + - no-cache + Content-Length: + - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationResults/Y29uZmlndXJhdGlvblN0b3Jlcw.KT5fXxbNwL46uDAEN4hDSY_m-7J0rsKdLxUN3gsD3M8?api-version=2024-06-01&t=639001471480199386&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=BNiAJVETc8uZe-Tz0mVoKMDEU9PY8j6a40KO1Bw76KluyUa01_p_AgNfDz4GaEPSGD1VZ7I7CLODMjndE0rLqzOl8k9xO5f1RvC99LOEJqysflHNWLAFl2C128QHSBphK5iZob1PDrhkTTh_9Shrt35IUld4bxVFZLvf_HZfGTyzKB3Dy3JMM5IpHyh0WdaXXnVFmnMCY8-THsS5pj_DVp3Jt0A5-23ZC48eQzZrPoRfZ9VPUg5P1vkF8oZacSPXa_UxskcKg3CMs4ubjEAqlRFCuQno2oRWc8Lg9lwORocl0Q7YxxSS3jziCERGHNrJuomMNHM-Wa06rSsKsejHNg&h=wxmuE5L208B0Psg1-RlpXavi8JkEDKYbn74EAhh7C-Q + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/ecdcdf4c-aff2-42f2-901e-97fc643c4663 + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: BE1D6181DB94447B8DE5BBBF00E6563F Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:27Z' + status: 202 Accepted + code: 202 + duration: 399.237981ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.KT5fXxbNwL46uDAEN4hDSY_m-7J0rsKdLxUN3gsD3M8?api-version=2024-06-01&t=639001471480199386&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=KyBc8EYWZWFxsffNNG5JVZYrjpl5R2r9gX08_Kc21_uhzXWd-j-d6fILEKGBPAAFySTAhu8yzvPyqvxrI67KaJ5ig7gjsYvDodI36TlRcr6RPbH_kY7k7wi3AcdBNYXJwyxM-LEavluaV86179GwzMuqEd54Cn9igI3LXbsMEh6PXjI_Nw9x4fURthy-QOt_LUdd8g4sygpxL9bVcfsIjedvmqZxX_xZabdWL_B4OBXjeoTCWzLR9eank3MV48CygXaa5z5D6xDhg6IYKiPTbORXeZUMzSCsDB7_xxWR6gXYptEngYMGAYkiiNoTFOwvaAFfuqZgltgt5wymnZ82Lg&h=pj5CMZ2Tz0nk6cl1bO0iZllTlMYgpJWTn09Svyy-Lnk + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/KT5fXxbNwL46uDAEN4hDSY_m-7J0rsKdLxUN3gsD3M8","name":"KT5fXxbNwL46uDAEN4hDSY_m-7J0rsKdLxUN3gsD3M8","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.KT5fXxbNwL46uDAEN4hDSY_m-7J0rsKdLxUN3gsD3M8?api-version=2024-06-01&t=639001471589147897&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=hpuX0_N8mcLPIhTS3_1q35lVtEgA6LZXR6WC-CV0cXiZa90CIQNa7dRAoM7g5SGabPJNOnW6hrqvrV7ZqOh3uJt2aykdZoaetZQgJJxlAXBJPNfQnbWIXxDTj8elEb9qYRRkVXAcq4n2ALl39BiLk7azlPSqUhOkFdv59WKGY1YjkGm2EdY5zQ6kaTHYW66ucwbDhK7xbcgfuMptc6waSa1Wp0fMNthlfEl4fjXwWwKMjTFPn5UV7G8LvYIkZxuFJDION0h-UN4gqJMZOY-DAmgOxGs6XD852_JoO14dSJX14V5OtAZzc3FPr02r2Sa_bx5L6xQPLWvL91x19jUfbg&h=NFmf_C8ikweFTRV1ndPQFLi74tJlL4UZYNCUPhGqBVg + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/95b4cff3-8529-45b8-81b6-67bfc9b65431 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E15B3DB5AC6847F3B2DB79747C025243 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:38Z' + status: 200 OK + code: 200 + duration: 242.510915ms + - 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-rqzupz?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRSUVpVUFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001471664086160&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=JnV5hZlq6GNBkFZncupV5Z4P9Et24_dH88Eiy9dnwdACldIhFCx8C3pE_-HL3sIgp-TESHA9RWZ6DDXGde1pTpaNEaZ8NNyrPBmb5Qn6p1ysvmpexVnFItgWMkZUSTDNYTfDfvQszfXRUPm2oBZ_OX-oTK71MG7u-40CkZ8ecfb4jVr5kUCggJm5hSLyBTdvr5JgZorlUBNIaIxcV8nu91VkgRPgdfXgiAj-teOWqdvJ1TClHrq8hPVBgVHkoG-z3kzrb239o6wAgwJulGMWLXRgVkorfJXrkqv9DmmNrYv4fG5s3bh7unK3mKLA7XhZwtOjPLo_O1qFtLnyoOEZXQ&h=ghMG64hLRTuy4_xUq57ptK0xtGTIRQVTdvm0PdYSIrA + 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: FEC1432B0D1F4203BB4F3335EDAD4A14 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:52:43Z' + status: 202 Accepted + code: 202 + duration: 3.327505486s + - 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRSUVpVUFotV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001471664086160&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=JnV5hZlq6GNBkFZncupV5Z4P9Et24_dH88Eiy9dnwdACldIhFCx8C3pE_-HL3sIgp-TESHA9RWZ6DDXGde1pTpaNEaZ8NNyrPBmb5Qn6p1ysvmpexVnFItgWMkZUSTDNYTfDfvQszfXRUPm2oBZ_OX-oTK71MG7u-40CkZ8ecfb4jVr5kUCggJm5hSLyBTdvr5JgZorlUBNIaIxcV8nu91VkgRPgdfXgiAj-teOWqdvJ1TClHrq8hPVBgVHkoG-z3kzrb239o6wAgwJulGMWLXRgVkorfJXrkqv9DmmNrYv4fG5s3bh7unK3mKLA7XhZwtOjPLo_O1qFtLnyoOEZXQ&h=ghMG64hLRTuy4_xUq57ptK0xtGTIRQVTdvm0PdYSIrA + 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: C0FFB74348A9489E82675BA2EC0ABFE0 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:53:05Z' + status: 200 OK + code: 200 + duration: 1.160518004s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk/snapshots/test-snapshot?api-version=2024-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 355 + uncompressed: false + body: '{"error":{"code":"ParentResourceNotFound","message":"Failed to perform ''delete'' on resource(s) of type ''configurationStores/snapshots'', because the parent resource ''/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-rqzupz/providers/Microsoft.AppConfiguration/configurationStores/asotest-confstore-voggjk'' could not be found."}}' + 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-Failure-Cause: + - gateway + X-Msedge-Ref: + - 'Ref A: A71138B51D2F450A9DF81944A82E6394 Ref B: SYD03EDGE2016 Ref C: 2025-12-01T00:53:08Z' + status: 404 Not Found + code: 404 + duration: 375.531867ms diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Appconfiguration_v20240601_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Appconfiguration_v20240601_CreationAndDeletion.yaml new file mode 100644 index 00000000000..abdc168dfb8 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Appconfiguration_v20240601_CreationAndDeletion.yaml @@ -0,0 +1,2333 @@ +--- +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-kffcvf","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - 118c61e906f5ca29379b2c07ce2b09270a784dac27a036d86a95e1710d31cd16 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf?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-kffcvf","name":"asotest-rg-kffcvf","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: 2B63DAA6D6A848408D5B951EBCEF6BD6 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:16Z' + status: 201 Created + code: 201 + duration: 1.486336617s + - 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-kffcvf?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-kffcvf","name":"asotest-rg-kffcvf","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: 35ACE5CA4DDE458FA3E55D870339C7C9 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:19Z' + status: 200 OK + code: 200 + duration: 270.221389ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 197 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asoconfstorev2","properties":{"createMode":"Default","disableLocalAuth":false,"enablePurgeProtection":false,"publicNetworkAccess":"Enabled"},"sku":{"name":"standard"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "197" + Content-Type: + - application/json + Test-Request-Hash: + - 02be80771f4d6c021e7daf1b6d4487eac9b4ec787adc31b8bd85e52ac599a952 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 648 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores","location":"westus2","properties":{"provisioningState":"Creating","creationDate":"2025-12-01T01:18:21.6847557+00:00","endpoint":null,"encryption":null,"privateEndpointConnections":null,"disableLocalAuth":null,"softDeleteRetentionInDays":null,"defaultKeyValueRevisionRetentionPeriodInSeconds":null,"enablePurgeProtection":null,"dataPlaneProxy":null},"sku":{"name":"standard"},"systemData":null,"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2","name":"asoconfstorev2","tags":{}}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487017378796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=cDAyDlx9Z6syclVN_RYxCgr3gUTG1ZU5caG7NkEm8fGTVJ61U0PCP2A1P1E3eikK6YfJtbxLTbAdcJ2OtT4oWY687ZFrLdhz_iEvzHN1NhydsraPgTYekEB3Mm_E42fxXggT7rUTBMNqS92ndrXzzCAJ6ogPfsq4DDF9kFMDvJowlXth1sypOVVHGtb6iGvTNAELCyptA9VLzJih_R-vdBAIC8xB7L7K0YgsqoPCpWLcCo4hC37jP2e_m6-Z5aL69rGiGlpOw-q1ZdPq2BU3xes70A5xyHi_Dzmn4VBulYqcZMOpLreSYb7fLH4NGP0qJz2wxJPuIz_Af6mC1L6VCg&h=nT5uhpMWAd-YYLzgPp9J0RQDCXCBVolITQb2ghwpEpw + Cache-Control: + - no-cache + Content-Length: + - "648" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/44ed64c9-823c-4f6b-9170-c273c29feffd + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 842C50B8B89942B0A8DF20A1597B3800 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:21Z' + status: 201 Created + code: 201 + duration: 592.46353ms + - id: 3 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 45 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"aso-sample-rg"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "45" + Content-Type: + - application/json + Test-Request-Hash: + - 3d8c2014c4b7e41d70c06fac72ba626c3ba6faef7425ccc5faec25d3414efcfb + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aso-sample-rg?api-version=2020-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 224 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aso-sample-rg","name":"aso-sample-rg","type":"Microsoft.Resources/resourceGroups","location":"westus2","properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "224" + 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: 3A15213174F04C7A9A6F8A170EBFDFB0 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:21Z' + status: 201 Created + code: 201 + duration: 2.652261614s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487017378796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=cDAyDlx9Z6syclVN_RYxCgr3gUTG1ZU5caG7NkEm8fGTVJ61U0PCP2A1P1E3eikK6YfJtbxLTbAdcJ2OtT4oWY687ZFrLdhz_iEvzHN1NhydsraPgTYekEB3Mm_E42fxXggT7rUTBMNqS92ndrXzzCAJ6ogPfsq4DDF9kFMDvJowlXth1sypOVVHGtb6iGvTNAELCyptA9VLzJih_R-vdBAIC8xB7L7K0YgsqoPCpWLcCo4hC37jP2e_m6-Z5aL69rGiGlpOw-q1ZdPq2BU3xes70A5xyHi_Dzmn4VBulYqcZMOpLreSYb7fLH4NGP0qJz2wxJPuIz_Af6mC1L6VCg&h=nT5uhpMWAd-YYLzgPp9J0RQDCXCBVolITQb2ghwpEpw + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","name":"NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487047367318&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=pg6r_RbyBCRmJqowYGiiiiLlKpgnEsSmMjLS8nca4MgsBTj9aH-rGQblBgAJAehhFLKxONH7h9KD-ZuzC0OC6exrQZR2wPnq8LU_KsJjMlYpBVkQq3AGJtTzYWmyUH5yq-OvPTUHFTUyJDLl8DcTtPic1uI1NDux8sg-VsmRJNd3jjnZFJ9EYX3na9_fVdBYeEXzkCSlEt5iqUkf9Le5WolNfdDQbTCEkTeo-0y0ghnu0mCXErv05OXo4DQVDkYo9kFrcul_GG909FDRQgh3j160DzLAaFVdg6jAbmmPxMg31RU8wH-lIMBf6M8HSxBGrXR-guVwyy1cONq2ymuWIA&h=6mCCgAkTu_VXVjec3XmyWH1aszsrAEMfj26I_jBggIU + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/6c7e5b32-6f6a-476a-99cc-7851c0ca12d1 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16498" + X-Msedge-Ref: + - 'Ref A: 768B14E0411D4AA6B1E737DAACE47EB8 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:24Z' + status: 200 OK + code: 200 + duration: 281.119802ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aso-sample-rg?api-version=2020-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 224 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aso-sample-rg","name":"aso-sample-rg","type":"Microsoft.Resources/resourceGroups","location":"westus2","properties":{"provisioningState":"Succeeded"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "224" + 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: 803CF05C879B480B8B3F66BB89B5A053 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:26Z' + status: 200 OK + code: 200 + duration: 414.521839ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487017378796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=cDAyDlx9Z6syclVN_RYxCgr3gUTG1ZU5caG7NkEm8fGTVJ61U0PCP2A1P1E3eikK6YfJtbxLTbAdcJ2OtT4oWY687ZFrLdhz_iEvzHN1NhydsraPgTYekEB3Mm_E42fxXggT7rUTBMNqS92ndrXzzCAJ6ogPfsq4DDF9kFMDvJowlXth1sypOVVHGtb6iGvTNAELCyptA9VLzJih_R-vdBAIC8xB7L7K0YgsqoPCpWLcCo4hC37jP2e_m6-Z5aL69rGiGlpOw-q1ZdPq2BU3xes70A5xyHi_Dzmn4VBulYqcZMOpLreSYb7fLH4NGP0qJz2wxJPuIz_Af6mC1L6VCg&h=nT5uhpMWAd-YYLzgPp9J0RQDCXCBVolITQb2ghwpEpw + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","name":"NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487155418875&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=QP63L0EcuXpAdgF1mDoBXn8zfWOqIOFvs8SR_bWX1NHdyjrHg_nuBocfYSsJrAL18h_LNJTz-LntLplhtZUbjglY9Os7_TtsqRMoBi3FzMT5g-mJRS8-Apz7ZdZYGRiEldmIsAE0eMlTRe9vTY3jqfubspVIzF1G2q4GuUn064rVXtWjb21-Ono2hCe9C1Zcg8mlahig8kptweznzG8rMhGnWRgXyqzYguXqH_oNnuDecDL9hEyMhtfktD6b07izspb17PnUtyKzEiGtgdI8pWY5l31D1xqhvAEQ37datRbe6LCNKV57Ui7ZOT3NyXTOxDED8W-2D4oLqmQK8Hoa1w&h=XiV0XAOG88Sv9keomJ2ZlVwNlVSOcKW9vXM17VZ7t1I + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/bb8addb9-b22e-4774-af49-dc4c2d264e2a + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 9497BE1192894C1393D085CF25E02746 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:35Z' + status: 200 OK + code: 200 + duration: 274.750994ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487017378796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=cDAyDlx9Z6syclVN_RYxCgr3gUTG1ZU5caG7NkEm8fGTVJ61U0PCP2A1P1E3eikK6YfJtbxLTbAdcJ2OtT4oWY687ZFrLdhz_iEvzHN1NhydsraPgTYekEB3Mm_E42fxXggT7rUTBMNqS92ndrXzzCAJ6ogPfsq4DDF9kFMDvJowlXth1sypOVVHGtb6iGvTNAELCyptA9VLzJih_R-vdBAIC8xB7L7K0YgsqoPCpWLcCo4hC37jP2e_m6-Z5aL69rGiGlpOw-q1ZdPq2BU3xes70A5xyHi_Dzmn4VBulYqcZMOpLreSYb7fLH4NGP0qJz2wxJPuIz_Af6mC1L6VCg&h=nT5uhpMWAd-YYLzgPp9J0RQDCXCBVolITQb2ghwpEpw + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","name":"NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487269089887&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=SYrMe2UwZMOVRm3vBOHxCNSZggLwii8rjxKVPSHW7ZW5oKa7GDydn7XmaNn43V8sZxk09UxcUNzi6HaA_i-RAipfIDSKlnmjrw5o_TkeyNVwyMYPsgM6juGIRmYrSPBvEE3UFILYnceWj7wVpg_ndv56odLbdpxLf5m4K-NxjkpnitmjOv6Q8-n6CXXxXVRd2U4PvBcS97st7pBchehHZ4Q_cbEfh2FvIXZHnZftwi75k_t0kHf3X8ZbH8LxX2sTU3OiiPqqtE_L5L-Amo1HqtlRdn5OZw5plNI26hyM130xVAzMvRudq2SW3ayxy0YE65SXp9wz5WqxRpVT0fYRVw&h=wlS0_KZA8Wivp1Yp1M9u1nT8eiWYt6H6UjEvGV9TyRU + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/30c07237-9cdd-4586-b93a-010c65604fd4 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 83FB0C1F81FC4456A95278B1296BEE05 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:46Z' + status: 200 OK + code: 200 + duration: 743.409361ms + - 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: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487017378796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=cDAyDlx9Z6syclVN_RYxCgr3gUTG1ZU5caG7NkEm8fGTVJ61U0PCP2A1P1E3eikK6YfJtbxLTbAdcJ2OtT4oWY687ZFrLdhz_iEvzHN1NhydsraPgTYekEB3Mm_E42fxXggT7rUTBMNqS92ndrXzzCAJ6ogPfsq4DDF9kFMDvJowlXth1sypOVVHGtb6iGvTNAELCyptA9VLzJih_R-vdBAIC8xB7L7K0YgsqoPCpWLcCo4hC37jP2e_m6-Z5aL69rGiGlpOw-q1ZdPq2BU3xes70A5xyHi_Dzmn4VBulYqcZMOpLreSYb7fLH4NGP0qJz2wxJPuIz_Af6mC1L6VCg&h=nT5uhpMWAd-YYLzgPp9J0RQDCXCBVolITQb2ghwpEpw + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","name":"NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcw.NDxXq-kUrdIXb9m77JDwdglPxTe-G4QibddShvMc4jY?api-version=2024-06-01&t=639001487382429858&c=MIIHpTCCBo2gAwIBAgITfwY4bQpvZ-3UQ9PLGwAEBjhtCjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUxMDIyMTAxMjIwWhcNMjYwNDIwMTAxMjIwWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMaQSdCUIqvIkvEGIgMUg15jRi4qSIt3RGDa6yLcclWqaFkkCDEVcRupdPhOlRkN6_E3yo4YLLGkk1yPFnLWRhUZHwHiDKT6kkup3lKHZhP_OZZAqFdVWprwthZHF-BYk9YMe2W22XJhXoSZLgzIkUryKSJYKOZMhFTY42AV2fW-S9_x3qtEhNVPU2m0kOQY_HHAeAxwowfSBBqagAU-CoINXO6dMtUZuTPeaa-NHT0X14SZXpbVahGFznKQT-nmC16nWOWIa-GdGD373URA_OnGtouzXYDfrmibw4aa12BIoEl8JmzCPoqBQhBQb4X1GHlECJJxlk-HRf5eYK24DNUCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQeaTkfZWRjzEotwUrxyQBBqrSy8zAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBACBHvZIB_7k2R61QYN_Aqz7zXJYpgwvV2uwNITnRjGGHZL-qoWmXZ8CD-fFJ0urRW2XuO491uR4hyWb19ROtPuikBt3wUNXSb0hXgIjYGrTwyyA7D4MMxLHw_fMs4O-kHVlqm5upXlY4gagzeHI216sXEj6731olX8EQiX6GCl49vk-wfUOe-LslO9TtSFl3KxH8S4ybX_YateNmqbXKR7JVhTSM9xLuWN4rFOUof3ZSZa0_pdouneaG-JRIf6YpBzT34lCJC5EHyonADIffShMBnEWdFQXQEozjZCihAaevPUloOrnR2KyMJENBvvbU8oiXZXsnN1cSraAe54sJZYI&s=E3FsbWP29JRxrtPLWlbKF-nQKpGXeBSA-cQEW3mvRiAGkFpjjiHa4eoe6mR9sMn9CgJcjwFjjsp3WICeYGQAmCjVIQoZZnkmWocmPctqay7aqx8_JXPEgzGnrk-U41otWDod84tGlcnYnpTze1FbS2UcNqWYmhjmLaMVlyBlifTElyjsLot5DrK_uL4l6l3UJVeBjx8gnPgqvSAorEG8WrlLFpkBZWL8GziIaDiwOBeeQwRGZbBNK4g96N5K86M4bqQyNbyi8xFrGLkKIb0he_09YgGhuX9maCrvoIoGRCwNCWsI1ZEaINo0-qAb5Ncn8xpu6waqPRYguVlP5B6lKg&h=bJNCl--fbslDVLXj0BuSPTXjyahXBvgGbzuWn_LPu3w + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiacentral2/7f8afe50-4807-44f4-b7ac-3f442ee34e5f + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: BBDF9F571F804DA99AB784E826C8C7AD Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:57Z' + status: 200 OK + code: 200 + duration: 334.558232ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 999 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores","location":"westus2","properties":{"provisioningState":"Succeeded","creationDate":"2025-12-01T01:18:21+00:00","endpoint":"https://asoconfstorev2.azconfig.io","encryption":{"keyVaultProperties":null},"privateEndpointConnections":null,"publicNetworkAccess":"Enabled","disableLocalAuth":false,"softDeleteRetentionInDays":7,"defaultKeyValueRevisionRetentionPeriodInSeconds":2592000,"enablePurgeProtection":false,"dataPlaneProxy":{"authenticationMode":"Local","privateLinkDelegation":"Disabled"}},"sku":{"name":"standard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T01:18:21+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T01:18:21+00:00"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2","name":"asoconfstorev2","tags":{}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "999" + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"1204b14b-0000-0800-0000-692cecde0000"' + 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: D159014B9DC54B3C8DB6E74125920D18 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:18:58Z' + status: 200 OK + code: 200 + duration: 897.177525ms + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 999 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores","location":"westus2","properties":{"provisioningState":"Succeeded","creationDate":"2025-12-01T01:18:21+00:00","endpoint":"https://asoconfstorev2.azconfig.io","encryption":{"keyVaultProperties":null},"privateEndpointConnections":null,"publicNetworkAccess":"Enabled","disableLocalAuth":false,"softDeleteRetentionInDays":7,"defaultKeyValueRevisionRetentionPeriodInSeconds":2592000,"enablePurgeProtection":false,"dataPlaneProxy":{"authenticationMode":"Local","privateLinkDelegation":"Disabled"}},"sku":{"name":"standard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T01:18:21+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T01:18:21+00:00"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2","name":"asoconfstorev2","tags":{}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "999" + Content-Type: + - application/json; charset=utf-8 + Etag: + - '"1204b14b-0000-0800-0000-692cecde0000"' + 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: 274652BCED7942568C6563B72833B673 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:00Z' + status: 200 OK + code: 200 + duration: 238.883082ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/listKeys?api-version=2022-05-01 + method: POST + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1453 + uncompressed: false + body: '{"value":[{"id":"w6Vv","name":"Primary","value":"{KEY}","connectionString":"Endpoint=https://asoconfstorev2.azconfig.io;Id=w6Vv;Secret={KEY}","lastModified":"2025-12-01T01:18:21+00:00","readOnly":false},{"id":"Hncj","name":"Secondary","value":"{KEY}","connectionString":"Endpoint=https://asoconfstorev2.azconfig.io;Id=Hncj;Secret={KEY}","lastModified":"2025-12-01T01:18:21+00:00","readOnly":false},{"id":"kyWi","name":"Primary Read Only","value":"{KEY}","connectionString":"Endpoint=https://asoconfstorev2.azconfig.io;Id=kyWi;Secret={KEY}","lastModified":"2025-12-01T01:18:21+00:00","readOnly":true},{"id":"M9EP","name":"Secondary Read Only","value":"{KEY}","connectionString":"Endpoint=https://asoconfstorev2.azconfig.io;Id=M9EP;Secret={KEY}","lastModified":"2025-12-01T01:18:21+00:00","readOnly":true}],"nextLink":null}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "1453" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/6bceb244-6658-43e2-9a02-0f48851dbc31 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 35EE78F83BBE497CA01AE9AE188BCDF4 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:01Z' + status: 200 OK + code: 200 + duration: 365.956778ms + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 274 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"snapshotv1","properties":{"compositionType":"Key_Label","filters":[{"key":"MyApp:Settings:*","label":"production"},{"key":"MyApp:Features:*","label":"production"}],"retentionPeriod":2592000,"tags":{"Environment":"Production","Purpose":"Backup","Version":"v1.0.0"}}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "274" + Content-Type: + - application/json + Test-Request-Hash: + - 29fb966deb6ce8e20885733462362cb421f86c08a04b55758faf76197aa07bd6 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 654 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/snapshots","properties":{"provisioningState":"Creating","status":"Provisioning","filters":[{"key":"MyApp:Settings:*","label":"production"},{"key":"MyApp:Features:*","label":"production"}],"compositionType":"Key_Label","created":"0001-01-01T00:00:00+00:00","retentionPeriod":2592000,"size":0,"itemsCount":0,"tags":{"Environment":"Production","Purpose":"Backup","Version":"v1.0.0"},"etag":null},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1","name":"snapshotv1"}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487662559814&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=bIyQVsN4Zl1634rkQ3L48C1x4_x2MOCyx52W9zlMUdwiz3PjAQ-ji2-ed2Ym03pSyez7kw-I7bG4q4mj-nwCmV7LcGCA_KOhLD6tnvQRbVc9PmiSdciiZ3lTDfu8m_DknW2EhEkwmgcRkZgopJNVggNerYQp3Jxa7WsqTnDVIbiqDFjmDi5aqLsDYoZsE7mtxjhAHWRvjp2IJ79K2UtdrQkrEp0xh-6HKx5omCYej5Q6wO15bM1pPO-qKiJsjTfYfOd0L8PG9EnFPgceS8bqMocLAHEv4BjHInDHXEDyNgCp3EiZGC4pDW-dh-hGiIH-99lxtnJkscCZzbNfSNeNwA&h=rreEiYaUz-kkyv4LMnb7n7AHcyh407Kxd6hFzD0zoqY + Cache-Control: + - no-cache + Content-Length: + - "654" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/bf1c5f12-be44-4aeb-b8cc-6623710870bd + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 8630849BCA3043B9B83527E1A092AE4B Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:25Z' + status: 201 Created + code: 201 + duration: 485.348676ms + - id: 13 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 149 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"name":"MyApp:Settings:DatabaseTimeout","properties":{"contentType":"text/plain","tags":{"Environment":"Production","Team":"Backend"},"value":"30"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "149" + Content-Type: + - application/json + Test-Request-Hash: + - d068f2df63a92b911c836abb192afc5c1a353ab4d3ca0f990a6bc14c7eb23e2d + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/keyValues/MyApp:Settings:DatabaseTimeout?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 583 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/keyValues","properties":{"key":"MyApp:Settings:DatabaseTimeout","label":null,"value":"30","contentType":"text/plain","eTag":"Mhq30VuQVLpGd_IM4VpQtw1IgE-zEer8mzpQ4zSCyH4","lastModified":"2025-12-01T01:19:26+00:00","locked":false,"tags":{"Environment":"Production","Team":"Backend"}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/keyValues/MyApp:Settings:DatabaseTimeout","name":"MyApp:Settings:DatabaseTimeout"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "583" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/f0f5c91f-5b29-42af-824f-3ff095de6e0e + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 6A56F7EA8FB94C57B2B87D8B0735486F Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:25Z' + status: 200 OK + code: 200 + duration: 683.910824ms + - id: 14 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 46 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"eastus2","name":"eastus2replica"}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "46" + Content-Type: + - application/json + Test-Request-Hash: + - 270788344f58e98c2ca91bffeee538ece12051f5e03ac253f553945b93b12435 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica?api-version=2024-06-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 379 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica","name":"eastus2replica","type":"Microsoft.AppConfiguration/configurationStores/replicas","location":"eastus2","properties":{"endpoint":null,"provisioningState":"Creating"},"systemData":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + Cache-Control: + - no-cache + Content-Length: + - "379" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/f2012bf7-db80-47be-9f40-2429b9a264fb + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 7BAAF28ED36F4F689C10F961C0CF9EC6 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:25Z' + status: 201 Created + code: 201 + duration: 701.46823ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/keyValues/MyApp:Settings:DatabaseTimeout?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 583 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/keyValues","properties":{"key":"MyApp:Settings:DatabaseTimeout","label":null,"value":"30","contentType":"text/plain","eTag":"Mhq30VuQVLpGd_IM4VpQtw1IgE-zEer8mzpQ4zSCyH4","lastModified":"2025-12-01T01:19:26+00:00","locked":false,"tags":{"Environment":"Production","Team":"Backend"}},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/keyValues/MyApp:Settings:DatabaseTimeout","name":"MyApp:Settings:DatabaseTimeout"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "583" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/04e77003-ac38-4f8b-a441-2d0a11733ddf + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11998" + X-Msedge-Ref: + - 'Ref A: 1D8D0F221DCE4C0D94B17819B03FF1D5 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:27Z' + status: 200 OK + code: 200 + duration: 382.277032ms + - id: 16 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487662559814&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=bIyQVsN4Zl1634rkQ3L48C1x4_x2MOCyx52W9zlMUdwiz3PjAQ-ji2-ed2Ym03pSyez7kw-I7bG4q4mj-nwCmV7LcGCA_KOhLD6tnvQRbVc9PmiSdciiZ3lTDfu8m_DknW2EhEkwmgcRkZgopJNVggNerYQp3Jxa7WsqTnDVIbiqDFjmDi5aqLsDYoZsE7mtxjhAHWRvjp2IJ79K2UtdrQkrEp0xh-6HKx5omCYej5Q6wO15bM1pPO-qKiJsjTfYfOd0L8PG9EnFPgceS8bqMocLAHEv4BjHInDHXEDyNgCp3EiZGC4pDW-dh-hGiIH-99lxtnJkscCZzbNfSNeNwA&h=rreEiYaUz-kkyv4LMnb7n7AHcyh407Kxd6hFzD0zoqY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","name":"F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487680656980&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=HmdRmkk8RqRI6n76zgQJ8movKc59TO-1-N0HDg-cTeVN-whBQSXO6wYA7ScMnyjYjObTDjq6bxCo1odPHN-IYbPnzaHKfMEz3YGp5Aiq7lnMm_r9WQn6MeOpyqm1OSgkMTVs98ATU_O7dNfnwPJyvB_VP8ProqZrJnErN-IVf2Y8Z5yqFapChm6xFDeiRdyCzMZNNt2LmrHh5sR9HXchy0Q-uIlnFM1GBbRudc5mP9H-_9qlsHhhdtFLbKBD82_dAcjJzUX_FP3jX-9NR0keAvpNUnlNsNOgZp_Wf6F396TyYCg30NOJRuk8c3oQ8a4MXdO_SEcXbZDePkSATZZXUQ&h=g1T74JyovvMf6-hTrkLwfaWOw2eZDC2zcamUBX1R0iU + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/e60c2f62-bd00-4491-9805-86be42dd986a + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 245FF6D52875486B88E35F8E00155DD0 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:27Z' + status: 200 OK + code: 200 + duration: 268.768449ms + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","name":"zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","status":"Creating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487690494338&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=q1rVzvdnCu2igq_ajhZnjci94yEjVpUsWiN8W5KTPqsQZa20UyzY26VC6h8577Jhy29JrNLrMh8LtV6CxJyu9zacTG8JdBggdDAwztpJfB7qJvpoc7x03ALLLc10O6GBGx1IY39q8VgLZDuh7jrrjk6n93c2lfvUY0cYJixXhpOGnu97JndWi2LBdzZ70T4yZ1xHfxmrLodl0Ch3vkwHEd079jQAb_9XeSZ7k78vf4WZ10rj9yFLZ2d04ukOTOZRMgdt0vnx5ncZoJSdZszEwVsZq3_IlXnZ4qfhSi-nn8ssRVW4nbIx_4KBOIyFaclD5J0YsTFQ57Y1I457JU-70Q&h=uZA0LUvVLwyKhZxYLN04XqfEl4hS5cO0p8eKCirHgeY + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/d4d9dcae-cf42-40da-b58d-fa6c64c44132 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: C03D7BC65118441B9CEE130544E40C7F Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:28Z' + status: 200 OK + code: 200 + duration: 747.384619ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487662559814&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=bIyQVsN4Zl1634rkQ3L48C1x4_x2MOCyx52W9zlMUdwiz3PjAQ-ji2-ed2Ym03pSyez7kw-I7bG4q4mj-nwCmV7LcGCA_KOhLD6tnvQRbVc9PmiSdciiZ3lTDfu8m_DknW2EhEkwmgcRkZgopJNVggNerYQp3Jxa7WsqTnDVIbiqDFjmDi5aqLsDYoZsE7mtxjhAHWRvjp2IJ79K2UtdrQkrEp0xh-6HKx5omCYej5Q6wO15bM1pPO-qKiJsjTfYfOd0L8PG9EnFPgceS8bqMocLAHEv4BjHInDHXEDyNgCp3EiZGC4pDW-dh-hGiIH-99lxtnJkscCZzbNfSNeNwA&h=rreEiYaUz-kkyv4LMnb7n7AHcyh407Kxd6hFzD0zoqY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","name":"F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487794224680&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=aQhwilUxpWQoJdHJ-QqqrGMW0PhE0sAItrnS4-IcXiZXzFMZw7zAdSJ0tsWRJWQQxW9eV-qFu7oTF4HgRAcL0wczyTJb8JyWdXbUWTtoT-q8S_TdWCphl5Iz8JFTQQtTq13eJGry1HNyfVfSZVqqCgXKwHP91WhEWg2tgqMUjF9741OVSvCVl--3XD8MCgB6E1nhIZbkqWH04eQlfERYd8r7o0Yg20Vf_q_617W1qaBXoxZ572sCLsuB5UX2zWjDp13ZLfoqppCAoNjCf1NXfn8AirnohkjQCO4JhnZNS5h1SzeeiOBBMLke39U6_2IsZ9A2amAyeYx_wFcBiy9LzQ&h=mcRtiI9j9UDfSd234wro43ek4NgUePRdUvvd34QLslA + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/b480e98e-0486-4393-958b-a89dad54eb2c + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 0CBB1089CC8540D9A02E5118CE316591 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:38Z' + status: 200 OK + code: 200 + duration: 745.747134ms + - 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.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","name":"zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487803367933&c=MIIHpTCCBo2gAwIBAgITfwY4bQpvZ-3UQ9PLGwAEBjhtCjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUxMDIyMTAxMjIwWhcNMjYwNDIwMTAxMjIwWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMaQSdCUIqvIkvEGIgMUg15jRi4qSIt3RGDa6yLcclWqaFkkCDEVcRupdPhOlRkN6_E3yo4YLLGkk1yPFnLWRhUZHwHiDKT6kkup3lKHZhP_OZZAqFdVWprwthZHF-BYk9YMe2W22XJhXoSZLgzIkUryKSJYKOZMhFTY42AV2fW-S9_x3qtEhNVPU2m0kOQY_HHAeAxwowfSBBqagAU-CoINXO6dMtUZuTPeaa-NHT0X14SZXpbVahGFznKQT-nmC16nWOWIa-GdGD373URA_OnGtouzXYDfrmibw4aa12BIoEl8JmzCPoqBQhBQb4X1GHlECJJxlk-HRf5eYK24DNUCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQeaTkfZWRjzEotwUrxyQBBqrSy8zAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBACBHvZIB_7k2R61QYN_Aqz7zXJYpgwvV2uwNITnRjGGHZL-qoWmXZ8CD-fFJ0urRW2XuO491uR4hyWb19ROtPuikBt3wUNXSb0hXgIjYGrTwyyA7D4MMxLHw_fMs4O-kHVlqm5upXlY4gagzeHI216sXEj6731olX8EQiX6GCl49vk-wfUOe-LslO9TtSFl3KxH8S4ybX_YateNmqbXKR7JVhTSM9xLuWN4rFOUof3ZSZa0_pdouneaG-JRIf6YpBzT34lCJC5EHyonADIffShMBnEWdFQXQEozjZCihAaevPUloOrnR2KyMJENBvvbU8oiXZXsnN1cSraAe54sJZYI&s=AFbMftsz8cL6qdCrGb6vFTx6vCSYz9DdNXZnkJ8Z1dPUayEpfjxB2InRqjhzX4AgFruku6k6ZWy6KMIQOru5h3Dtx8DgQtVLwtI-SSCrTVyXX11lkceMbthwDFMBdwK0GZS42tg12h1sEEOYYtNWoL4NmYi18VcDwj9Y9RWS2YjthSS8CO8fvFV5U4Tq1FDLcunSD4RGN6_J5gwibbq1p49pVuxeWSTwzUkNtMxJY9w0iitsO8uZuouNtYohqlowivXdqvFMOr9h41-WSxNBh3sjtJQnlHKdIfViI5tmfwXAy3FUFvCL2nTQ63nlaZ-i7rTtmOiF2lpFcUE9uqHa0A&h=OCgOqW17XbkL4USeRV2lQWsW7VWm-CR7w4C5Ng2ZA6k + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiacentral2/92453afd-4a29-43c0-9dc0-554bbfd66764 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 4323A44A70594794B5C4088DD9E12540 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:40Z' + status: 200 OK + code: 200 + duration: 280.061759ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487662559814&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=bIyQVsN4Zl1634rkQ3L48C1x4_x2MOCyx52W9zlMUdwiz3PjAQ-ji2-ed2Ym03pSyez7kw-I7bG4q4mj-nwCmV7LcGCA_KOhLD6tnvQRbVc9PmiSdciiZ3lTDfu8m_DknW2EhEkwmgcRkZgopJNVggNerYQp3Jxa7WsqTnDVIbiqDFjmDi5aqLsDYoZsE7mtxjhAHWRvjp2IJ79K2UtdrQkrEp0xh-6HKx5omCYej5Q6wO15bM1pPO-qKiJsjTfYfOd0L8PG9EnFPgceS8bqMocLAHEv4BjHInDHXEDyNgCp3EiZGC4pDW-dh-hGiIH-99lxtnJkscCZzbNfSNeNwA&h=rreEiYaUz-kkyv4LMnb7n7AHcyh407Kxd6hFzD0zoqY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","name":"F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487913412357&c=MIIHpTCCBo2gAwIBAgITfwY4bQpvZ-3UQ9PLGwAEBjhtCjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjUxMDIyMTAxMjIwWhcNMjYwNDIwMTAxMjIwWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMaQSdCUIqvIkvEGIgMUg15jRi4qSIt3RGDa6yLcclWqaFkkCDEVcRupdPhOlRkN6_E3yo4YLLGkk1yPFnLWRhUZHwHiDKT6kkup3lKHZhP_OZZAqFdVWprwthZHF-BYk9YMe2W22XJhXoSZLgzIkUryKSJYKOZMhFTY42AV2fW-S9_x3qtEhNVPU2m0kOQY_HHAeAxwowfSBBqagAU-CoINXO6dMtUZuTPeaa-NHT0X14SZXpbVahGFznKQT-nmC16nWOWIa-GdGD373URA_OnGtouzXYDfrmibw4aa12BIoEl8JmzCPoqBQhBQb4X1GHlECJJxlk-HRf5eYK24DNUCAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9CTDJQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAyKDQpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQkwyUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMig0KS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JMMlBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3J0MB0GA1UdDgQWBBQeaTkfZWRjzEotwUrxyQBBqrSy8zAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDIoNCkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBSuecJrXSWIEwb2BwnDl3x7l48dVTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBACBHvZIB_7k2R61QYN_Aqz7zXJYpgwvV2uwNITnRjGGHZL-qoWmXZ8CD-fFJ0urRW2XuO491uR4hyWb19ROtPuikBt3wUNXSb0hXgIjYGrTwyyA7D4MMxLHw_fMs4O-kHVlqm5upXlY4gagzeHI216sXEj6731olX8EQiX6GCl49vk-wfUOe-LslO9TtSFl3KxH8S4ybX_YateNmqbXKR7JVhTSM9xLuWN4rFOUof3ZSZa0_pdouneaG-JRIf6YpBzT34lCJC5EHyonADIffShMBnEWdFQXQEozjZCihAaevPUloOrnR2KyMJENBvvbU8oiXZXsnN1cSraAe54sJZYI&s=wuwocrwtAHUMZ5Nv_qR3reslYzQX1Vz2Uo8Vy6VmwRybs5vkajBMkZMuHXYkI1cshrv7dWka8lSLI5YDMVEcbGGZ1SwyjoXXC4MyyCU2wplH14o0D3l4b1_tuUpdu9Ly_WTst7YASrPQz5rlWw_AdBSuOOdbThrYrzN0hiytMFN8Xr9p94gtbF51cG9m6p3YiS0-mE3mXnVV8IqD7M1jLZa2s5LvZWgBoPkkLcvG7_5rK6tBL85QDn-h4THWIS-7uZ9uTwyXxxzTZnLpxCqeaUOSddoISxNrM6vCbgk6nfVtU8VXK0CSHJFnVpbtNsjfAbNoUyXwefMfFdeyn1s_Gw&h=E67SerX1rJUnLJGg1oqtB69DEL4syCokgv07cZTcVtI + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiacentral2/9fce0ee5-ee4b-49dc-9279-ee506da9febe + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: DDFDBA3626E8424EB3752FD80E975FA4 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:50Z' + status: 200 OK + code: 200 + duration: 890.828745ms + - id: 21 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","name":"zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487916196147&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=Uhn9GKSe-Um5MAm6COxjL477j-_v4Ql4XCb7FkC_C7loEx7xzkONT8bZkJViuAqrX6eckFETLnby5aopFDDz0mZbWaODn6sHrVKTEdhXztDYYQIMDuyXXXLr45OwntreuLTFjkJWF70CXdyPXhwk15vf_NW6UlXAI91pFfVmAIRnIALjgQ_9ZbBbEJcoHwjeBTYh6rbDk05oo0Usq5NlyRiENRh3u_aDqcbs5BLLMEu_c7C9NDh6N5n8E1VNzaJ8EkYRjsJIPccvDmwxyrPwK_Pot-PMXaSWayG8P-58m---6Nkjl-ygMsY9C3sYa9Rf39flLIi7erfL9upyPPa5iw&h=UiK7Kfs18l-FlcIXgc2R8JL4jb-lbsdvqXnfJvn7CCc + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/2ce621d3-8fa2-467d-9cfb-7f22e4ab2398 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 1C776C1B31914D5D8EF809435A3E5A73 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:19:50Z' + status: 200 OK + code: 200 + duration: 741.413635ms + - id: 22 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487662559814&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=bIyQVsN4Zl1634rkQ3L48C1x4_x2MOCyx52W9zlMUdwiz3PjAQ-ji2-ed2Ym03pSyez7kw-I7bG4q4mj-nwCmV7LcGCA_KOhLD6tnvQRbVc9PmiSdciiZ3lTDfu8m_DknW2EhEkwmgcRkZgopJNVggNerYQp3Jxa7WsqTnDVIbiqDFjmDi5aqLsDYoZsE7mtxjhAHWRvjp2IJ79K2UtdrQkrEp0xh-6HKx5omCYej5Q6wO15bM1pPO-qKiJsjTfYfOd0L8PG9EnFPgceS8bqMocLAHEv4BjHInDHXEDyNgCp3EiZGC4pDW-dh-hGiIH-99lxtnJkscCZzbNfSNeNwA&h=rreEiYaUz-kkyv4LMnb7n7AHcyh407Kxd6hFzD0zoqY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","name":"F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001488033213511&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=irUwbM6GTjS_v-nY2hWZTBgSRJqxwnwJOWPNmh6rRAoupWx0h2p6wqCPilhf5HvM1_ZZBAyAYRILeBBN4z18hJdbm4xmEDPrl_W8qAh3LZMLO_zhlsqyNNFQRRhims_nkL1m1qllLiQAq_hT2djzukVxmVv0tcI7yjd4Q32aR7_njAEPZQW0DGAYL_Mo49lSc0QpCMLNaR7dg6WeYLpzSZMeT1JwtB862cf2gCDQzzFgFCd4f9eIya7Kfh6TxxOuhlY4cUIZsqsQS9E_xhgSCWa0jAW93DtvieBCYZok-TF7igi-7Sp_KbxIWRx-YiW7O7bJ-LrDo2EU_ZYXfYsk3A&h=SOr5q90SXnfXZQv2FviQEEE080Dw8_IxouiUDbAuSUQ + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/b2d90eb7-f86b-4c61-a060-ca905d30ae7e + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: F2F249AC3EE7438FB2A01A4B9AE92B0E Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:02Z' + status: 200 OK + code: 200 + duration: 805.08621ms + - 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: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","name":"zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001488034606416&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=McEVxI-dz5NafqyxcxZRGB0h-pSbb81jirnXKhy1fhz119pi9La1gJUnztiQJS-Vc_j_TUPc8KJfw7OdfQl-zJtf991yqj-yZJ__w4Ri-Wb7KltPz33WRespHQdRE4dn7s4zQ0RSeUN5nDdeyLwdR_GaOIkmTTzpDMRpw2jHui5KD-DsUvNErdbE7ADKoZimu577DZSXUIOjfb0mYqy0uzBR4ZI2axx24pLtngFImF-F__DCFX_JoZBOznQG9_rnaKjeZE-ihHP616BkKrvYTl1Cl0XURxa1SQWNGRLsz-a7SkQa_h6O8gGNAAxaARXv-pHnKqY6M_hYBPwvVNq4tA&h=GL9bjpmBdlj5qnaunCQL71OiYpVCfHhwK24CS5SLugc + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/b6ae5340-b3a0-4436-96b2-bf5c43700469 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 879C60AB32B640C79BA9B9E31BAA91CD Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:02Z' + status: 200 OK + code: 200 + duration: 823.176358ms + - id: 24 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001487662559814&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=bIyQVsN4Zl1634rkQ3L48C1x4_x2MOCyx52W9zlMUdwiz3PjAQ-ji2-ed2Ym03pSyez7kw-I7bG4q4mj-nwCmV7LcGCA_KOhLD6tnvQRbVc9PmiSdciiZ3lTDfu8m_DknW2EhEkwmgcRkZgopJNVggNerYQp3Jxa7WsqTnDVIbiqDFjmDi5aqLsDYoZsE7mtxjhAHWRvjp2IJ79K2UtdrQkrEp0xh-6HKx5omCYej5Q6wO15bM1pPO-qKiJsjTfYfOd0L8PG9EnFPgceS8bqMocLAHEv4BjHInDHXEDyNgCp3EiZGC4pDW-dh-hGiIH-99lxtnJkscCZzbNfSNeNwA&h=rreEiYaUz-kkyv4LMnb7n7AHcyh407Kxd6hFzD0zoqY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","name":"F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9zbmFwc2hvdHM.F1yo9uOVPeXIZXKTjb8krWYWODrG4zASj1LW8YsrGuM?api-version=2024-06-01&t=639001488146810091&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=qD02vMrZqogU4MXDQ8kKl2FVxRyruUgPPYGpKnvAg-KxPufOdHVGePoFgolshk8wTGwdmG4I568dR9lM634Oq06YOCBnGK2GKDcyFoILnDO8ixPF-0gQDw1OrgQzxpmO59Ws_tewzAMLyyYZpR1drvDfuxED2spxKgiQKbDJkrYdkUanuVqsx6nmFfKGP8Rxyc_MhCCQb7uE9ullCld7XQg1oQlxXCwXxa-VAHCnSlHVQ6RKx2hZJX2K0wJukSDizkdMYTWMd9L3xwXZOA1KSFbv4SO41c6jrlHpZ_Q2eDDovh8CMVbPhRZpeLgzqpbYqW9kyMbgyX67aOZeFl3uuQ&h=wlsiiK-VvLzcTozxxH_27V3bzkXOv-xUyALIq7Z4FjM + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/e1d12e69-f817-46bd-947f-8d778182a01e + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: EDA4AB03D882468EA2FEF3666AAFC48E Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:14Z' + status: 200 OK + code: 200 + duration: 282.395164ms + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 262 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","name":"zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","status":"Updating","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001488154052299&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=ma_ga23UYmXh0rabthuVYGJqGBMf6O9l_5j8L7lOvrUTkd9ocOrjJt2vPxoQIbnNu0upPtXFM7hRTNVZ0Ku3UXVIudL9LLzqh-6sVpp2VCnZCV53TdvCqzFnrkcFg8reGMA-BDadfJme3uG87jiMlbCUL2L8KAxD8K3WQ-9q4IgSUDAcidMd3UyjJNHNzMaCjNQ2tHIGJDeGGRxQr0e-FZ4BTXQ2t9KTE1D0IozCckaTmwFpcY320AsnCKM76AHGmWtQbZEbKmfPPlR4Zv0h7I74FkXXMgmvs9doBeJJdMp9dGy7LQp8SC1qBgSuUp2ZakK97fEjqngZspuLFKZbfg&h=avmhirf4vmkH9EtV5Xk7GD7pi28tQ3WKp51-W2Qv9mU + Cache-Control: + - no-cache + Content-Length: + - "262" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/07d68cab-8fd3-409d-a346-e2a93d7a3ae8 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E29D5DB368494A49BDA500FD848703E3 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:14Z' + status: 200 OK + code: 200 + duration: 839.250658ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 692 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/snapshots","properties":{"provisioningState":"Succeeded","status":"Ready","filters":[{"key":"MyApp:Settings:*","label":"production"},{"key":"MyApp:Features:*","label":"production"}],"compositionType":"Key_Label","created":"2025-12-01T01:19:26+00:00","retentionPeriod":2592000,"size":1000,"itemsCount":0,"tags":{"Environment":"Production","Purpose":"Backup","Version":"v1.0.0"},"etag":"t4vjTr7fH8rbk4WU3F_5ZtGq8P_5287nnVJ7qjhKPHA"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1","name":"snapshotv1"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "692" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/d8908678-e2a4-45b6-89e5-1de5c33ef718 + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 9B01FC9631C24263B6B2AD8B12611711 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:15Z' + status: 200 OK + code: 200 + duration: 1.228363148s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 692 + uncompressed: false + body: '{"type":"Microsoft.AppConfiguration/configurationStores/snapshots","properties":{"provisioningState":"Succeeded","status":"Ready","filters":[{"key":"MyApp:Settings:*","label":"production"},{"key":"MyApp:Features:*","label":"production"}],"compositionType":"Key_Label","created":"2025-12-01T01:19:26+00:00","retentionPeriod":2592000,"size":1000,"itemsCount":0,"tags":{"Environment":"Production","Purpose":"Backup","Version":"v1.0.0"},"etag":"t4vjTr7fH8rbk4WU3F_5ZtGq8P_5287nnVJ7qjhKPHA"},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1","name":"snapshotv1"}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "692" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/1e47e76f-7144-4515-b896-812c5adea96a + X-Ms-Ratelimit-Remaining-Subscription-Global-Writes: + - "11999" + X-Msedge-Ref: + - 'Ref A: 149D7ADFFF9C45148F2491E6EFEC987E Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:17Z' + status: 200 OK + code: 200 + duration: 503.790912ms + - 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: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001487664487796&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=XU2rPI1SXlfoP9tSgcLGJ2Wm-yWQFwn0ino1qR9JIfJ_GjlrZKsUb510NtOwksKNMA2tKLoZk07GmC05g6KyUK9mwcjrpiyp7-ZfcI6HEmHm67c2H87jabLzuTR_Lz7obdA9dQls6s6URqqju9Hqklwd96UjEk4WbVQYt5OJ-kNazO80A958DRLcNaq8Ga6RgX-CAhMvVeUF4X2VJFJG8TY4oZ0d76BR9ilIR9Otybrh1xuDTO9N525k5SjY-CsW688z5tQeR69gKmAr28SqlwJ3haiXbfmmN0UvAOQ7XSjo1hTP80EgiuqHbeMC_mWxxuNZeX4Gy5MGMIY4ElkyQA&h=dQgyjlD9Kgpt1zszAMehNqb4pBAPDyTECfrWTkgq8UY + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 263 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","name":"zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c","status":"Succeeded","error":null}' + headers: + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.AppConfiguration/locations/westus2/operationsStatus/Y29uZmlndXJhdGlvblN0b3Jlcy9yZXBsaWNhcw.zw-16UZCQRyFL-bj8ZPRVmkIofDYCoZirdOmgeGgU_c?api-version=2024-06-01&t=639001488267377003&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=W8zNndKhjT7q5wqgba4kaRsRjZAbSd5JdSExOa9uFKBtpbNpXtWogt3ZWALi2T0UVA5RvfCMeSVRkdEYae1nFKDpDbm4zaAKC0r9bFLIwYrFwA7VkRPvDoSC3Gokppx58mpKggrZUCXE8nThLGAP4r4_9rA25AYfwquwqfD_l1YUihnbezc9CyIOV1F9lw4J7uQ8lLpmBeoQpcF_5oVLpRQAbdRjJb7JnicN0xK6iAEuui7VGezxFk7Qmu79ZZc07YqfJf5aLdTiPLIurPD0_G0vKSrdwUFiFVZFJ4vn6bAxUGR-dudsSsGQUTAluBuDQFUVYzXG8nejUdRViiLdaQ&h=EG-vYSqtUqPc0lzV7G67fkxitxsahVOZBCpunQVhvhQ + Cache-Control: + - no-cache + Content-Length: + - "263" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/88cfb9b6-6d96-4603-83d4-f3b7081e7d84 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 331052155A8643E8A45B5E206FA12552 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:26Z' + status: 200 OK + code: 200 + duration: 287.516916ms + - 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-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 635 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica","name":"eastus2replica","type":"Microsoft.AppConfiguration/configurationStores/replicas","location":"eastus2","properties":{"endpoint":"https://asoconfstorev2-eastus2replica.azconfig.io","provisioningState":"Succeeded"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T01:19:31+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T01:19:31+00:00"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "635" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/australiaeast/0d075d07-6722-4296-a380-9cbcdac69b0a + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: A8F72029CB234B37AEAFF5C1E8687B5C Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:27Z' + status: 200 OK + code: 200 + duration: 914.814174ms + - 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-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica?api-version=2024-06-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 635 + uncompressed: false + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica","name":"eastus2replica","type":"Microsoft.AppConfiguration/configurationStores/replicas","location":"eastus2","properties":{"endpoint":"https://asoconfstorev2-eastus2replica.azconfig.io","provisioningState":"Succeeded"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-12-01T01:19:31+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-12-01T01:19:31+00:00"}}' + headers: + Cache-Control: + - no-cache + Content-Length: + - "635" + 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-Operation-Identifier: + - tenantId=00000000-0000-0000-0000-000000000000,objectId=1ae5915d-78fe-468d-affb-c275790fa149/westus2/68ec223d-62c9-42b6-bf6f-ea4c042ad1e2 + X-Ms-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 317DFA051AB24D5D82F74E76CB688892 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:29Z' + status: 200 OK + code: 200 + duration: 258.378022ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488337933746&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ZhBI-Gu1fXmWlC9PJqkwm3HEW3fgi7koYg2OmY399Qnpzg-MrBSSdUwgCz0PnBvd_MjvHkGweIhGrwiCG1Efd7HbkAayX8SjqHVRPe9M1uHllAKmjHjMbWuVzXlzgX_D2HRqlYP8ksDSn0w-2oR1JejF7eCcOHD3gJm_XTmGsS3mwl6sKlQPYXMrjqKi1KYfU63tnAQMnfeFTeQdi4POchA5aDsP-7kb9LDs43Xil-5ZpcHMXcJuGSSZObnGJRPkpDTNWxQkydRy890mbMsn63IxoT1WuoniDWWhAQ6VRw6mHBNizoinnfOzbtgTrPgTs7rgfS7SUQoZoBAGU4Dg4A&h=Nkw2PqnCsQp-6VkvGs0fYmG0PMjn0XXyFfQixnbc3_0 + 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: E1F37A4B120B47D7A0A35E08486BD0DD Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:33Z' + status: 202 Accepted + code: 202 + duration: 469.16537ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488337933746&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ZhBI-Gu1fXmWlC9PJqkwm3HEW3fgi7koYg2OmY399Qnpzg-MrBSSdUwgCz0PnBvd_MjvHkGweIhGrwiCG1Efd7HbkAayX8SjqHVRPe9M1uHllAKmjHjMbWuVzXlzgX_D2HRqlYP8ksDSn0w-2oR1JejF7eCcOHD3gJm_XTmGsS3mwl6sKlQPYXMrjqKi1KYfU63tnAQMnfeFTeQdi4POchA5aDsP-7kb9LDs43Xil-5ZpcHMXcJuGSSZObnGJRPkpDTNWxQkydRy890mbMsn63IxoT1WuoniDWWhAQ6VRw6mHBNizoinnfOzbtgTrPgTs7rgfS7SUQoZoBAGU4Dg4A&h=Nkw2PqnCsQp-6VkvGs0fYmG0PMjn0XXyFfQixnbc3_0 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488506925133&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=PKSgLcdEA7mGb8pzHy5hkb6tE0PymmSa30UVGKJwCnMdcYyUE349BLWeP_G9-hkSMegU8FC3rsR6GrtiBolp556DRKejqoc2D3-UEFeadT1m__LZ0P3sZiL8yESO2XJPiRsod1yMvty-lciTO_zSSn5OGxhUgi5pqE1-LoKH9zvUVpk9p_rePHjGtZ5o58vr3O6Y4-aIQJius1MgLyRAraIOnSgeGHpGYtQ57e7v662lep9m2vIchc8q5j3QYIMuz1vMai7LBYPZC-pcQs9bpkNXsSgCXSTHIMjFU_RuVSS9sm4gUBS6pvsnEBTMhTDzQSWEtQpfZSQaDYDppZBPnA&h=K4VYL_Svzae7MyiPek9TO77cOM_VGrP57WGGrYXOttI + 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: 3297A7574EF045F6A9C91908FB70476F Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:20:49Z' + status: 202 Accepted + code: 202 + duration: 939.040006ms + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488337933746&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ZhBI-Gu1fXmWlC9PJqkwm3HEW3fgi7koYg2OmY399Qnpzg-MrBSSdUwgCz0PnBvd_MjvHkGweIhGrwiCG1Efd7HbkAayX8SjqHVRPe9M1uHllAKmjHjMbWuVzXlzgX_D2HRqlYP8ksDSn0w-2oR1JejF7eCcOHD3gJm_XTmGsS3mwl6sKlQPYXMrjqKi1KYfU63tnAQMnfeFTeQdi4POchA5aDsP-7kb9LDs43Xil-5ZpcHMXcJuGSSZObnGJRPkpDTNWxQkydRy890mbMsn63IxoT1WuoniDWWhAQ6VRw6mHBNizoinnfOzbtgTrPgTs7rgfS7SUQoZoBAGU4Dg4A&h=Nkw2PqnCsQp-6VkvGs0fYmG0PMjn0XXyFfQixnbc3_0 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488678600214&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=oSyfp7zNA0hCn4z8iavREbKOZ7LTp4Sw2dM8gaX20upxxb0LDwqNF13dYWbgu12-cAVDuWR6LiitXn8k4nywM1MlOWM1owmnnCNZ9HvDeqCR8qDCR_3LeoJyYmHtlAHpBcu96jV46-zLIMDDWpKvZJa5g949XDUb_7845M8T3zD39DiWzr6uNNbG62IOJ6JB22DNKyGVh0SEnQ05XUt31eJL6FZlA7tmk62iGODVa8DCYOFcS9QGRdR3sizq5bHLWWgrx6lLbM61DbL3JKiMfzt3uYkNEWDkhUkL-e4WkTauTMobCbp7_C7P0uMlrjZA3IDCFXU9WS_88sh_rMjCvQ&h=oaHkaFHkcsOhInqqKqDjPD-5n2jf-VAaH03coRDmQYo + 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: F1C2154E3A8B432B98DBD0680917DA64 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:21:06Z' + status: 202 Accepted + code: 202 + duration: 917.038597ms + - 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: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488337933746&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ZhBI-Gu1fXmWlC9PJqkwm3HEW3fgi7koYg2OmY399Qnpzg-MrBSSdUwgCz0PnBvd_MjvHkGweIhGrwiCG1Efd7HbkAayX8SjqHVRPe9M1uHllAKmjHjMbWuVzXlzgX_D2HRqlYP8ksDSn0w-2oR1JejF7eCcOHD3gJm_XTmGsS3mwl6sKlQPYXMrjqKi1KYfU63tnAQMnfeFTeQdi4POchA5aDsP-7kb9LDs43Xil-5ZpcHMXcJuGSSZObnGJRPkpDTNWxQkydRy890mbMsn63IxoT1WuoniDWWhAQ6VRw6mHBNizoinnfOzbtgTrPgTs7rgfS7SUQoZoBAGU4Dg4A&h=Nkw2PqnCsQp-6VkvGs0fYmG0PMjn0XXyFfQixnbc3_0 + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488851938392&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=IVtAe3a8-K6h8mc_do76BNM4QwNJuJmYsxSBF9uUU4BKZEnCfl3TiSj0kNiAuipsqn_JFndGgBXpHU9W4ncexZiHeA7x1MPAoGoUtTRlEeYxBXNUR9kLfzuJZ7balQbVeep8kIIfQbmjrjyV2Ztz0f8gN8vI5i5U0DVa_ndMNTS4tXhCbpNI40IBFY6VjdQGwwsNL7RF_VnjLCxfVmy7sTSn1Dlq9Ay__DaFK_HxWtacUU7Bk8eaZQjV-dlcrzFxp0ySv5Q0zI0mukhvbnmAkSnQUz2KMiT2nRNeGJMeXryZScsxQYkfkGaTldkcytA2CDh1eXCqVQYBRRoobAyt-Q&h=2QDC3BdRBVdCkm00TZyvYHx6j4US6J4umhG2juy_mY0 + 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: 3DE49F94BDED434496575819AEBD3003 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:21:24Z' + status: 202 Accepted + code: 202 + duration: 1.004812782s + - 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: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLRkZDVkYtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=639001488337933746&c=MIIHhzCCBm-gAwIBAgITfAldUuOkqyWaFWVmdAAACV1S4zANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjUxMDIxMDgxMjA1WhcNMjYwNDE5MDgxMjA1WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK6VhHo7SMnPI07xSUC0EKrS_gaAU3t2sorvXTakEJppgrr-M5q-yAFDicwNGCe2zSU9ZvGBPI46D9PesTntz4RhQO5-Dkx5G8vC9lZ0WV6mem5Hsnf78kDXgYxzLyAaMKv9WjuZNcTaFQKdrPAx-ZS-2EebUB404VhX1yJ3S4C3QHTpXASyoAbFfGV8tHPGM7q2s_Qr9qBJ5RUnI0t_oD0IJ_dyn_wQvIsgBjpGMentNk7AKNnJ7dWOCU76BFL9ZQAP9lNuU68JHjdsD1lABOX7Jtcv8FrW2zWgZn6TOHf9rY990h8zyuY_EBAr0xrbFD0i_O184Iy9gHWqScS_2CkCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBTUpdRlqz5GkJ77fs3HRMz2Z_W49DAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAGQmJdPitlGjIwFSf4WsFmLr4W3CmkUpm4HxfZATnxnP9vV2uH5f01rfg_lA-Q0s4GMqkftMAVNRm0Ta6w_NRSLRZO2GWa65KrQ8ITCuGR12jMTYPqYgqEIaBQAqqxvtTisw6-_rDdMBbWwvTo6h0yR_Rw0GGgX1C4WUYhFJq-o90nFF2qZEFQJht7ni8RYQonaxB281z64rp0rlXCz8r3rJXIR2RLC48IA1los4mZYaxAv_Y_LPYwZUQ_V0_YrSGK5KMJp6exPToKF_DePs6j27AncGilbWo9t96F-yKBPD57WulOVgbYwNKAZ_Klbw0ur-YLdTdCaIbUiNhmGTDvY&s=ZhBI-Gu1fXmWlC9PJqkwm3HEW3fgi7koYg2OmY399Qnpzg-MrBSSdUwgCz0PnBvd_MjvHkGweIhGrwiCG1Efd7HbkAayX8SjqHVRPe9M1uHllAKmjHjMbWuVzXlzgX_D2HRqlYP8ksDSn0w-2oR1JejF7eCcOHD3gJm_XTmGsS3mwl6sKlQPYXMrjqKi1KYfU63tnAQMnfeFTeQdi4POchA5aDsP-7kb9LDs43Xil-5ZpcHMXcJuGSSZObnGJRPkpDTNWxQkydRy890mbMsn63IxoT1WuoniDWWhAQ6VRw6mHBNizoinnfOzbtgTrPgTs7rgfS7SUQoZoBAGU4Dg4A&h=Nkw2PqnCsQp-6VkvGs0fYmG0PMjn0XXyFfQixnbc3_0 + 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: DCCDEF25642844A78B8D58793CBF0F1A Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:21:41Z' + status: 200 OK + code: 200 + duration: 870.63364ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/aso-sample-rg?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU086MkRTQU1QTEU6MkRSRy1XRVNUVVMyIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMyIn0?api-version=2020-06-01&t=639001489076827820&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=aSPveMuH4aQqOUn40kRaFWVQ7iSQT2dR4jAmJYUsKFbb8k12T9UjRlQy5erdtE17ph2iL954Cd0gWgNFebMpzXB5Oye1oRRzpKLtHHfUuBhfWWl-6GW9lRlKXJbKDwZsrAKAUZea19kW2lc5bvOkZBTaU3AnQJQ1z0Ahfhydtu0g2AZR8TVI_UjWfCXxBj6JPGg44DzmOoxpuL9Gs-Rzz3etN0XEtceAa-9VQqLa15tXk53qhVYpm9P1P020BK58_CKoWicfGuLrX2bVBlx8ZXu0Yy0H-6P5At2cNSQliopGABC-s3H_eeGVTtlfiGI_vxI7pTX6hC2WKnOTFqPBHA&h=vFeMURZTalbPKAZNbOmsu7YCjnl6JDCmouSSmLur98w + 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: 743902008A814A18AC49138028E30D98 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:21:45Z' + status: 202 Accepted + code: 202 + duration: 2.604761336s + - 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/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU086MkRTQU1QTEU6MkRSRy1XRVNUVVMyIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMyIn0?api-version=2020-06-01&t=639001489076827820&c=MIIIpTCCBo2gAwIBAgITFgIfhVKsWXM3Ygh08wABAh-FUjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDMwHhcNMjUxMDIyMTIwOTI4WhcNMjYwNDIwMTIwOTI4WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCV2BIPUGGkYMoxr_bXBj5ZkyyE9q_v21X4b91s6Rv-hABQloLIeEvPMezEfAUDjb9NTZKZkwxaCzGCvroQFalzludoDJWeKdIkCMThPTZNeLjNogjfwUQ8_ETvPbJbyl7VKMkEWUFUM8CxjgPVapaVaqhnIZHxNvDEtADT_w8DOUmoZdPS0kBYGfQUPKrCQ6g16eA8MGAkI3g4qhhB1FwZqDFxOeqHsXVn9POMMonuggA9RMRqS9XKeXpCZ4qE6vUN1ztSeYGxqbasmqAWodUl2rA6DaKQAWsIT5K-gFjika_lvYuyD07eweZ1YsupseAPlBF3y8H1ECvgVuqlWo0CAwEAAaOCBJIwggSOMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHaBggrBgEFBQcBAQSCAcwwggHIMGYGCCsGAQUFBzAChlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MFYGCCsGAQUFBzAChkpodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9BTTNQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDAzKDEpLmNydDBWBggrBgEFBQcwAoZKaHR0cDovL2NybDMuYW1lLmdibC9haWEvQU0zUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwMygxKS5jcnQwVgYIKwYBBQUHMAKGSmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0FNM1BLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3J0MB0GA1UdDgQWBBSB5hCasPW3N2rHKykhmCYGlK4_EzAOBgNVHQ8BAf8EBAMCBaAwggE1BgNVHR8EggEsMIIBKDCCASSgggEgoIIBHIZCaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JshjRodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDMoMSkuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwIwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBRIo61gdWpv7GDzaVXRALEyV_xs5DAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggIBADD1KiF9c0NCmTsnfBE-z4sYsAGmy3SGxldEQqU4Vw7lusvDg8VYJdpIFQEKJBaDlgrBzE-jQWZtNoZL4K42Wl_q2w1N9RDoV0kHM3_FQapzv4d9CSXp3mDMK-NcKi55fngSZ360o6Iff9CyB-03aaeQv2KhdgnlSTA8vY5Jc3mNE2-9eBMhBeCs2bF96ZvT8jrWqoVRjggsdZZE58-tRJtnuGg7ZIFJT98Prz0kprAoZyjSyTpeHdFujPqH7U37b0SPw8ORSn5qEMW0DSd926RHI25DX57Zij7cqANzb-pfOoVOayqi2KYdkWM7eqHrF__0uR2YHKjq_r9BRrKlu9W0iwfDmR3ONaib0Xp1o9bvasDkCRaEwzHg4C-VSjA7XUaZHRJt-Lcx4hB5agh4eXiseo_cX6oTZ6UOIC7ASRD1udW3rBsDEAIlca2G547on6JZl6wATxjKeKFMbOa_-AyPap-khHwj-GpLeSLgiHoStY9eGpTt640IoB7rjqJCS2Bo9y0PgilD5IXEqUjPpBDdts7ED9JDrTsw-Dz1PUGGTsFScTYZ7z21UhU5EWKrZ13h6C2FqD9EynUQo6NV20kuW7lY5plj_LGCniz5Or1HTbuob4-hDioSaoV6PVKAsJmyScJua6SuMKtRILlw752lLoL6sk95VCN02VHSAtqs&s=aSPveMuH4aQqOUn40kRaFWVQ7iSQT2dR4jAmJYUsKFbb8k12T9UjRlQy5erdtE17ph2iL954Cd0gWgNFebMpzXB5Oye1oRRzpKLtHHfUuBhfWWl-6GW9lRlKXJbKDwZsrAKAUZea19kW2lc5bvOkZBTaU3AnQJQ1z0Ahfhydtu0g2AZR8TVI_UjWfCXxBj6JPGg44DzmOoxpuL9Gs-Rzz3etN0XEtceAa-9VQqLa15tXk53qhVYpm9P1P020BK58_CKoWicfGuLrX2bVBlx8ZXu0Yy0H-6P5At2cNSQliopGABC-s3H_eeGVTtlfiGI_vxI7pTX6hC2WKnOTFqPBHA&h=vFeMURZTalbPKAZNbOmsu7YCjnl6JDCmouSSmLur98w + 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: 93F887D884BC467C9E14EBAED4BBD841 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:22:05Z' + status: 200 OK + code: 200 + duration: 876.019551ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2?api-version=2024-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-kffcvf'' 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: BF0779E1B38247B488657B7B92F8B493 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:22:10Z' + status: 404 Not Found + code: 404 + duration: 859.977123ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/snapshots/snapshotv1?api-version=2024-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-kffcvf'' 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: 34577582D94E4546BC521B663F87B71C Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:22:15Z' + status: 404 Not Found + code: 404 + duration: 184.546145ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/replicas/eastus2replica?api-version=2024-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-kffcvf'' 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: 57096C71321A426789A980DB69DBCDE6 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:22:15Z' + status: 404 Not Found + code: 404 + duration: 544.768309ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kffcvf/providers/Microsoft.AppConfiguration/configurationStores/asoconfstorev2/keyValues/MyApp:Settings:DatabaseTimeout?api-version=2024-06-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 109 + uncompressed: false + body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-kffcvf'' 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: D578BA8AD1D54110A49A89F05C237FD8 Ref B: SYD03EDGE0716 Ref C: 2025-12-01T01:22:15Z' + status: 404 Not Found + code: 404 + duration: 575.607378ms diff --git a/v2/internal/testcommon/vcr/redact.go b/v2/internal/testcommon/vcr/redact.go index fd3701767db..bf46d1f733a 100644 --- a/v2/internal/testcommon/vcr/redact.go +++ b/v2/internal/testcommon/vcr/redact.go @@ -8,6 +8,7 @@ package vcr import ( "net/http" "regexp" + "strings" "github.com/google/uuid" @@ -141,6 +142,7 @@ func (r *Redactor) HideRecordingData(s string) string { s = hideKubeConfigs(s) s = hideKeys(s) s = hideCustomKeys(s) + s = hideAppConfigurationKeySecrets(s) return s } @@ -213,3 +215,26 @@ func (r *Redactor) HideURLData(s string) string { return s } + +var appConfigKeySecretMatcher = regexp.MustCompile(`Secret=([A-Za-z0-9]+)`) + +// hideAppConfigurationKeySecrets hides App Configuration key secrets +// We can detect the secret in the connection string where it shows up as Secret=REDACTED +// but also need to replace the bare value elsewhere in the body of the string. +func hideAppConfigurationKeySecrets(s string) string { + // Get all the matches first + matches := appConfigKeySecretMatcher.FindAllStringSubmatch(s, -1) + if matches == nil { + return s + } + + // Replace each match + for _, match := range matches { + if len(match) > 1 { + secretValue := match[1] + s = strings.ReplaceAll(s, secretValue, "{KEY}") + } + } + + return s +} diff --git a/v2/internal/testcommon/vcr/redact_test.go b/v2/internal/testcommon/vcr/redact_test.go new file mode 100644 index 00000000000..a8287f6c0d2 --- /dev/null +++ b/v2/internal/testcommon/vcr/redact_test.go @@ -0,0 +1,58 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +package vcr + +import ( + "testing" + + . "github.com/onsi/gomega" + + "github.com/Azure/azure-service-operator/v2/internal/testcommon/creds" +) + +func Test_Redactor_givenInput_returnsExpectedResult(t *testing.T) { + t.Parallel() + + // TODO: Add more test cases, including ones to cover existing redactions + cases := map[string]struct { + input string + expected string + }{ + "Empty string": { + input: "", + expected: "", + }, + // + // Test cases for hideAppConfigurationKeySecrets + // + "No secrets": { + input: `{"someKey":"someValue"}`, + expected: `{"someKey":"someValue"}`, + }, + "Connection string": { + input: `"Endpoint=https://asotest-confstore-fsrajl.azconfig.io;Id=GmDj;Secret=SECRETVALUEFROMAZURE"`, + expected: `"Endpoint=https://asotest-confstore-fsrajl.azconfig.io;Id=GmDj;Secret={KEY}"`, + }, + "Configuration Key": { + input: `{"id":"GmDj","name":"Primary","value":"SECRETVALUEFROMAZURE","connectionString":"Endpoint=https://asotest-confstore-fsrajl.azconfig.io;Id=GmDj;Secret=SECRETVALUEFROMAZURE","lastModified":"2025-11-19T01:22:31+00:00","readOnly":false}`, + expected: `{"id":"GmDj","name":"Primary","value":"{KEY}","connectionString":"Endpoint=https://asotest-confstore-fsrajl.azconfig.io;Id=GmDj;Secret={KEY}","lastModified":"2025-11-19T01:22:31+00:00","readOnly":false}`, + }, + } + + ids := creds.AzureIDs{} + redactor := NewRedactor(ids) + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + t.Parallel() + g := NewGomegaWithT(t) + + actual := redactor.HideRecordingData(c.input) + + g.Expect(actual).To(Equal(c.expected)) + }) + } +} diff --git a/v2/samples/appconfiguration/v20240601/v20240601_configurationstore.yaml b/v2/samples/appconfiguration/v20240601/v20240601_configurationstore.yaml new file mode 100644 index 00000000000..801d189dab1 --- /dev/null +++ b/v2/samples/appconfiguration/v20240601/v20240601_configurationstore.yaml @@ -0,0 +1,21 @@ +apiVersion: appconfiguration.azure.com/v20240601 +kind: ConfigurationStore +metadata: + name: aso-sample-confstore-v2 + namespace: default +spec: + azureName: "asoconfstorev2" + location: westus2 + owner: + name: aso-sample-rg + publicNetworkAccess: Enabled + sku: + name: standard + createMode: Default + disableLocalAuth: false + enablePurgeProtection: false + operatorSpec: + secrets: + primaryConnectionString: + name: confstore-secrets + key: primaryConnectionString diff --git a/v2/samples/appconfiguration/v20240601/v20240601_keyvalue.yaml b/v2/samples/appconfiguration/v20240601/v20240601_keyvalue.yaml new file mode 100644 index 00000000000..540191e9a7c --- /dev/null +++ b/v2/samples/appconfiguration/v20240601/v20240601_keyvalue.yaml @@ -0,0 +1,14 @@ +apiVersion: appconfiguration.azure.com/v20240601 +kind: KeyValue +metadata: + name: aso-sample-keyvalue + namespace: default +spec: + azureName: "MyApp:Settings:DatabaseTimeout" + owner: + name: aso-sample-confstore-v2 + contentType: "text/plain" + value: "30" + tags: + Environment: "Production" + Team: "Backend" diff --git a/v2/samples/appconfiguration/v20240601/v20240601_replica.yaml b/v2/samples/appconfiguration/v20240601/v20240601_replica.yaml new file mode 100644 index 00000000000..1d291406a22 --- /dev/null +++ b/v2/samples/appconfiguration/v20240601/v20240601_replica.yaml @@ -0,0 +1,10 @@ +apiVersion: appconfiguration.azure.com/v20240601 +kind: Replica +metadata: + name: aso-sample-replica + namespace: default +spec: + azureName: eastus2replica + owner: + name: aso-sample-confstore-v2 + location: eastus2 diff --git a/v2/samples/appconfiguration/v20240601/v20240601_snapshot.yaml b/v2/samples/appconfiguration/v20240601/v20240601_snapshot.yaml new file mode 100644 index 00000000000..f7ad4298d12 --- /dev/null +++ b/v2/samples/appconfiguration/v20240601/v20240601_snapshot.yaml @@ -0,0 +1,20 @@ +apiVersion: appconfiguration.azure.com/v20240601 +kind: Snapshot +metadata: + name: aso-sample-snapshot + namespace: default +spec: + azureName: "snapshotv1" + owner: + name: aso-sample-confstore-v2 + compositionType: Key_Label + filters: + - key: "MyApp:Settings:*" + label: "production" + - key: "MyApp:Features:*" + label: "production" + retentionPeriod: 2592000 # 30 days in seconds + tags: + Environment: "Production" + Version: "v1.0.0" + Purpose: "Backup"